【问题标题】:Generate PDF from Template using Javascript使用 Javascript 从模板生成 PDF
【发布时间】:2015-05-13 10:41:15
【问题描述】:

情况如下: 我们有一个网站,它生成(大)合同 JSON,我们现在想使用前端导出为 pdf,所以 javascript。 目前,我使用 pdfmake,但我发现很难让每个合同的布局都保持不变。 我希望有某种模板,我可以用 JSON 中的值填充。

目前我能想到的最好的办法是用 LaTex 编写一个 pdf 模板,并用一些模板框架填充它,然后用 LaTex 编译器编译它。 但是我希望你能告诉我一些更简单的事情。 唯一重要的是,一键从 JSON 到 pdf。

【问题讨论】:

  • 到目前为止,我提出的“我能想到的最好的”没有奏效,因为我希望我可以避免强迫我们的客户使用 LaTeX Compiler javascript 库来编译 java。但是,似乎只有一个:texlive.js,它似乎无法离线工作(我想要的,很遗憾)。所以我会继续使用pdfmake。期待想法让这个更简单(或至少更具可读性)
  • 您是否考虑过使用 jsPDF.js 等客户端 JavaScript 库来生成整个 PDF 客户端?
  • 我做了,但我使用了 pdfmake 而不是 jsPDF,因为我读过几次它可以更好地格式化。

标签: javascript json pdf generator


【解决方案1】:

我已经针对类似情况进行了一些研究。以下是我入围的三个选项:

  1. HTML-PDF(nodejs 模块)
  2. WKTHMLTOPDF
  3. PhantomJS(甚至前两个选项都使用 phantomjs)
  4. jsPDF - 可以在客户端使用

【讨论】:

  • 当情况再次出现时,我会尝试这些选项,谢谢 :) 就像我说的,我最终使用了 pdfmake。我发现有时很难正确格式化,但它确实有效。
  • 我还发现了 texlive.js,它看起来像我最初想拥有的只有客户端的 LaTeX 编译器。
【解决方案2】:

我最终使用了 pdfmake。 首先我理解错了,这是我无法编辑pdf的原因。 现在我知道了,您可以通过使用大量的列来很好地布局您的文档。

我尝试读取一个 .tex 文件并使用 FreeMarker 填充它。 这工作得很好,但是没有在线 LaTeX 编译器,我不得不强迫客户在本地编译我不想要的 .tex 文件。

但是,如果您在本地有一个 LaTeX 编译器,这应该可以工作。

【讨论】:

  • 您是如何获得 pdfmake 来编辑 pdf 的?我已经把它扔到一边了,因为文档甚至没有提到加载 pdf。我们需要一些东西可以用模板中的用户数据进行一些替换,然后将其保存到一个新文件中。
  • 对不起,我可能用错了词。当我说“编辑”时,我的意思是“影响要生成的 pdf id 的外观”。
  • 我不加载 pdf 并更改它。我只从原始数据中生成一个。
【解决方案3】:

在让这个解决方案运行一段时间后,我想补充一点,在这种情况下,之后更改文档(例如添加一个表格)非常困难。 如果我必须再做一次,我可能会尝试将 pdf 的构建块实现为带有占位符的乳胶模板。就像 Angular 中的指令一样。 在文档构建过程中,我将逐个模板浏览,使用从后端收到的数据生成 Latex-Blocks(如表格),然后使用 FreeMarker 将生成的数据填充到模板中,然后将模板放入一个完整的乳胶文件,将整个 pdf 保存在乳胶中。 使用像 texlive 这样的 js-Latex 编译器,我应该能够从这个文件生成 pdf。

所有这些都是理论上的,可能比我做的工作更多,但我更喜欢这个解决方案,因为它更清洁且更易于维护。 从我的错误中吸取教训:-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-11
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 2012-01-08
    • 2015-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多