将PDF转换为图像时,将此图像添加到新的PDF文档并在其上打印文本,我收到此错误:
java.io.IOException: COSStream has been closed and cannot be read. Perhaps its enclosing PDDocument has been closed?
at org.apache.pdfbox.cos.COSStream.getFilteredStream(COSStream.java:179)
at org.apache.pdfbox.pdfwriter.COSWriter.visitFromStream(COSWriter.java:1147)
at org.apache.pdfbox.cos.COSStream.accept(COSStream.java:298)
at org.apache.pdfbox.cos.COSObject.accept(COSObject.java:158)
at org.apache.pdfbox.pdfwriter.COSWriter.doWriteObject(COSWriter.java:538)
at org.apache.pdfbox.pdfwriter.COSWriter.doWriteBody(COSWriter.java:450)
at org.apache.pdfbox.pdfwriter.COSWriter.visitFromDocument(COSWriter.java:1031)
at org.apache.pdfbox.cos.COSDocument.accept(COSDocument.java:401)
at org.apache.pdfbox.pdfwriter.COSWriter.write(COSWriter.java:1314)
at org.apache.pdfbox.pdfwriter.COSWriter.write(COSWriter.java:1215)
at org.apache.pdfbox.pdmodel.PDDocument.save(PDDocument.java:991)
at org.apache.pdfbox.pdmodel.PDDocument.save(PDDocument.java:963)
at org.apache.pdfbox.pdmodel.PDDocument.save(PDDocument.java:951)
at org.foo.bar.experimental.printOCROverlay(PDFDocument.java:343)
我有扫描和OCR处理的文本文档。由于OCR质量在文档与文档之间质量不一致,我想通过在原始PDF上打印真实/ OCR文本来检查它的质量。
我写了一个非常线性的方法,首先解析整个文本,然后从原始PDF中提取所有页面,最后创建一个新的PDF文档,绘制图像并打印文本。
我在网上发现了几个帖子,其中的错误可以追溯到过早关闭的PDF文档。但是在将所有close()
- 调用移到最后时,我也会收到此错误。
以下是打印文档的方法。我已经将错误源精确定位到我打印文本的部分(内部for
- 循环,从注释行// Draw extracted text
开始),因为当我从{{{ 1}}到contentStream.beginText()
一切正常。但是,为了让它发挥作用,我只是没有得到我必须改变的东西。
顺便说一下,我正在使用PDFBox 2。
contentStream.endText()