42

对此有一些疑问,但不是最近,而且从那时起技术一定会向前发展。

要求:

  • 基于预定义模板生成 pdf 文档(我可以使用 pdf 表单或 xsl-fo)
  • 能够填充文本数据
  • 能够填充图形数据(生成的条形码)
  • 无需修补(重新编译)即可在生产环境中更改 pdf 模板
  • 生成要保存在数据库中(作为 blob)和/或打印的 pdf 文件
  • 开源/免费

假定的选项是 iText、PDFBox、FOP 还是其他?基于上述要求的建议是什么?

4

7 回答 7

31
  1. 文字; 现在 iText 是一个商业图书馆,最新版本不再免费(旧版本的一个分支仍然在 MIT 许可下:OpenPDF
  2. FOP;我在 FOP 上做了很多工作。它相当耗费资源(Java > XML > XSLT > PDF)并且复杂的 PDF 成为一场噩梦(可能导致 XSLT 具有 20k+ LoC)
  3. PDF盒子;尽管我没有在大型项目中使用它,但它似乎是最好的选择
  4. 还没有检查飞碟

最后,我想试试 PDFBox。根据您的条码要求,您可能需要将条码(字体)内嵌到 PDF 中或将字体分发给您的客户 - 处理这些问题。

于 2011-07-08T14:33:43.253 回答
6

我已经使用基于 iText的 Flying Saucer http://code.google.com/p/flying-saucer/完成了一个项目。它是免费的,易于使用,对 CSS 有很好的支持,并且有很好的开源。

于 2011-07-08T14:27:18.990 回答
6

我认为 iText 和 Apahce FOp 都可以满足您的标准,但在这里您还有一些额外的标准:

  • 许可:FOP 基于 Apache 许可,因此“友好”也可用于商业用途
  • 灵活性:像 iText 这样的低级 API 比高级 FOP 更灵活
  • 可视化工具:这里有一位 FOP 设计师
  • 编程模型:iText 基于编程 API,而 FOP 需要 XSLFO 模板,编程较少。
  • 专有与标准。Apache FOP 基于标准,因此独立于供应商,而 iText 是专有 API
  • 性能:据说 FOP 的计算密集度更高。这当然取决于您的目标 PDF 文件是什么。使用 FOP 对我来说从来都不是问题。

我不会使用 PDFBox,它非常适合阅读和修改现有的 PDF 文件,但使用 PDFBox 从头开始​​创建文件可能需要做很多工作。

于 2011-12-10T16:13:50.637 回答
4

我有点偏见(提交者),但我建议使用 iText。

基于预定义模板生成 pdf 文档(我可以使用 pdf 表单或 xsl-fo)

PDF 表格:检查

能够填充文本数据

PDF表格,检查。您还可以执行程序化布局。

能够填充图形数据(生成的条形码)

查看。给定一个已知位置(可能是“此特定注释的位置”),iText 将为您绘制一个条形码,并给出符号和值。您可以从此处列出的常量推导出支持的符号系统列表。

对于这类事情,我使用具有“仅图标”外观的按钮字段。“图标”是一些任意的 PDF 绘图指令,或图像。iText 的条形码内容将创建一个PdfTemplate您可以轻松填充到按钮中的内容。

无需修补(重新编译)即可在生产环境中更改 pdf 模板

如果您的所有布局都被烘焙到 PDF 模板中,并且您的“条形码在此处”信息没有硬编码到源代码中,那么您就是黄金。

生成要保存在数据库中(作为 blob)和/或打印的 pdf 文件

PDF是PDF是PDF。哎呀,通过您的一些额外工作,您可以使用 iText 构建 PDF/A 文件。“A”代表存档。

开源/免费

开源:是的。v2.1.7 是最后一个使用 MPL 的版本。从 5.x 开始,所有 iText 版本都在 AGPL 之下。是的,iText 从 2.1.7 跳到了 5.0,以便同步 iText 和 iTextSharp 之间的版本编号。

不是完全免费的“little f”,但 2.1.7 版本并不难获得。OTOH,它是孤品,无人维护。做一个知情的消费者。

于 2011-07-11T22:19:52.360 回答
2

这也取决于您希望如何创建 PDF。FOP 从 XML 工作,IText 允许您以编程方式从 Java 创建。

于 2011-07-08T15:19:54.313 回答
2

另一个为飞碟竖起大拇指。如果您熟悉 html 和 css,它工作得很好并且很容易使用。

没有真正记录的是如何访问 iTexts 内置的条形码功能。然而,这很容易实现。我在这里放了一个简短的教程:http: //andreas.haufler.info/2012/12/generating-barcodes-in-pdfs-with-flying.html

于 2012-12-19T11:04:10.750 回答
-2

没有人在谈论BFO(Big faceless),尽管它是商业的

于 2012-07-06T07:02:38.030 回答