java - 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,看看我是否可以让它呈现有问题的页面。
不幸的是,客户拥有该图像,因此无法在此处发布。
解决方案
推荐阅读
- protocol-buffers - 如何在 proto 文件中表示接口实现
- mysql - 从 MYSQL 数据库中查找除最后一个重复记录之外的所有记录
- c# - 访问数据层中的连接字符串
- ios - 构建 C++ 静态库项目时 Xcode 中的项目语言
- c# - 如何使用 FTP 将 ASP Web API 部署到 IIS?
- html - 单击视频链接时,Chrome 开始显示而不是下载
- deep-learning - 使用 LSTMCell 转发时 Gluon MXNet 错误
- javascript - Javascript使页面只能从另一个页面重定向
- html - 带有下拉菜单的 2 部分响应式 HTML 和 CSS 导航
- azure-devops - 用于 Web 应用程序的 VSTS 堆栈