我正在编写使用 pdfbox 将 tiff 文件转换为 pdf 的代码,但是在读取 TIFF 文件的某些页面时收到以下错误。这不会发生在所有文件或所有页面上。
PDDocument pdfDoc = new PDDocument();
ImageInputStream isb = ImageIO.createImageInputStream(is);
Iterator<ImageReader> iterator = ImageIO.getImageReaders(isb);
if (iterator == null || !iterator.hasNext())
{
throw new IOException("Image file format not supported by ImageIO: ");
}
ImageReader reader = (ImageReader) iterator.next();
iterator = null;
reader.setInput(isb);
int nbPages = reader.getNumImages(true);
for(int p=0;p<nbPages;p++)
{
BufferedImage bufferedImage = reader.read(p);
PDPage page = new PDPage();
pdfDoc.addPage(page);
PDImageXObject image = LosslessFactory.createFromImage(pdfDoc, bufferedImage);
PDPageContentStream content =new PDPageContentStream(pdfDoc, page);
content.drawImage(image, 0,0 ,page.getMediaBox().getWidth(),page.getMediaBox().getHeight());
content.close();
iterator = null;
}
pdfDoc.save(os);
pdfDoc.close();
收到的错误如下
java.lang.ArrayIndexOutOfBoundsException:在 java.desktop/com.sun.imageio 的 java.desktop/com.sun.imageio.plugins.tiff.TIFFFaxDecompressor.nextLesserThan8Bits(TIFFFaxDecompressor.java:1540) 处的索引 23465 超出范围,长度为 23465。 plugins.tiff.TIFFFaxDecompressor.decodeT6(TIFFFaxDecompressor.java:1080) 在 java.desktop/com.sun.imageio.plugins.tiff.TIFFFaxDecompressor.decodeRaw(TIFFFaxDecompressor.java:655) 在 java.desktop/com.sun.imageio。 plugins.tiff.TIFFDecompressor.decode(TIFFDecompressor.java:2526) 在 java.desktop/com.sun.imageio.plugins.tiff.TIFFImageReader.decodeTile(TIFFImageReader.java:1124) 在 java.desktop/com.sun.imageio。 plugins.tiff.TIFFImageReader.read(TIFFImageReader.java:1342) 在 java.desktop/javax.imageio.ImageReader.read(ImageReader.java:938) 在 com.allstate.acg.claims.tiff.TiffToPDF.convert(TiffToPDF. java:37) 在 com.allstate.acg。claim.tiff.TiffToPDF.main(TiffToPDF.java:60)
关于可能导致这种情况的任何帮助?