【发布时间】:2015-05-11 15:07:10
【问题描述】:
我在 Windows 7 上使用带有 Java 7 (1.7.0_71) 64 位的 iText 版本 5.5.6(也测试了 5.3.4)
这是一个示例代码
@Test
public void testConvert() throws Exception {
try{
//Read the Tiff File
RandomAccessFileOrArray myTiffFile=new RandomAccessFileOrArray("C:\\local\\docs\\test.01.tif");
//Find number of images in Tiff file
int numberOfPages= TiffImage.getNumberOfPages(myTiffFile);
System.out.println("Number of Images in Tiff File: " + numberOfPages);
Document TifftoPDF=new Document();
PdfWriter.getInstance(TifftoPDF, new FileOutputStream("C:\\local\\docs\\test.01.pdf"));
TifftoPDF.open();
//Run a for loop to extract images from Tiff file
//into a Image object and add to PDF recursively
for(int i=1;i<=numberOfPages;i++){
//*******
//******* this next line is generating the error
//*******
Image tempImage=TiffImage.getTiffImage(myTiffFile, i);
TifftoPDF.add(tempImage);
}
TifftoPDF.close();
System.out.println("Tiff to PDF Conversion in Java Completed" );
}
catch (Exception i1){
i1.printStackTrace();
}
}
产生以下错误
java.lang.ClassCastException
at com.itextpdf.text.pdf.codec.TIFFField.getAsInt(TIFFField.java:315)
at com.itextpdf.text.pdf.codec.TiffImage.getTiffImage(TiffImage.java:163)
at com.itextpdf.text.pdf.codec.TiffImage.getTiffImage(TiffImage.java:315)
at com.itextpdf.text.pdf.codec.TiffImage.getTiffImage(TiffImage.java:303)
at com.pdf.ImageConverterImplIT.testConvert(ImageConverterImplIT.java:116)
【问题讨论】:
-
可以在图像查看器中打开 TIFF 的事实并不总是意味着这样的 TIFF 是有效的。如果您想忽略 TIFF 中的错误(这是许多图像查看器所做的),请阅读问题的答案Exception when converting tiff file to pdf file with iText
-
尝试了以下操作,替换了问题行,结果相同:
Image tempImage=TiffImage.getTiffImage(myTiffFile, i, true);和Image tempImage=Image.getInstance("C:\\local\\docs\\test.01.tif",true); -
那么这个特定的 TIFF 还有其他问题。它适用于其他 TIFF,不是吗?如果您希望解决此问题,则必须共享“坏”TIFF 以供检查。
-
布鲁诺...感谢您的帮助!!!这是我的bad files之一的链接