我有大约 500 个 PDF 文档需要转换为 TIF 文件。我正在使用来自 Apache PDFBox 1.8.2 API 的 PDDocument 和 PDPage。该代码适用于几乎所有 PDF 文档,除了大约 20 个我得到异常的文档:
2013 年 6 月 14 日上午 8:08:09 org.apache.pdfbox.pdmodel.graphics.xobject.PDPixelMap getRGBImage 严重:java.lang.IllegalArgumentException:尺寸(宽度 = 1000000 高度 = 1000000)太大 java.lang.IllegalArgumentException:在 java.awt.image.ComponentSampleModel.(Unknown Source) at java.awt.image.PixelInterleavedSampleModel.(Unknown Source) 的 java.awt.image.SampleModel.(Unknown Source) 尺寸(宽度 = 1000000 高度 = 1000000)太大) 在 com.sun.media.imageioimpl.plugins.jpeg2000.J2KRenderedImageCodecLib.createOriginalSampleModel(J2KRenderedImageCodecLib.java:729) 在 com.sun.media.imageioimpl.plugins.jpeg2000.J2KRenderedImageCodecLib.createSampleModel(J2KRenderedImageCodecLib.java:741)。 sun.media.imageioimpl.plugins.jpeg2000.J2KRenderedImageCodecLib.(J2KRenderedImageCodecLib.java:261) at com.sun.media.imageioimpl.plugins.jpeg2000.J2KImageReaderCodecLib.read(J2KImageReaderCodecLib.java:364) at javax.imageio.ImageIO.read(Unknown Source) at javax.imageio.ImageIO.read(Unknown Source) at org.apache.pdfbox.filter.JPXFilter.decode(JPXFilter.java:53) at org.apache.pdfbox.cos.COSStream.doDecode(COSStream.java:295) at org.apache.pdfbox.cos.COSStream.doDecode( COSStream.java:237) 在 org.apache.pdfbox.cos.COSStream.getUnfilteredStream(COSStream.java:172) 在 org.apache.pdfbox.pdmodel.common.PDStream.createInputStream(PDStream.java:231) 在 org.apache .pdfbox.pdmodel.common.PDStream.getByteArray(PDStream.java:509) 在 org.apache.pdfbox.pdmodel.graphics.xobject.PDPixelMap.getRGBImage(PDPixelMap.java:185) 在 org.apache.pdfbox.util.operator .pagedrawer.Invoke.process(Invoke.java:83) org.apache.pdfbox.util.PDFStreamEngine.processOperator(PDFStreamEngine.java:554) org.apache.pdfbox.util.PDFStreamEngine.processSubStream(PDFStreamEngine.java:268) org.apache.pdfbox.util.PDFStreamEngine .processSubStream(PDFStreamEngine.java:235) 在 org.apache.pdfbox.util.PDFStreamEngine.processStream(PDFStreamEngine.java:215) 在 org.apache.pdfbox.pdfviewer.PageDrawer.drawPage(PageDrawer.java:125) 在 org. apache.pdfbox.pdmodel.PDPage.convertToImage(PDPage.java:781) 在 dk.atkins.sa.creator.CreateTIFF.pdf(CreateTIFF. java:142) 在 dk.atkins.sa.creator.DocumentIndex.build(DocumentIndex.java:288) 在 dk.atkins.sa.creator.DocumentIndex.run(DocumentIndex.java:204)processOperator(PDFStreamEngine.java:554) at org.apache.pdfbox.util.PDFStreamEngine.processSubStream(PDFStreamEngine.java:268) at org.apache.pdfbox.util.PDFStreamEngine.processSubStream(PDFStreamEngine.java:235) at org.apache .pdfbox.util.PDFStreamEngine.processStream(PDFStreamEngine.java:215) 在 org.apache.pdfbox.pdfviewer.PageDrawer.drawPage(PageDrawer.java:125) 在 org.apache.pdfbox.pdmodel.PDPage.convertToImage(PDPage.java :781) 在 dk.atkins.sa.creator.CreateTIFF.pdf(CreateTIFF.java:142) 在 dk.atkins.sa.creator 的 org.apache.pdfbox.pdmodel.PDPage.convertToImage(PDPage.java:712)。 DocumentIndex.build(DocumentIndex.java:288) 在 dk.atkins.sa.creator.DocumentIndex.run(DocumentIndex.java:204)processOperator(PDFStreamEngine.java:554) at org.apache.pdfbox.util.PDFStreamEngine.processSubStream(PDFStreamEngine.java:268) at org.apache.pdfbox.util.PDFStreamEngine.processSubStream(PDFStreamEngine.java:235) at org.apache .pdfbox.util.PDFStreamEngine.processStream(PDFStreamEngine.java:215) 在 org.apache.pdfbox.pdfviewer.PageDrawer.drawPage(PageDrawer.java:125) 在 org.apache.pdfbox.pdmodel.PDPage.convertToImage(PDPage.java :781) 在 dk.atkins.sa.creator.CreateTIFF.pdf(CreateTIFF.java:142) 在 dk.atkins.sa.creator 的 org.apache.pdfbox.pdmodel.PDPage.convertToImage(PDPage.java:712)。 DocumentIndex.build(DocumentIndex.java:288) 在 dk.atkins.sa.creator.DocumentIndex.run(DocumentIndex.java:204)apache.pdfbox.util.PDFStreamEngine.processSubStream(PDFStreamEngine.java:235) 在 org.apache.pdfbox.util.PDFStreamEngine.processStream(PDFStreamEngine.java:215) 在 org.apache.pdfbox.pdfviewer.PageDrawer.drawPage(PageDrawer. java:125) at org.apache.pdfbox.pdmodel.PDPage.convertToImage(PDPage.java:781) at org.apache.pdfbox.pdmodel.PDPage.convertToImage(PDPage.java:712) at dk.atkins.sa.creator .CreateTIFF.pdf(CreateTIFF.java:142) 在 dk.atkins.sa.creator.DocumentIndex.build(DocumentIndex.java:288) 在 dk.atkins.sa.creator.DocumentIndex.run(DocumentIndex.java:204)apache.pdfbox.util.PDFStreamEngine.processSubStream(PDFStreamEngine.java:235) 在 org.apache.pdfbox.util.PDFStreamEngine.processStream(PDFStreamEngine.java:215) 在 org.apache.pdfbox.pdfviewer.PageDrawer.drawPage(PageDrawer. java:125) at org.apache.pdfbox.pdmodel.PDPage.convertToImage(PDPage.java:781) at org.apache.pdfbox.pdmodel.PDPage.convertToImage(PDPage.java:712) at dk.atkins.sa.creator .CreateTIFF.pdf(CreateTIFF.java:142) 在 dk.atkins.sa.creator.DocumentIndex.build(DocumentIndex.java:288) 在 dk.atkins.sa.creator.DocumentIndex.run(DocumentIndex.java:204)pdmodel.PDPage.convertToImage(PDPage.java:781) at org.apache.pdfbox.pdmodel.PDPage.convertToImage(PDPage.java:712) at dk.atkins.sa.creator.CreateTIFF.pdf(CreateTIFF.java:142)在 dk.atkins.sa.creator.DocumentIndex.build(DocumentIndex.java:288) 在 dk.atkins.sa.creator.DocumentIndex.run(DocumentIndex.java:204)pdmodel.PDPage.convertToImage(PDPage.java:781) at org.apache.pdfbox.pdmodel.PDPage.convertToImage(PDPage.java:712) at dk.atkins.sa.creator.CreateTIFF.pdf(CreateTIFF.java:142)在 dk.atkins.sa.creator.DocumentIndex.build(DocumentIndex.java:288) 在 dk.atkins.sa.creator.DocumentIndex.run(DocumentIndex.java:204)
2013 年 6 月 14 日上午 8:08:09 org.apache.pdfbox.util.operator.pagedrawer.Invoke 进程警告:getRGBImage 返回 NULL
我能做些什么来避免这个异常?我应该使用替代的 PDF 转换器吗?调用方法时抛出异常convertToImage()
。
List<PDPage> pages = document.getDocumentCatalog().getAllPages();
for (int i = 0; i < pages.size(); i++) {
FileOutputStream fos = null;
ByteArrayOutputStream baos = null;
ImageOutputStream ios = null;
try {
PDPage page = pages.get(i);
BufferedImage thisImage = page.convertToImage();
...
抱怨:异常是在 PDFBox API 中引发的,并在 PDFBox API 中捕获,所以我没有机会强调任何问题。