【问题标题】:Exception when converting tiff file to pdf file with iText使用 iText 将 tiff 文件转换为 pdf 文件时出现异常
【发布时间】:2015-06-29 12:14:47
【问题描述】:

当我尝试使用itextpdf 5.5.5tiff 文件转换为pdf 文件时,出现以下异常:

java.lang.RuntimeException:扫描线必须以 EOL 代码字开头。在 com.itextpdf.text.pdf.codec.TIFFFaxDecoder.readEOL(TIFFFaxDecoder.java:1303) 在 com.itextpdf.text.pdf.codec.TIFFFaxDecoder.decode2D(TIFFFaxDecoder.java:811) 在 com.itextpdf.text.pdf.codec.TiffImage.getTiffImage(TiffImage.java:223) 在 com.itextpdf.text.pdf.codec.TiffImage.getTiffImage(TiffImage.java:315) 在 com.itextpdf.text.pdf.codec.TiffImage.getTiffImage(TiffImage.java:303) 在 com.itextpdf.text.Image.getInstance(Image.java:308) 在 com.itextpdf.text.Image.getInstance(Image.java:242) 在 com.itextpdf.text.Image.getInstance(Image.java:365) 在 com.minstone.convert.PicConvertor.convertPicToPdf1(PicConvertor.java:81) 在 com.minstone.convert.DocConverter$ConvertWork.king2pdf(DocConverter.java:143) 在 com.minstone.convert.DocConverter$ConvertWork.run(DocConverter.java:99) 在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) 在 java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 在 java.util.concurrent.FutureTask.run(FutureTask.java:138) 在
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 在 java.lang.Thread.run(Thread.java:619)

我可以在任何图像查看器中打开tiff 文件,所以它是有效的。

【问题讨论】:

  • 尝试使用带有布尔值“recoverFromImageError”的 getInstance() 方法。如果这不起作用,请尝试将“直接”布尔值设置为 true 来实例化 TiffImage 对象。如果这不起作用,请分享 tiff。
  • 感谢您的回答,我只是使用带有布尔“recoverFromImageError”的 getInstance() 方法并修复它!
  • @MichaëlDemey 你应该这样回答。

标签: java pdf itext tiff


【解决方案1】:

iText 在处理无效或损坏的 Tiff 文件时有一些回退。默认情况下,不使用这些回退,如果您希望 iText 尝试解析无效的 Tiff 文件(例如 http://api.itextpdf.com/itext/com/itextpdf/text/Image.html#getInstance%28byte[],%20boolean%29 ),您需要显式使用将 recoverFromImageError 标志设置为 true 的 getinstance() 方法之一/p>

如果此布尔值设置为 true,iText 只会在用尽所有选项时抛出错误。这应该是检查 TIFF 文件的标志...

另一种解决方法是使用 TiffImage 并完全绕过 Image 类。 TiffImage 还使用 recoverFromImageError 标志,但它还有一个名为“direct”的附加标志,它也可以解决您的问题。 (http://api.itextpdf.com/itext/com/itextpdf/text/pdf/codec/TiffImage.html)

【讨论】:

    【解决方案2】:

    由于没有可用的代码 sn-p,我猜你是在使用下面的代码来读取图像。

    Image tiffImg=TiffImage.getTiffImage(randomAccessFileOrArrayObj, pageNum);
    

    如果是这样,请将其更改为(添加 true 以尝试恢复文件)

    Image tiffImg=TiffImage.getTiffImage(randomAccessFileOrArrayObj, true, pageNum);
    

    【讨论】:

      猜你喜欢
      • 2012-08-03
      • 1970-01-01
      • 2014-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-02
      • 1970-01-01
      相关资源
      最近更新 更多