javascript - 使用 nodeJS 或 Javascript 将 HTML + CSS 转换为 PDF?

标签 javascript html css node.js pdf

我有一个问题。我尝试了一些将 html 转换为 PDF 的库,但它们不导入 CSS,因此我的 PDF 无效。

我试过“html2pdf”、“pdfmake”、“jspdf”..

PDFMake 对我没有帮助,因为它需要生成带有 HTML 数据的 JSON...

我想转换为 PDF 的文件结构是:

  • html:www/templates/phase_one_report.html
  • css:www/css/phase_one_report.css

一些想法?我在后端使用 nodeJS 和 sailsJS,在前端使用 javascript 和 ionic。

对不起我的英语。

最佳答案

这是一个难题。我还发现,现有的 HTML 到 PDF 库通常无法处理我扔给它们的 HTML 和 CSS。

我找到的最佳解决方案根本不是 Javascript:wkhtmltopdf .这本质上是一个包装 webkit 渲染引擎的程序,这样你就可以给它任何 webkit 可以渲染的 HTML + CSS,它会返回一个 PDF 文档。它做得非常出色,因为它实际上就像浏览器一样呈现文档。

你提到你正在使用 node.js,但不清楚你的环境到底是什么,所以我假设你的报告可以通过 http 这样的 URL 获得://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 .

关于javascript - 使用 nodeJS 或 Javascript 将 HTML + CSS 转换为 PDF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41168428/

相关文章:

javascript - 如何将当前变量从 php Blade foreach 传递到 javascript?

javascript - 在使用 Ajax 时,我仍然无法使我的回调正常工作。它似乎没有在等待回调,我做错了什么?

html - CSS 表类正在影响类外的所有表

html - 如何制作一个完整的 HTML 表单 "readonly"?

javascript - 如何使 bootstrap popover 与固定按钮一起移动

javascript - 将具有 className 的元素添加到具有 idName 的其他元素

javascript - mixpanel 在 2011 年三星智能电视中无法工作,但在 2013 年工作正常

javascript - 在 quickflip 期间暂时禁用链接

jquery - 使用 jQuery append 列表与站点的其余部分冲突

ruby-on-rails - 是否有 Ruby on Rails 布局/CSS 存档?