【问题标题】:How to generate pdf from docx - NodeJS + TypeScript如何从 docx 生成 pdf - NodeJS + TypeScript
【发布时间】:2021-10-30 04:47:43
【问题描述】:
我正在尝试从之前在 NodeJS 中生成的 DOCX 文件生成 PDF。我正在使用 NestJS 和 TypeScript。
我尝试了很多方法,但都失败了:
-
@nativedocuments/docx-wasm:NativeDocuments 不再工作了。
-
word2pdf:在 github 存档,在 npm 不可用。
-
docx-pdf:生成无样式的 pdf。它删除了我的表格,缩进,
对齐文本等。
-
libreoffice-convert:引发窗口错误:
应用程序无法启动。配置文件“C:/Program
Files/LibreOffice/program/bootstrap.ini" 已损坏(但 LibreOffice 软件运行正常)。
您知道我在使用前面提到的 docx 到 pdf 替代品时遇到的问题的一些解决方法吗?或者我可以使用其他一些替代方法(请免费)?
提前谢谢你!
【问题讨论】:
标签:
javascript
node.js
typescript
pdf-generation
nestjs
【解决方案1】:
我所知道的最好的是使用 Libreoffice。你真的不需要一个包装库。
你可以直接使用exec执行libreoffice:
const { exec } = require("child_process");
exec("libreoffice --headless file.xyz", (error, stdout, stderr) => {
if (error) {
console.log(`error: ${error.message}`);
return;
}
if (stderr) {
console.log(`stderr: ${stderr}`);
return;
}
console.log(`stdout: ${stdout}`);
});
您需要先将 DOCX 写入磁盘上某个位置的文件,Libreoffice 可以在该文件中打开它,生成的 PDF 也会写入磁盘 - 然后您可以使用 fs 将其加载到 Node 中.
【解决方案2】:
我已经成功使用Puppeteer 从 HTML 文档呈现 PDF。如果您可以设法将 DOCX 文件转换为 HTML,这可能是一个可行的选择。看起来有 options 可以这样做,但我不能为他们担保。