Можно ли извлечь файлы TIFF из PDF без внешних библиотек? - PullRequest
2 голосов
/ 13 августа 2011

Мне удалось использовать код Питона Неда Батчелдера , который я преобразовал в C ++, для извлечения jpgs из PDF-файлов.Мне интересно, можно ли использовать эту же технику для извлечения файлов TIFF, и если да, знает ли кто-нибудь соответствующие смещения и маркеры для их поиска?Спасибо, Дэвид

Ответы [ 2 ]

3 голосов
/ 13 августа 2011

PDF-файлы могут содержать разные данные изображения (что неудивительно).

Наиболее распространенные случаи:

  • Данные факса (CCITT Group 3 и 4)
  • необработанные растровые данные с параметрами декодирования и необязательной палитрой, сжатые с использованием сжатия Deflate или LZW
  • Данные JPEG

В последнее время я (как разработчик библиотеки PDF) начинаю замечать все больше и больше PDF-файлов с данными изображений JBIG2. Кроме того, JPEG2000 иногда может быть помещен в PDF.

Я должен сказать, что вы, вероятно, можете извлекать данные JPEG / JBIG2 / JPEG2000 в соответствующие файлы *.jpeg / *.jp2 / *.jpx без внешних библиотек, но будьте готовы ко всем видам странных PDF-файлов, генерируемых испорченными генераторами. Кроме того, в PDF-файлах довольно часто используются потоки объектов, поэтому вам потребуется реализовать сложный парсер для PDF.

Данные факса (т. Е. То, что вы, вероятно, называете TIFF) должны быть как минимум упакованы в действительный TIFF. Вы можете позаимствовать некоторый код для этого, например, из libtiff с открытым исходным кодом.

А потом приходят необработанные растровые данные. Я не думаю, что имеет смысл пытаться извлечь такие данные без помощи библиотеки. Конечно, вы могли бы сделать это, но это займет месяцы работы.

Итак, если вы пытаетесь извлечь только определенный тип данных изображения из набора PDF-файлов, созданных с помощью одного и того же генератора, то ваша задача, вероятно, выполнима. Во всех остальных случаях я бы порекомендовал сэкономить время, деньги и волосы и использовать библиотеку для выполнения задачи.

1 голос
/ 13 августа 2011

Файлы PDF хранят Jpegs как фактические файлы JPEG (кодирование DCT и JPX), поэтому в большинстве случаев вы можете копировать данные.С Tiffs вы ищете данные CCITT (но вам нужно будет добавить заголовок к данным, чтобы сделать их Tiff).Я написал 2 статьи в блогах об изображениях в файлах PDF в http://www.jpedal.org/PDFblog/2010/09/understanding-the-pdf-file-format-images/ и http://www.jpedal.org/PDFblog/2011/07/extract-raw-jpeg-images-from-a-pdf-file/, которые могут помочь.

...