【问题标题】:Programmatically generate high quality PDFs以编程方式生成高质量的 PDF
【发布时间】:2009-10-12 12:47:01
【问题描述】:

注意:我意识到这个问题已经在这里被问过(带有红宝石倾斜):Creating on-demand, print-quality PDFs (preferably in Ruby if feasible)。但是恕我直言,没有像样的答案。

正如您可能已经猜到的那样,我正在寻找以编程方式生成高质量、可打印的 PDF 文档的最佳方法。我们的要求需要我们能够拥有为动态内容(如图像和文本)定义占位符的设计文档,即某种模板机制。

建议使用 Adob​​e 的 InDesign 服务器,但这似乎是一个昂贵的解决方案,更不用说对我们的需要有点矫枉过正了。

是否有任何替代的、更便宜和更合适的解决方案?解决方案的语言并不重要,只要它可以在 Windows 机器上执行即可。

【问题讨论】:

标签: language-agnostic pdf-generation


【解决方案1】:

您可以使用Prince. 将 XML 模板 转换为 PDF

Prince 是一个计算机程序 将 XML 和 HTML 转换为 PDF 文件。 Prince 可以阅读很多 XML 格式,包括 XHTML 和 SVG。 Prince根据以下格式格式化文档 用 CSS 编写的样式表。

【讨论】:

  • 此产品可以打印质量 PDF 吗?
  • 它会生成 PDF 文件,但我认为它不支持打印。一种可能的解决方案是生成一个 postscript 文件并打印该文件。您可以在短时间内下载并查看。
  • 根据他们的文档:princexml.com/doc/7.0/pdf-output postscript 输出已被禁用。
【解决方案2】:

我的建议是查看 XSL-FO 或类似的...

您创建一个 XML 文档来描述您想要的内容,并且有各种库和工具包(我使用 RenderX 的 XEP)将所述 XML 转换为 PDF。

我们实际上所做的是获取大量 XML 格式的数据,使用 XSLT(实际上是模板)将数据转换为 XEP 呈现的格式化对象(500带有自动生成的 TOC 和索引的页面酒店目录)已被至少三个不同的商业印刷商非常愉快地使用。我们也时常做一些其他较小的文档。

这样做的缺点是它甚至不是一个所见即所得的解决方案——您实际上是在编译“源代码”以将 PDF 放在后面。好处是基础技术相当通用,即使特定工具包可能不那么通用。

【讨论】:

  • +1 - XSL-FO 是一个不错的选择,学习起来并不简单,而且现在有一个 .NET 版本。
  • 是的,不是微不足道的...回报是你拥有大量的控制权。
  • XEP Server 似乎也是一个昂贵的选择,我很惊讶没有开源可以做到这一点。我是不是有点小气了?
  • 当我评论时应该注意(-:Apache 有一个项目:xmlgraphics.apache.org/fop - 但是我在 7 年前选择了 XEP,当时 apache 项目存在特定问题(迷失在时间的深处)重写(我认为他们现在已经完成了)是为了解决。有点取决于你对昂贵的定义 - 这里可能存在成本限制需求的鸡和蛋问题。
【解决方案3】:

我认识很多人,他们在 ReportLab 开源 Python PDF 库 (http://www.reportlab.org/rl_toolkit.html) 上取得了巨大成功。

它非常易于使用且上手速度非常快。所以值得一试。

【讨论】:

    【解决方案4】:

    Java 语言和JasperReports

    【讨论】:

    • JasperReports 不是 BI 工具吗?
    • 其实我也不知道是不是一个BI工具。也许是,但谁给了大坝。它完全涵盖了问题中描述的需求
    • 我有点困惑怎么办?我需要生成一个高分辨率 PDF,用于在目录类型文档中显示产品项目。即使 JasperReports 输出 PDF 也不会是图表之类的东西吗?
    • 其实可以的。图表和照片可以使用标准或第 3 方库在 Java 中创建并导出为图像。 JasperReports 然后将这些图像放入在 iReport 设计工具中创建的预定义布局中。此外,可以将设计拆分为模块,即子报告并使其可配置。它是一个强大的工具,可以在更高的抽象层次上进行工作。
    【解决方案5】:

    Java:iText

    C#:iTextSharp

    【讨论】:

    • 这些很有趣 - 我坚持我对具体问题的回答,但这些都是我“归档”在我的个人工具箱中使用的东西!
    【解决方案6】:

    取决于您要发布的内容,但请查看 Pentaho 报告 http://reporting.pentaho.org/

    【讨论】:

      【解决方案7】:

      rinohtype 是一个开源文档处理器,能够生成高质量的可打印 PDF 文档。您可以使用一种内置的文档模板(书籍、文章)或定义您自己的模板。文档元素的外观可以通过类似 CSS 的 样式表 进行配置。可以从 reStructuredTextCommonMark 文件中解析文档的内容,或者您​​可以通过编程方式构建文档树。

      完全披露:我是 rinohtype 的作者。

      【讨论】:

        猜你喜欢
        • 2010-10-05
        • 1970-01-01
        • 1970-01-01
        • 2020-07-11
        • 2011-05-20
        • 2012-09-30
        • 2011-04-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多