最常用的生成 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 报告并将其存储在磁盘上