IText合并标记为pdf - 重建失败:未找到预告片。原始消息:未找到PDF startxref

时间:2014-03-13 07:40:09

标签: itext

我们使用iText版本5.5 PdfCopy来合并多个标记的PDF。 (那些标记的PDF不是由iText创建的。)我们在document.close时遇到以下错误:

java.lang.NullPointerException
at com.itextpdf.text.pdf.RefKey.<init>(RefKey.java:59)
at com.itextpdf.text.pdf.PdfCopy.fixTaggedStructure(PdfCopy.java:822)
at com.itextpdf.text.pdf.PdfCopy.flushTaggedObjects(PdfCopy.java:779)
at com.itextpdf.text.pdf.PdfDocument.close(PdfDocument.java:854)
at com.itextpdf.text.Document.close(Document.java:416)
com.itextpdf.text.exceptions.InvalidPdfException: Rebuild failed: trailer not found.;    Original    message: PDF startxref not found.
at com.itextpdf.text.pdf.PdfReader.readPdf(PdfReader.java:668)
at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:181)
at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:230)
at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:207)
at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:197)

PDF有效且包含预告片和%EOF,文件未损坏。还有什么可能导致这个?

1 个答案:

答案 0 :(得分:12)

您可能已经找到了答案。我遇到了同样的问题,我在实例化PdfReader之前关闭了文档解决了这个问题。

示例:

**

Document tempDoc = new Document(PageSize.A4, 40, 40, 80, 20);
ByteArrayOutputStream tempBaos = new ByteArrayOutputStream();   
PdfWriter.getInstance(tempDoc, tempBaos);
tempDoc.open();

tempDoc.add(tempChap);
tempDoc.close();    // Closing the document before calling Reader

PdfReader reader = new PdfReader(tempBaos.toByteArray());

**

希望这会有所帮助