1

我正在编写使用 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)

关于可能导致这种情况的任何帮助?

4

0 回答 0