Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 转换为TIF时,如何使用类PDPage上的方法convertToImage()避免维度异常_Java_Exception_Pdfbox_Dimension - Fatal编程技术网

Java 转换为TIF时,如何使用类PDPage上的方法convertToImage()避免维度异常

Java 转换为TIF时,如何使用类PDPage上的方法convertToImage()避免维度异常,java,exception,pdfbox,dimension,Java,Exception,Pdfbox,Dimension,我有大约500个PDF文件,我需要转换成TIF文件。我正在使用ApachePDFBOx1.8.2API中的PDDocument和PDPage。这段代码几乎适用于所有PDF文档,除了大约20个例外: 2013年6月14日上午8:08:09 org.apache.pdfbox.pdmodel.graphics.xobject.PDPixelMap getRGBImage 严重:java.lang.IllegalArgumentException:维度(宽度=1000000 高度=1000000)太大

我有大约500个PDF文件,我需要转换成TIF文件。我正在使用ApachePDFBOx1.8.2API中的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: 尺寸(宽度=1000000高度=1000000)在以下位置太大 java.awt.image.SampleModel.(未知源代码)位于 java.awt.image.ComponentSampleModel.(未知源代码)位于 java.awt.image.PixelInterleavedSampleModel.(未知源代码)位于 com.sun.media.imageioimpl.plugins.jpeg2000.J2KRenderedImageCodecLib.createSampleModel(J2KRenderedImageCodecLib.java:741) 在 com.sun.media.imageioimpl.plugins.jpeg2000.J2KRenderedImageCodecLib.createOriginalSampleModel(J2KRenderedImageCodecLib.java:729) 在 com.sun.media.imageioimpl.plugins.jpeg2000.J2KRenderedImageCodecLib.(J2KRenderedImageCodecLib.java:261)位于 com.sun.media.imageioimpl.plugins.jpeg2000.J2KImageReaderCodecLib.read(J2KImageReaderCodecLib.java:364) 在javax.imageio.imageio.read(未知源)处 javax.imageio.imageio.read(未知源代码)位于 org.apache.pdfbox.filter.JPXFilter.decode(JPXFilter.java:53)位于 org.apache.pdfbox.cos.costream.doDecode(costream.java:295)位于 org.apache.pdfbox.cos.costream.doDecode(costream.java:237)位于 org.apache.pdfbox.cos.costream.getUnfilteredStream(costream.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) 位于org.apache.pdfbox.pdmodel.PDPage.convertToImage(PDPage.java:712) 在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 pages=document.getDocumentCatalog().getAllPages();
对于(int i=0;i

投诉:异常在PDFBox API中抛出,并在PDFBox API中捕获,因此我没有机会突出显示任何问题。

指定类型和解决方案是否有帮助?例如
page.convertToImage(BufferedImage.type_3BYTE_BGR,200)
page.convertToImage(BufferedImage.type_BYTE_GRAY,600)
太像素图像(1000000 x 1000000)看起来确实太多了。我试过了,但效果不一样。当我用PDFReader打开PDF文档时,它看起来像是扫描仪上的普通PDF。我也试过使用Aspose工具包,Aspose只是将PDF文档制作成白页。这一行是page.convertToImage(BufferedImage.TYPE_3BYTE_BGR,200)给出了相同的错误。第二行page.convertToImage(BufferedImage.TYPE_BYTE_GRAY,600);给出了严重的错误:出现了错误……像素图不包含任何数据。2013年6月25日3:17:03 PM org.apache.pdfbox.util.operator.pagedrawer.Invoke进程
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();
        ...