我希望这个问题成为PDF操作和Java渲染的综合指南 . 通过拼接多个开源库我有一个相当全面的实现,我想改进它 .
Background
我的要求和当前的实施:
-
检查现有PDF文档是否符合特定条件(PDF版本,密码保护,字体嵌入,交叉引用表等) - 未实现 .
-
允许通过页面坐标或其他一些机制定义Acroform字段 . - 未实现
-
提供迭代PDF中表单字段的功能,检查字段类型并用数据填充它 - iText v 2.0.8
-
将PDF渲染为不同分辨率/ DPI的图像 - 两种实现方式(pdfrenderer和IcePDF)
-
将HTML / XHTML文件渲染为PDF - Flying Saucer xhtmlrenderer
-
以上所有内容作为Java服务器环境中的库(暗示线程安全)
What do I not like
我对以下内容不满意:
-
iText licensing :iText的新版本属于AGPL许可证,对我的项目(以及一般的商业项目)来说,这是非启动性的 . 商业许可证的费用是非平凡的(基于使用价格为几美分的文件到几万美元的网站许可证)如果我要支付软件的许可证费用,我想做一个完整的市场寻找最好的产品 . iText的2.x版本工作正常,但那里有足够的bug .
-
PDF version conformance :这些库中的字体嵌入,交叉引用表等存在奇怪的一致性问题,导致一定程度的悲伤 .
-
Rendering output quality :从这些文件渲染到PNG的质量在嵌入字体,图像和图层方面存在一些问题 .
What I am hoping for
我希望得到用户和研究过PDF库的人的一些反馈 . 请提供尽可能多的以下信息,以确保完整性和后人性 .
-
是您根据使用或研究得出的答案/评论
-
名称,图书馆版本和许可证(如果是商业许可证,请尽可能包括费用)
-
你用什么库?
-
你喜欢它/它有什么好处
-
你不喜欢什么/什么不好
-
你的整体印象是什么?
3 回答
如果你真的从你使用它的产品赚钱,iText只会花钱 . 大多数人会认为是公平的 . 你在比较什么?
iText通过StackOverflow为非付费用户提供支持 . 并为付费客户提供高级支持 .
我们在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)
还有ghostscript可以在各种DPI中呈现pdf