2015-04-22 3 views
2

Когда я пытаюсь преобразовать файл в tiffpdf файл с помощью itextpdf 5.5.5, происходит следующее исключение:Исключение при преобразовании файла TIFF в PDF файл с IText

java.lang.RuntimeException: Scanline должна начинаться с EOL кодовое слово. в com.itextpdf.text.pdf.codec.TIFFFaxDecoder.readEOL (TIFFFaxDecoder.java:1303) в com.itextpdf.text.pdf.codec.TIFFFaxDecoder.decode2D (TIFFFaxDecoder.java:811) в ком. 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) at com.itextpdf.text.Image.getInstance (Image.java.308) в com.itextpdf.text.Image.getInstance (Image.java:242) на com.itextpdf.text.Image.getInstance (Изображение.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.Thre ad.run (Thread.java:619)

Я могу открыть файл tiff в любом приложении просмотра изображений, поэтому он действителен.

+1

Попробуйте использовать метод getInstance() с помощью boolean "recoverFromImageError". Если это не сработает, попробуйте создать экземпляр объекта TiffImage с «прямым» булевым значением в true. Если это не сработает, пожалуйста, разделите tiff. –

+0

спасибо за ваш ответ, я просто использую метод getInstance() с логическим «recoverFromImageError» и исправляю его! – hecatcat

+0

@ MichaëlDemey Вы должны ответить на этот вопрос. –

ответ

2

iText имеет несколько резервных копий при работе с недействительными или поврежденными файлами Tiff. По умолчанию эти резервные копии не используются, вам нужно явно использовать один из методов getinstance(), если флаг recoverFromImageError установлен в true, если вы хотите, чтобы iText попытался разобрать недопустимые файлы Tiff (например, http://api.itextpdf.com/itext/com/itextpdf/text/Image.html#getInstance%28byte[],%20boolean%29)

Если для этого логического значения установлено значение true, iText выдает ошибку только в том случае, если исчерпает все его параметры. Это должно быть знаком для проверки вашего файла TIFF ...

Другим обходным решением может быть использование TiffImage и обход класса Image в целом. TiffImage также использует флаг recoverFromImageError, но также имеет дополнительный флаг под названием «direct», который также может решить ваши проблемы. (http://api.itextpdf.com/itext/com/itextpdf/text/pdf/codec/TiffImage.html)