我们正在尝试从iText 5升级到iText 7,并且发现了一些问题。我得到一个例外,因为“com.itextpdf.io.IOException:找不到PDF startxref”。在PdfReader#readPdf()中,最后在调用方法中获取异常“com.itextpdf.kernel.PdfException:Trailer not found。”。
我的用例是使用inputSream创建PdfReader实例,然后从阅读器创建PdfDocument并将PdfWriter作为构造函数参数传递。我们正在尝试修改现有的pdf,示例代码如下
PdfReader pdfReader = new PdfReader(inputStream);
pdfReader.setUnethicalReading(true);
ByteArrayOutputStream os = new ByteArrayOutputStream();
PdfDocument pdfDocument = new PdfDocument(pdfReader, new PdfWriter(os));
有人可以建议我做错了什么,以及我们如何解决这个问题。我们有一个实用程序方法,它编写输出流并创建一个新的pdf附件。
答案 0 :(得分:3)
从评论中复制答案:
我修复了这个问题,我需要在我之前关闭
pdfDocument
从输出流中写入附件。我没有正确关闭流,我创建了
pdfDocument
实例并在关闭之前从输出流中读取pdfDocument
。所以我需要先关闭pdfDocument
流,然后再阅读 从输出流创建附件。