最常用的生成 PDF 报告的方法(JavaScript、node.js)?

Posted

技术标签:

【中文标题】最常用的生成 PDF 报告的方法(JavaScript、node.js)?【英文标题】:Most used approach to generate a PDF report (JavaScript, node.js)? 【发布时间】:2013-06-24 05:27:46 【问题描述】:

任何从事此类工作的人都可以描述一般过程吗?我现在很困惑。我所说的报告是指具有徽标、表格、页眉和页脚的具有视觉吸引力的文档,并且数据将被动态检索。

我研究的方法是:

    使用生成 PDF 的服务器端库(node.js 模块)。使用Content-Type: application/pdf 发送字符串表示作为响应。 问题:我选择了 PDFKit,但它不起作用并且根本没有显示任何内容。它使用旧的 PDF 1.3。

    在客户端生成 PDF。 问题:最流行的库似乎是 jsPDF,但它不是很能生成看起来复杂的文档。

    在PDF源代码中编写模板并在服务器端填写数据。 问题:编码很奇怪,例如,如果我只是做doc.text("1"),就会出现很多无法识别的字符,只是字符串“1”。我对此感到非常困惑。

最后,如果有人提供可以帮助我理解编码的链接,那将非常有帮助!这让我非常困惑。

非常感谢任何类似任务的经验!

【问题讨论】:

另见javascript PDF generator library。 @DanDascalescu 链接的帖子已被删除 @jawath:这个问题被 SO mods 作为“离题”删除,因为仅仅关闭它是不够的。请直接向mureinik等版主投诉。 【参考方案1】:

我不确定最常用的方法是什么,但我个人喜欢创建一个 html 模板,将其填充到我的服务器端代码中,然后使用 wkhtmltopdf 将 HTML 转换为 PDF。如果您使用的是 .NET,则应查看 WkHtmlToXSharp(这是 wkhtmltopdf 的 .NET 包装器。)

【讨论】:

【参考方案2】:

我没有亲自做过,但我会尝试的第一件事是:

    在服务器端动态构建相应的 HTML 文档和 CSS 使用phantomJS 呈现该文档 告诉 phantomJS 将该文档转换为 PDF,保存在一个临时文件中 通过将临时 PDF 文件写入响应正文,将 PDF 作为 HTTP 响应发回 删除临时文件

如果您正在为内容类型、内容处置等问题而苦苦挣扎,如果您在磁盘上有一个有效的 pdf 文件并将该数据写入 HTTP 响应,则不必担心这一点。使用正确的标题,您应该能够要求浏览器显示 PDF 或将其视为要保存为下载的文件。

【讨论】:

1gb RAM 的 1000 个 html 页面需要多少钱?【参考方案3】:

作为jsreport团队的一员,我会试一试。

jsreport平台提供了多种生成pdf报告的方式。最常见的一种是使用无头 chrome 将 html 转换为 pdf。 jsreport 还将编译和渲染把手或 jsrender html 模板(如果指定),它可以嵌入图像、添加页眉/页脚、运行自定义 JavaScript 等等。

您可以使用示例并查看您拥有的选项 https://playground.jsreport.net

玩完后,你可以使用jsreport online 或download and install jsreport 服务器到你的公司。然后您就可以调用它的REST API 并生成报告了。

更多问题

jsreport 将在 pdf 或 html 的响应中提供正确的内容类型。你可以让浏览器显示结果 数据可以发送到jsreport api或通过自定义脚本检索

【讨论】:

jsreport 是一个很棒的工具,但遗憾的是文档很少。我想知道,为什么没有提供如何与 curl 或其他网站一起使用它的示例。特别是我正在尝试部署 jsreport 以在后台运行,从我的基于 nodejs 的应用程序访问它并向用户提供 pdf。 您能详细说明一下 API 吗?我似乎不明白如何使用 API 来呈现在编辑器中生成的报告,以及如何为 JSON 数据导入外部 API。 也只支持NodeJS v16或更高版本

以上是关于最常用的生成 PDF 报告的方法(JavaScript、node.js)?的主要内容,如果未能解决你的问题,请参考以下文章

生成 Reporting Services 2005 PDF 报告并将其存储在磁盘上

Python生成图文并茂的PDF报告

Python生成图文并茂的PDF报告

报告生成器/s-s-rS 中 pdf 问题中空白页的特殊情况 (!)

生成 PDF 报告的 VBA 代码

python使用fpdf生成数据报告pdf文件