PDFStamper在几个PDF文件上失败(itext 5.5.1) [英] PDFStamper fails on several PDF files (itext 5.5.1)

查看:2672
本文介绍了PDFStamper在几个PDF文件上失败(itext 5.5.1)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用数据填充PDF表单并获得PDFStamper(itext版本5.5.1)以处理多个PDF文件,但在某些情况下它总是失败。示例代码:

I'm trying to fill PDF forms with data and got PDFStamper (itext version 5.5.1) to work with several PDF files, but on some it always fails. Sample code:

PdfReader reader = new PdfReader(new FileInputStream("C:/Temp/source.pdf"));
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("C:/Temp/temp.pdf"));
stamper.close();

到目前为止有两个不同的错误消息,第一个:

Two different error messages until now, first one:

Exception in thread "main" java.lang.AbstractMethodError: javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava/lang/String;Z)V
    at com.itextpdf.xmp.impl.XMPMetaParser.createDocumentBuilderFactory(XMPMetaParser.java:423)
    at com.itextpdf.xmp.impl.XMPMetaParser.<clinit>(XMPMetaParser.java:71)
    at com.itextpdf.xmp.XMPMetaFactory.parseFromBuffer(XMPMetaFactory.java:167)
    at com.itextpdf.xmp.XMPMetaFactory.parseFromBuffer(XMPMetaFactory.java:153)
    at com.itextpdf.text.pdf.PdfStamperImp.close(PdfStamperImp.java:337)
    at com.itextpdf.text.pdf.PdfStamper.close(PdfStamper.java:208)

第二:

java.lang.reflect.InvocationTargetException
[...]
Caused by: java.lang.NoClassDefFoundError: Could not initialize class com.itextpdf.xmp.impl.XMPMetaParser
    at com.itextpdf.xmp.XMPMetaFactory.parseFromBuffer(XMPMetaFactory.java:167)
    at com.itextpdf.xmp.XMPMetaFactory.parseFromBuffer(XMPMetaFactory.java:153)
    at com.itextpdf.text.pdf.PdfStamperImp.close(PdfStamperImp.java:337)
    at com.itextpdf.text.pdf.PdfStamper.close(PdfStamper.java:208)

错误消息各不相同,可能是因为环境不同(完整应用程序与测试类,但都使用itext-5.5.1.jar)。

The error messages vary, maybe because of different environments (full application vs. test class, but both using itext-5.5.1.jar).

其中一个工作PDF表单是使用OpenOffice Writer创建的,它生成了1.4版(Acrobat 5.x)文档。失败的PDF表单是使用Acrobat Distiller 7.0.5,pdf 1.6版(Acrobat 7.x)创建的。我已经尝试将它转换为版本1.4 / 5.x而没有运气。

One of the working PDF form was created using OpenOffice Writer, which produced a version 1.4 (Acrobat 5.x) document. The failing PDF form was created using Acrobat Distiller 7.0.5, pdf version 1.6 (Acrobat 7.x). I already tried to convert it down to version 1.4/5.x without luck.

任何想法?

推荐答案

我们在项目中遇到了同样的问题,我们使用FOP生成PDF和iText进行PDF签名。

We had the same problem in our project, where we used FOP for generating PDF and iText for PDF signing.

FOP依赖于xercesImpl:xerces jar。这个jar对于JRE< = 1.4非常重要,但是在JRE> 1.4中不需要它,并且没有它(有关 JDK 1.6和Xerces?。)

FOP has a dependency on the xercesImpl:xerces jar. This jar is important for JRE <= 1.4 but it isn't needed in the JRE>1.4 and works without it (more information on JDK 1.6 and Xerces?).

Ps:检查你是否在类路径上没有xerces库,如果是这样的话它。

Ps: Check that you do not have the xerces library on classpath, if so remove it.

这篇关于PDFStamper在几个PDF文件上失败(itext 5.5.1)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆