PDFStamper在几个PDF文件上失败(itext 5.5.1)

PDFStamper在几个PDF文件上失败(itext 5.5.1),itext,Itext,我试图用数据填充PDF表单,并让PDFStamper(itext版本5.5.1)处理几个PDF文件,但在某些情况下,它总是失败。示例代码: PdfReader reader = new PdfReader(new FileInputStream("C:/Temp/source.pdf")); PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("C:/Temp/temp.pdf")); stamper.close();

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

PdfReader reader = new PdfReader(new FileInputStream("C:/Temp/source.pdf"));
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("C:/Temp/temp.pdf"));
stamper.close();
到目前为止,有两条不同的错误消息,第一条:

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)
错误消息各不相同,可能是因为不同的环境(完整应用程序和测试类,但都使用itext-5.5.1.jar)

其中一个工作PDF表单是使用OpenOfficeWriter创建的,OpenOfficeWriter生成了1.4版(Acrobat5.x)文档。失败的PDF表单是使用Acrobat Diverter 7.0.5,PDF版本1.6(Acrobat 7.x)创建的。我已经尝试将其转换为1.4/5.x版,但运气不好


有什么想法吗?

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

FOP依赖于xercesImpl:xerces jar。这个jar对JRE很重要我也有同样的问题(使用xerces),我可以通过在依赖项中添加一个排除项来修复它:

    <dependency>
        <groupId>net.sf.barcode4j</groupId>
        <artifactId>barcode4j-fop-ext-complete</artifactId>
        <version>2.0</version>
        <type>jar</type>
        <exclusions>
            <exclusion>
                <groupId>xerces</groupId>
                <artifactId>xercesImpl</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

net.sf.barcode4j
条形码4J fop ext完成
2
罐子
薛西斯
干细胞移植

这看起来像“脏XMP”。你能和我分享一下吗PDFs@BrunoLowagie文件可用:同一文件的两个版本,使用不同的PDF生成器创建。嗯。。。我无法重现这个问题,但我注意到您的错误消息中有一点:您的类路径中是否有两个不同的iText版本?不,我没有。但你的暗示把我引向了正确的方向。我在类路径中有一个较旧版本的ApacheXerces,这导致了错误。我得看看我是否能安全地把它换成第一眼看上去不错的现在的。非常感谢!这是个好消息!这可能解释了
AbstractMethodError
    <dependency>
        <groupId>net.sf.barcode4j</groupId>
        <artifactId>barcode4j-fop-ext-complete</artifactId>
        <version>2.0</version>
        <type>jar</type>
        <exclusions>
            <exclusion>
                <groupId>xerces</groupId>
                <artifactId>xercesImpl</artifactId>
            </exclusion>
        </exclusions>
    </dependency>