2017-02-06 2 views
0

Я испытывает EOF Exception следующим образом при попытке чтения TIFF файлов с помощью IText 5.5.10Преобразовать CCITT Group 3 1-Dimensional TIFF в PDF с использованием IText в Java

ExceptionConverter: java.io.EOFException 
at com.itextpdf.text.pdf.RandomAccessFileOrArray.readFully(RandomAccessFileOrArray.java:249) 
at com.itextpdf.text.pdf.RandomAccessFileOrArray.readFully(RandomAccessFileOrArray.java:241) 
at com.itextpdf.text.pdf.codec.TiffImage.getTiffImage(TiffImage.java:209) 
at com.itextpdf.text.pdf.codec.TiffImage.getTiffImage(TiffImage.java:314) 
at com.itextpdf.text.pdf.codec.TiffImage.getTiffImage(TiffImage.java:302) 
at com.itextpdf.text.Image.getInstance(Image.java:428) 
at com.itextpdf.text.Image.getInstance(Image.java:374) 
at TiffToPdf.main(TiffToPdf.java:137) 

кода я использую:

byte[] data = null; 
    Image img = null; 
    try { 
     data = Files.readAllBytes(Paths.get("tiff.tif")); 
     img = Image.getInstance(data, true); 
    } 
    catch (Exception e) { 
     e.printStackTrace(); 
    } 

Я попытался пропустить шаг изображения и используя класс Tiffimage явно, но я переживаю ту же ошибку.

byte[] data = null; 
    Image img = null; 
    try { 
     data = Files.readAllBytes(Paths.get("tiff.tif")); 
     RandomAccessSourceFactory factory = new RandomAccessSourceFactory(); 
     RandomAccessSource fileBytes = factory.createSource(data); 
     RandomAccessFileOrArray s = new RandomAccessFileOrArray(fileBytes); 
     img = TiffImage.getTiffImage(s, true, 1, true); 
    } 
    catch (Exception e) { 
     e.printStackTrace(); 
    } 

Я заметил, что есть 2 классов в IText называется TIFFFaxDecompressor и TIFFFaxDecoder, но я не смог найти каких-либо ресурсов в Интернете о том, как использовать их.

+0

Я не получаю исключение EOF с вашим кодом, можете ли вы разместить свой tif-образ? –

+0

Вот пример файла, с которым у нас возникают проблемы с https://file.town/download/27pc2stvxlfgk06jdek9raouj –

ответ

1

с вашим изображением tiff, следующий код действительно работал для меня, то есть преобразован в pdf успешно.

byte[] data = null; 
    com.itextpdf.text.Image img = null; 
    try { 
     //System.out.println(Paths.get("src/main/resources/tiff.tif")); 
     data = Files.readAllBytes(Paths.get("src/main/resources/file.tif")); 
     RandomAccessSourceFactory factory = new RandomAccessSourceFactory(); 
     RandomAccessSource fileBytes = factory.createSource(data); 
     RandomAccessFileOrArray s = new RandomAccessFileOrArray(fileBytes); 

     Document document = new Document(); 
     PdfWriter.getInstance(document, new FileOutputStream("src/main/resources/destination.pdf")); 
     document.open(); 
     int pages = TiffImage.getNumberOfPages(s); 
     Image image; 
     for (int i = 1; i <= pages; i++) { 
      image = TiffImage.getTiffImage(s, i); 
      Rectangle pageSize = new Rectangle(image.getWidth(), 
        image.getHeight()); 
      document.setPageSize(pageSize); 
      document.newPage(); 
      document.add(image); 
     } 
     document.close(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
+1

Спасибо за это, я попробую это первое утро завтра утром, когда я вернусь в офис и вернусь к вам с результаты. Спасибо, что нашли время, чтобы закодировать свое решение. –

+0

Эй, Sasi, я тестировал ваш код против некоторых других файлов TIFF, с которыми у нас были проблемы, и я наткнулся на этот файл, который не работает. Вы могли бы взглянуть на него? https://file.town/download/m4pdybysikndvm1kstd9cwhst –

+1

Работает ли он на первый файл, который вы опубликовали? и получаете ли вы EOF Exception для второго файла? –

Смежные вопросы