Java PDF操作和渲染

时间:2011-02-10 20:38:01

标签: java pdf pdf-generation itext

我希望这个问题成为PDF操作和Java渲染的综合指南。通过拼接多个开源库我有一个相当全面的实现,我想改进它。

背景

我的要求和当前的实施:

  1. 检查现有PDF文档的具体情况(PDF版本,密码保护,字体嵌入,交叉引用表等) - 未实现。
  2. 允许通过页面坐标或其他一些机制定义Acroform字段。 - 未实施
  3. 提供迭代PDF表单字段的功能,检查字段类型并用数据填充 - iText v 2.0.8
  4. 将PDF渲染为不同分辨率/ DPI的图像 - 两种实现方式(pdfrenderer和IcePDF
  5. 将HTML / XHTML文件渲染为PDF - Flying Saucer xhtmlrenderer
  6. 在Java服务器环境中执行上述所有(暗示线程安全)
  7. 我不喜欢什么

    我对以下内容不满意:

    1. iText许可 :新版本的iText属于AGPL许可证,对我的项目(以及一般的商业项目)来说,这是一个非首发?商业许可证的费用是非平凡的(基于使用价格为几美分的文件到几万美元的网站许可证)如果我要支付软件的许可证费用,我想做一个完整的市场寻找最好的产品。 iText的2.x版本工作正常,但那里有足够的bug。
    2. PDF版本一致性 :这些库中的字体嵌入,交叉引用表等存在奇怪的一致性问题,从而导致一定程度的悲痛。< / LI>
    3. 渲染输出质量 :从这些文件渲染到PNG的质量在嵌入字体,图像和图层方面存在一些问题。
    4. 我希望

      我希望得到用户和研究过PDF库的人的一些反馈。请提供尽可能多的以下信息,以确保其完整性和后人性。

      • 是您根据使用或研究得出的答案/评论
      • 图书馆的名称,版本和许可证(如果是商业许可证,请尽可能包含费用)
      • 你使用什么库
      • 你喜欢什么/什么是好的
      • 你不喜欢什么/什么不好
      • 您的整体印象

3 个答案:

答案 0 :(得分:3)

如果你真的从你使用它的产品赚钱,iText只会花钱。大多数人会认为是公平的。你在比较什么?

iText通过StackOverflow为非付费用户提供支持。并为付费客户提供高级支持。

答案 1 :(得分:2)

我们在http://bfo.com的BFO PDF库可以非常轻松地完成大部分工作 - 加载PDF并确定其属性,创建,迭代和填充表单字段以及将PDF呈现为位图都是标准的东西。从HTML或XHTML转换有点棘手,但我们有一个配套产品,BFO报告生成器,它将使用与XHTML + CSS非常相似的XML语法来实现这一点。

我不确定“PDF版本符合性”是什么意思 - 如果您遇到特定问题,可能需要对此进行扩展,否则我不会对PDF中的实际版本号感到太过烦恼 - 除了极少数例外,PDF功能几乎是向后兼容的(较新的功能通常只会被不理解它们的读者忽略)。

将PDF格式化为位图是一种蠕虫 - 正确地执行它意味着编写自己的字体和图像格式解析器(一项重要工作:输入1字体需要PostScript解析器),并击败作为PDF渲染的方形挂钩模型进入圆孔即AWT模型。它还依赖于PDF创建软件正常完成工作。因此,无论您使用哪种软件,如果文件无法正确呈现,请通过电子邮件发送给支持团队 - 我们总是会为我们的产品系列提供麻烦的PDF文件。

我们的网站有更多信息和试用版供下载,如果您想了解许可费用信息,请给我们留言。

干杯......迈克(CTO @ BFO)

答案 2 :(得分:0)

还有ghostscript可以在各种DPI中呈现pdf

gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=png16m -r300x300 -sOutputFile=page_%d.png doc.pdf