javascript - html-docx-js 包产生不可读的内容
问题描述
最近有没有人能让 html-docx-js 工作?
我试过这个:
var newHTML =
"<!DOCTYPE html><html><head lang='en'><meta charset='UTF-8'><title>Report</title></head><body>" +
htmlPreview +
"</body></html>"
const newBlob = htmldocx.asBlob(newHTML)
saveAs(newBlob, "example2.docx")
其中 htmlPreview 只是一个有效的 HTML 字符串。
但是,当我尝试在 Word 中打开 example2.docx 时,出现此错误:
“Word 发现不可读的内容”
当我在基本文本编辑器中打开 example2.docx 时,我得到的是:
PK
yQ _rels/PK
yQ word/PK
yQ"?!à word/document.xml<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<w:document
xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"
xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math"
xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing"
xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"
xmlns:ns6="http://schemas.openxmlformats.org/schemaLibrary/2006/main"
xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart"
xmlns:ns8="http://schemas.openxmlformats.org/drawingml/2006/chartDrawing"
xmlns:dgm="http://schemas.openxmlformats.org/drawingml/2006/diagram"
xmlns:pic="http://schemas.openxmlformats.org/drawingml/2006/picture"
xmlns:ns11="http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing"
xmlns:dsp="http://schemas.microsoft.com/office/drawing/2008/diagram"
xmlns:ns13="urn:schemas-microsoft-com:office:excel"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:w10="urn:schemas-microsoft-com:office:word"
xmlns:ns17="urn:schemas-microsoft-com:office:powerpoint"
xmlns:odx="http://opendope.org/xpaths"
xmlns:odc="http://opendope.org/conditions"
xmlns:odq="http://opendope.org/questions"
xmlns:odi="http://opendope.org/components"
xmlns:odgm="http://opendope.org/SmartArt/DataHierarchy"
xmlns:ns24="http://schemas.openxmlformats.org/officeDocument/2006/bibliography"
xmlns:ns25="http://schemas.openxmlformats.org/drawingml/2006/compatibility"
xmlns:ns26="http://schemas.openxmlformats.org/drawingml/2006/lockedCanvas">
<w:body>
<w:altChunk r:id="htmlChunk" />
<w:sectPr>
<w:pgSz w:w="12240" w:h="15840" w:orient="portrait" />
<w:pgMar w:top="1440"
w:right="1440"
w:bottom="1440"
w:left="1440"
w:header="720"
w:footer="720"
w:gutter="0"/>
</w:sectPr>
</w:body>
</w:document>
PK
yQ½`'N 'N word/afchunk.mhtMIME-Version: 1.0
Content-Type: multipart/related;
type="text/html";
boundary="----=mhtDocumentPart"
------=mhtDocumentPart
Content-Type: text/html;
charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Location: file:///C:/fake/document.html
其次是我的输入字符串。
解决方案
html-docx-js 使用“altChunk”标记在 Docx 文件中嵌入原始 HTML 文档。
不幸的是,MacOS 或 Google Drive 不支持此功能,这就是您看到的是空白文档的原因。在 Windows 上的 Word 中打开它(甚至在 Office365 上在线),它就可以工作了。
推荐阅读
- sql - 从资源池中预留的sql和表设计
- javascript - require() 不适用于变量 - 反应原生
- php - 我的回声正在破坏我的 div 容器/行
- kotlin - 为什么在测试期间未处理我的 Micronaut 控制器 bean
- pickle - RuntimeError:锁对象只能通过继承在进程之间共享
- angular - Angular-SlickGrid 页脚未正确显示
- php - 在没有 $request 的情况下执行 Laravel 验证
- python - Python program to ask users for data multiple times and store each entry in a list
- javascript - undefined 不是 this.state 对象上的对象
- javascript - 如何在 JQuery 中只触发一次“就绪”?