我有问题。我尝试了一些将html转换为PDF的库,但是他们没有导入CSS,因此我的PDF无效。
我试过" html2pdf" ," pdfmake"," jspdf" ..
PDFMake对我没有帮助,因为它需要生成带有HTML数据的JSON ......
我想要转换为PDF的文件结构是:
一些想法?我在后端使用nodeJS和sailsJS,在前端使用离子javascript。
对不起我的英语。
答案 0 :(得分:1)
现在有很多选择:
编辑09/2018:使用puppeteer,JS Headless Chrome驱动程序。 Firefox现在也有无头模式,但我不确定哪个库对应于puppeteer。
如前所述,wkhtmltopdf可以胜任这项工作,但有点过时了。你必须观看最新的chrome版本,这些版本将有一个--headless选项来启用html + css + js到pdf的转换。
然后是PhantomJS和Slimer.js。两者都可以与节点和Javascript一起使用。 Nightmare.js也是一个选项,但它位于它之上。
但是,Phantom.js是目前唯一真正无头和基于javascript的解决方案。 Slimer.JS适用于Firefox,但要求你有一个窗口管理器,至少xvfb,一个虚拟帧缓冲区。
如果你想要最新的浏览器功能,你必须使用slimer.js,或者另一种选择,选择一种不断出现的基于电子的解决方案。 Electron基于Chrome,也可以编写脚本。目前还提供了Docker容器附带的精细解决方案https://github.com/msokk/electron-render-service
此列表可能不完整,并且在不久的将来会发生很大变化。
答案 1 :(得分:0)
这是一个难题。我还发现现有的HTML到PDF库通常不会处理HTML&我扔给他们的CSS。
我找到的最佳解决方案根本不是Javascript:wkhtmltopdf。这本质上是一个包装webkit呈现引擎的程序,以便您可以为其提供webkit可以呈现的任何HTML + CSS,并且它将返回PDF文档。它做得非常出色,因为它实际上就像浏览器一样呈现文档。
您提到您正在使用node.js
,但它并不清楚您的环境究竟是什么,因此我假设您的报告可在{{{ {1}}。最简单的方法是在服务器上安装http://my.domain/phase_one_report.html
应用程序,然后使用wkhtmltopdf
执行它。
例如:
child_process.exec
import { exec } from 'child_process';
// generate the report
// execute the wkhtmltopdf command
exec(
'wkhtmltopdf http://my.domain/phase_one_report.html output_file.pdf',
(error) => {
// send the PDF file to the client
}
);
有许多不同的命令行选项 - 您需要查看配置它的所有不同方法。
如果您的报告在网址上不可访问,那么这会变得有点复杂 - 您需要内联CSS并立即将所有内容发送到wkhtmltopdf
。