当添加利用iText 7图片为PDF格式,我得到以下错误: (这个错误出现了一些图片,我可以成功写入其他图像。)ICC配置文件包含1个部分,而图像数据中包含3个部分
ERROR 4868com.itextpdf.io.IOException: ICC profile contains 1 components, while the image data contains 3 components.
at com.itextpdf.io.color.IccProfile.getInstance(IccProfile.java:90)
at com.itextpdf.io.image.JpegImageHelper.processParameters(JpegImageHelper.java:370)
at com.itextpdf.io.image.JpegImageHelper.processImage(JpegImageHelper.java:142)
at com.itextpdf.io.image.ImageDataFactory.createImageInstance(ImageDataFactory.java:524)
at com.itextpdf.io.image.ImageDataFactory.create(ImageDataFactory.java:101)
at com.itextpdf.io.image.ImageDataFactory.create(ImageDataFactory.java:121)
at com.itextpdf.io.image.ImageDataFactory.create(ImageDataFactory.java:131)
下面是我使用的代码:
Cell cell = new Cell(1, 1);
Image image = new Image(ImageDataFactory.create(photoLocation));
image.setWidth(58);
image.setHeight(58f);
cell.add(image);
使用iText5工作相同的图像。
的根本原因是最有可能的是,图像中包含的ICC配置文件,详细说明3层的组件,但是图像本身是灰度。最有可能是由于图像被转换为灰度,转换程序未修改配置文件。在iText5中检查发生,但无论如何都会添加图像。修复源图像可能是最干净的解决方案 –
@Samuel Huylebroeck我使用imagemagick来更正图像。它适用于大多数图像(3035张图像中有3003张图像)。但即使在使用imagemagick后,对于一些图像(确切地说32),我仍然得到相同的错误。当我在这32个图像上使用imagemagick的转换命令时,命令运行时没有任何错误。我怎样才能修复这些图像。 – ashishjmeshram
没有线索,至少没有无法访问有问题的图像。我建议在视觉和结构上检查它们,以了解它们与转换所用图像的不同之处。 –