Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java PDF操作和呈现_Java_Pdf_Pdf Generation_Itext - Fatal编程技术网

Java PDF操作和呈现

Java PDF操作和呈现,java,pdf,pdf-generation,itext,Java,Pdf,Pdf Generation,Itext,我希望这个问题能够成为Java中PDF操作和渲染的全面指南。通过将多个开源库拼接在一起,我有一个相当全面的实现,我希望对其进行改进 背景 我的要求和目前的执行情况: 检查现有PDF文档的特定条件(PDF版本、密码保护、字体嵌入、交叉引用表等)-未实施 允许通过页面坐标或其他机制定义Acroform字段。-未实施 提供在PDF中迭代表单字段、检查字段类型并用数据填充的功能- 以不同分辨率/DPI将PDF呈现为图像-两种实现(PDFRender和) 将HTML/XHTML文件呈现为PDF格式-飞碟x

我希望这个问题能够成为Java中PDF操作和渲染的全面指南。通过将多个开源库拼接在一起,我有一个相当全面的实现,我希望对其进行改进

背景

我的要求和目前的执行情况:

  • 检查现有PDF文档的特定条件(PDF版本、密码保护、字体嵌入、交叉引用表等)-未实施
  • 允许通过页面坐标或其他机制定义Acroform字段。-未实施
  • 提供在PDF中迭代表单字段、检查字段类型并用数据填充的功能-
  • 以不同分辨率/DPI将PDF呈现为图像-两种实现(PDFRender和)
  • 将HTML/XHTML文件呈现为PDF格式-飞碟xhtmlrenderer
  • 在Java服务器环境中作为库执行上述所有操作(意味着线程安全)
  • 我不喜欢什么

    我对以下几点感到不满:

  • iText许可证:iText的新版本在AGPL许可证下,这对于我的项目(以及一般的商业项目?)来说是不可能的。商业许可证的费用是不小的(基于使用的价格从一个文档几美分到网站许可证的数万美元不等),如果我要支付软件的许可证费用,我想做一次最好产品的全面市场搜索。iText的2.x版本工作正常,但有足够的bug
  • PDF版本一致性:在这些库中的字体嵌入、交叉引用表等方面存在奇怪的一致性问题,会造成相当程度的痛苦
  • 渲染输出质量:从这些文件渲染为PNG的质量在嵌入字体、图像和图层方面存在一些问题
  • 我所希望的

    我希望从用户和研究过PDF库的人那里得到一些反馈。为了完整和后代,请尽可能多地提供以下信息

    • 你的回答/评论是基于使用还是基于研究
    • 库的名称、版本和许可证(如果是商业许可证,请尽可能包括成本)
    • 你用图书馆做什么
    • 你喜欢它的什么/它有什么优点
    • 你不喜欢它的什么/它对你有什么不好
    • 你的总体印象是什么

    只有当你真正从你使用的产品中赚钱时,iText才会让你花钱。大多数人都认为公平。你拿它和什么作比较

    iText通过StackOverflow为非付费用户提供支持。以及对付费客户的高级支持。

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

    我不确定你所说的“PDF版本一致性”是什么意思——如果你有具体的问题,你可能想在这方面进行扩展,但否则我不会太在意PDF中的实际版本号——除了极少数例外,PDF功能非常向后和向前兼容(不了解新功能的读者通常会忽略它们)

    将PDF光栅化为位图是一个棘手的问题——正确地做这件事意味着编写自己的字体和图像格式解析器(一项艰巨的工作:类型1字体需要PostScript解析器),并将PDF渲染模型的方形钉打到AWT模型的圆形孔中。这还取决于PDF创建软件是否正确完成工作。因此,无论您选择哪种软件,如果文件渲染不正确,请将其发送给支持团队-我们总是在为我们的收藏寻找麻烦的PDF

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


    干杯!Mike(CTO@BFO)

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

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

    既然只允许2个链接,我想你把iText的定价列得有点高。当然是数千,但数万?@mark storer我所报的价格在一个典型的SaaS部署中使用了数万。公平地说,iText确实有基于使用情况的定价。我相应地更新了这个问题。我认为应该是这样的社区维基百科这个问题主要是基于观点的。唯一能让您100%兼容的是最新版本的Acrobat,它使用的PDF文件仅由最新版本的Acrobat创建,因为规范在许多方面都不明确。许多人仍在使用1.3版,所以只有在您需要最新版本时,您才真正需要最新版本最新功能。PDF版本一致性主要是围绕渲染器未正确处理1.5和1.6功能中的某些功能。忽略它们或尊重它们都是有效的处理方式-在意外功能上死亡不是:-)。e、 PDF渲染器阻塞了交叉引用表,这是一个长期存在的错误。