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

She*_*ari 14 java pdf jodconverter pdfa

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

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

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

iText
gnujpdf
PDF Box
FOP
JFreeReport
PJX
JPedal
PDFjet
jPod
PDF渲染器

UPDATE

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

vla*_*adr 15

从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文件作为样本.:))


kaz*_*aki 6

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");
Run Code Online (Sandbox Code Playgroud)