22

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

我看过的方法是:

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

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

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

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

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

4

3 回答 3

18

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

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

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

于 2013-06-26T21:43:00.373 回答
12

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

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

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

玩完后,您可以在线使用jsreport下载安装jsreport服务器到您的公司。然后您就可以调用它的REST API并生成报告了。

更多关于你的问题

  • jsreport 将在 pdf 或 html 的响应中提供正确的内容类型。你可以让浏览器显示结果
  • 数据可以发送到 jsreport api 或通过自定义脚本检索
于 2014-03-16T13:40:28.467 回答
4

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

于 2013-06-26T21:39:03.170 回答