[英]Convert HTML + CSS to PDF with nodeJS or Javascript?
我有个问题。 我尝试了一些将html转换为PDF的库,但是它们不导入CSS,因此我的PDF无效。
我尝试使用“ html2pdf”,“ pdfmake”,“ jspdf”。
PDFMake对我没有帮助,因为它需要使用HTML数据生成JSON。
我想转换为PDF的文件结构为:
有什么想法吗? 我在后端使用sailsJS的nodeJS,在前端使用ionic的javascript。
对不起,我的英语。
这是一个难题。 我还发现,现有的HTML到PDF库通常无法处理我扔给它们的HTML和CSS。
我发现的最佳解决方案根本不是Javascript: wkhtmltopdf 。 本质上,这是一个包装webkit呈现引擎的程序,因此您可以为它提供webkit可以呈现的任何HTML + CSS,它将返回PDF文档。 它的工作非常出色,因为它实际上就像浏览器一样呈现文档。
您提到您正在使用node.js
,但是尚不清楚您的环境是什么,因此我假设您的报告可通过http://my.domain/phase_one_report.html
类的URL 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
}
);
wkhtmltopdf
有很多不同的命令行选项-您需要研究所有不同的配置方式。
如果您的报告无法通过URL访问,则情况会变得更加复杂-您需要内联CSS并将所有内容立即发送到wkhtmltopdf
。
现在有许多可用的选项:
编辑09/2018:使用puppeteer,即JS Headless Chrome驱动程序。 Firefox现在也具有无头模式,但是我不确定哪个库对应于puppeteer。
如前所述的wkhtmltopdf可以完成这项工作,但有些过时了。
您将必须观看最新的chrome版本,其中包含--headless选项,以启用html + css + js到pdf的转换。
然后是PhantomJS和Slimer.js。 两者都可以与node和Javascript一起使用。 Nightmare.js也是一个选项,但位于其上方。
但是,Phantom.js是当前唯一真正无头且基于javascript的解决方案。 Slimer.JS可与Firefox一起使用,但要求您具有窗口管理器,至少xvfb是虚拟框架缓冲区。
如果您想要最新的浏览器功能,则必须使用slimer.js,或者使用另一个基于Electron的解决方案,该方案会不断弹出。 Electron基于Chrome,并且也可以编写脚本。 目前还随Docker容器一起提供的一种很好的解决方案是https://github.com/msokk/electron-render-service
该列表可能不完整,并且在不久的将来会发生很大变化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.