首页 > 解决方案 > iTextPDF v7 - 从带有“图像数据不足”错误的多页 tiff 生成 PDF

问题描述

我正在使用 iTextPDF v7 从 TIFF 图像生成 PDF。我正在使用 Java 8,并使用以下方法通过 Maven 加载 iText:

    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>itext7-core</artifactId>
        <version>7.1.16</version>
        <type>pom</type>
    </dependency>

我已经用多个垃圾多页 TIFF 对其进行了测试,效果很好。我使用的第一个“生产”TIFF 结果在 Acrobat 阅读器中抛出“图像数据不足”。4 页之一上的错误。所有其他页面都正确呈现和显示。我用于转换的代码是:

public boolean convertToPDF(String inputImage, String outputImage) throws IOException {
    Path tiffFile = Paths.get(inputImage);
    // RandomAccessFileOrArray raf = new RandomAccessFileOrArray(new RandomAccessSourceFactory().createBestSource(tiffFile.toString()));
    RandomAccessFileOrArray raf = new RandomAccessFileOrArray(new RandomAccessSourceFactory().createSource(new FileInputStream(tiffFile.toString())));
    int tiffPages = TiffImageData.getNumberOfPages(raf);
    raf.close();
    try (PdfDocument output = new PdfDocument(new PdfWriter(outputImage))) {
        for (int page = 1; page <= tiffPages; page++) {
            ImageData tiffImage = ImageDataFactory.createTiff(tiffFile.toUri().toURL(), true, page, true);
            Rectangle tiffPageSize = new Rectangle(tiffImage.getWidth(), tiffImage.getHeight());
            PdfPage newPage = output.addNewPage(new PageSize(tiffPageSize));
            PdfCanvas canvas = new PdfCanvas(newPage);
            canvas.addImageFittedIntoRectangle(tiffImage, tiffPageSize, false);
        } // for
    } // try

    return true;
} // convertToPDF

我做的更多研究使我确信我正确使用 iText 来转换多页 TIFF。出了点问题,但没有抛出任何错误,我找不到其他任何东西可以给我任何提示。

我已经尝试了生成 RandomAccessFileOrArray raf 的两条线,它们略有不同。我也玩过 PDF,看看我是否可以让它呈现有问题的页面。

不幸的是,客户拥有该图像,因此无法在此处发布。

标签: javaitextitext7

解决方案


推荐阅读