С помощью iText 5 я хотел бы извлечь все изображения TIFF из заданного файла PDF и сохранить их как файлы TIFF.
Примеры и другие посты ( 1 , 2 ) используют следующий метод:
- Создать
PdfImageObject
из потока PDF, который в строке 189 декодирует поток изображения (если имеется соответствующая реализация фильтра).
- Вызов
PdfImageObject#getImageAsBytes()
, который возвращает JPEG (оригинал), PNG (перекодированный) или TIFF (в случае 8 бит на пиксель).
В результате изображение TIFF с глубиной цвета 1 бит преобразуется в формат PNG, а это не то, что мне нужно.
Другой подход заключается в вызове PdfImageObject#getBufferedImage()
, который декодирует изображение на шаге (2) в растр, а затем снова кодирует его как TIFF, используя ImageIO.write(bufferedImage, "tiff", file)
.
Как видно, это неэффективно. Другое решение, показанное в этой публикации , демонстрирует, как сохранить закодированный поток изображений TIFF в файл, добавив к нему заголовок TIFF - это решение, которое я ищу.
Может ли тут помочь iText?