用于将现有PDF转换为PDF / A的免费Java库

我想将PDF转换为PDF / A. 目前我可以使用OpenOffice pdf viewer插件和Jodconverter 2一起完成此操作。 但这样做非常麻烦。

有没有人知道我可以用来做这个的任何开源/免费Java库?

到目前为止,我已经找到了这些开源库,但是没有一个支持将PDF转换为PDF / A.

iText的
gnujpdf
PDF框
FOP
JFreeReport的
PJX
JPedal
PDFjet
JPOD
PDF渲染器

UPDATE

似乎Apache FOP能够将文档(不是PDF文档)转换为PDF / A.

从PDF转换为PDF / A.

这是你原来措辞的问题的答案。

对于不涉及潜在有损重新渲染的解决方案 ,请查看http://www.opensubscriber.com/message/itext-questions@lists.sourceforge.net/8027900.html ,看来Foris Zoltan能够获得一些东西(不是详尽的,但可能足以满足大多数PDF)使用iText而不会重新渲染。

如果Zoltan的解决方案根据您的要求不可接受/足够,那么您将无法重新渲染 。 您可以坚持使用OpenOffice / JODConverter ,或者通过优先使用GhostScript (所有这些的母亲)来减少开销,pdf2ps重新导入支持PDF / A的ps2pdf

Apache FOP

其他受访者提出了Apache FOP,它在PDF到PDF / A转换的背景下具有以下优点和缺点:

  • 优点 :比OpenOffice / JODCOnverter组合更少“移动部件” (例如,将进程内FOP与守护OO进行比较)
  • 缺点 :您负责从PDF转换为XSL-FO或以其他方式呈现为FOP(需要更多编码和/或集成工作 ),而OpenOffice / JODCOnverter和Ghostscript可能需要更少的额外编码。

但是,如果我没有弄错的话,您似乎正在使用PDF作为中间格式 ,即您要实现的是XHTML到PDF到PDF / A的转换 。 通过直接从XHTML转换为PDF / A,过程将更快,将使用更少的资源(例如内存),并且不会不必要地降低输出质量(如重新渲染解决方案所能)或需要对PDF格式的深入了解(作为Zoltan的解决方案)确实。)

在这种情况下, 直接从XHTML转换为PDF / A将是一个理想的解决方案,可以直接使用iText (该示例使用iTextSharp,iText的.Net端口,但它与Java相同),或者使用Apache FOP作为其他已经建议(在输出到PDF时也会在内部使用iText,虽然设置比直接使用iText更臃肿,效率低,设置复杂,但它可能比iText示例产生更好的结果 – 只有一种解决方法,即你我必须尝试将你的一些XHTML文件作为样本。:))

Seam PDF只是使用Seam的项目的便利。 没有什么可以阻止您使用Apache FOP和Seam生成PDF文件。

我个人使用Apache FOP在Web应用程序中生成PDF / A文件,它工作正常。 正如Liggy已经给出的链接所说的那样简单

userAgent.getRendererOptions()。put(“pdf-a-mode”,“PDF / A-1b”);

所以我的建议是直接使用Apache FOP而不是处理转换(这也有性能问题)

更新:

Apache FOP网站包含有关如何通过Java代码使用它的示例列表。 http://xmlgraphics.apache.org/fop/0.95/embedding.html

这是一个将XML转换为PDF的最小命令行应用程序

另一种专门处理XHTML(而不仅仅是XML)的方法是使用Antenna的xhtml2fo样式表。

这是一个例子: http : //blog.platinumsolutions.com/node/216

只需在创建“FOP”对象之前添加以下两行,就可以了。

 FOUserAgent foUserAgent = fopFactory.newFOUserAgent(); foUserAgent.getRendererOptions().put("pdf-a-mode","PDF/A-1b"); 

您在API列表中提到了Apache FOP,但是从这个页面 – http://xmlgraphics.apache.org/fop/trunk/pdfa.html它提到了对PDF / A的一些支持:

PDF / A-1b的实施程度是FOP支持ISO 19005-1中描述的元素的创建。

PDF / A-1a基于PDF-A-1b并增加了辅助function(如标记PDF)。 此格式在“辅助function”页面中描述的限制范围内可用。

它没有特别提及PDF到PDF / A的任何内容,但它可能是一个开源替代品。

在gitHub pdf2htmlEX中有一个项目值得一看。 它的开源是用C ++编写的。

我们刚刚发布了jPDFPreflight ,一个可以将PDF文件转换为PDF / A的Java库。 第一版可以转换的文档类型有一些限制。