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

Most used approach to generate a PDF report (JavaScript, node.js)?

本文关键字:JavaScript node js 报告 常用 PDF 方法      更新时间:2023-09-26

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

我研究的方法是:

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

  2. 在客户端生成PDF。问题:最流行的库似乎是jsPDF,但它不太能够生成外观复杂的文档。

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

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

任何类似任务的经验都将不胜感激!

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

  1. 在服务器端动态构建适当的HTML文档和CSS
  2. 使用phantomJS呈现该文档
  3. 告诉phantomJS将该文档转换为PDF,保存在临时文件中
  4. 通过将临时PDF文件写入响应主体,将PDF作为HTTP响应发送回
  5. 删除临时文件

如果你在内容类型、内容处理等方面遇到困难,如果你在磁盘上有一个有效的pdf文件,只需将数据写入HTTP响应,你就不必担心了。使用正确的标题,您应该能够要求浏览器显示PDF或将其视为要保存为下载的文件。

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

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

你可以玩这些例子,看看你有什么选择https://playground.jsreport.net

当你完成游戏后,你可以在线使用jsreport,或者下载并安装jsreport服务器到你的公司。然后您就可以调用它的RESTneneneba API并生成报告了。

更多关于你的问题

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

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