Скажите пожалуйста, есть ли в природе библиотечка, позволяющая парсить PDF файлы? Цель — повыдергать из них embedded images, и поскольку эти PDFки приходят со сканера, то я очень сомневаюсь, что в них есть что-либо, кроме этих картинок. Поэтому углубленное понимание встроенных фонтов, заполняемых таблиц, шифрования, яваскрипта и прочей PDFной премудрости не требуется, но библиотечка не должна падать от того, что ее накормили PDF-кой средней кривезны, и должна игнорировать все, что она не понимает, а не сходить от этого с ума.
Распаковка картинок тоже не требуется, мне бы их повыдергать, а распакую я уже сам.
Хотелось бы что-нибудь попроще, чем poppler, и лучше бы на C, чем на C++.
Здравствуйте, Pzz, Вы писали:
Pzz>С Новым Годом, дорогие товарищи!
Pzz>Скажите пожалуйста, есть ли в природе библиотечка, позволяющая парсить PDF файлы? Цель — повыдергать из них embedded images, и поскольку эти PDFки приходят со сканера, то я очень сомневаюсь, что в них есть что-либо, кроме этих картинок. Поэтому углубленное понимание встроенных фонтов, заполняемых таблиц, шифрования, яваскрипта и прочей PDFной премудрости не требуется, но библиотечка не должна падать от того, что ее накормили PDF-кой средней кривезны, и должна игнорировать все, что она не понимает, а не сходить от этого с ума.
Pzz>Распаковка картинок тоже не требуется, мне бы их повыдергать, а распакую я уже сам.
Pzz>Хотелось бы что-нибудь попроще, чем poppler, и лучше бы на C, чем на C++.
Здравствуйте, PM, Вы писали:
PM>Есть PDFium от гугла (бывшая FoxIt). Я использовал ее для извлечения текста, но в API вроде были функции для получения другой информации из документа: https://pdfium.googlesource.com/pdfium/+/refs/heads/master/public/
PM>Как типичная гугловская библиотека, эта идет без документации и вероятно потребует приседаний для сборки.
Это все-таки полномасштабная рендерилка. А мне бы что-нибудь попроще. В частности потому, что PDF по природе своей — это векторная графика, и чтобы полноценно его разрендерить, надо обладать куском памяти размером с целое изображение. А вот JPEG'и и прочие TIFF'ы можно декодировать построчно.
Я хочу получить картинку со сканера, и распаковывать ее по мере потребления, не заводя буфера на полную картинку. Потому что этот буфер, он дохрена, какой большой (полгига для листочка A4 с разрешением 1200 DPI). Поэтому мне бы выковырнуть из PDF'а эти картинки в их нативном виде (а они там JPEG/PNF/TIFF и т.п.), а дальше с этим нативным видом и разбираться. Т.е., для меня PDF — это такой ZIP-архив в дебильном формате
Здравствуйте, Pzz, Вы писали:
Pzz>Здравствуйте, RonWilson, Вы писали:
RW>>Вот, достаточно простая и небольшая
Pzz>Так это ж скорее программа, а не библиотека.
Ни-ни, там именно библиотека, пример в проге pdftotext, там просто прогу показывают на базе этой библиотеки, самой ей никакие qt к примеру не нужны.
Здравствуйте, RonWilson, Вы писали:
RW>Здравствуйте, Pzz, Вы писали:
Pzz>>Здравствуйте, RonWilson, Вы писали:
RW>>>Вот, достаточно простая и небольшая
Pzz>>Так это ж скорее программа, а не библиотека.
RW>Ни-ни, там именно библиотека, пример в проге pdftotext, там просто прогу показывают на базе этой библиотеки, самой ей никакие qt к примеру не нужны.
может что там изменилось, но как-то уже тут спрашивали про неё, вот архив
Здравствуйте, Pzz, Вы писали:
Pzz>С Новым Годом, дорогие товарищи!
Pzz>Скажите пожалуйста, есть ли в природе библиотечка, позволяющая парсить PDF файлы? Цель — повыдергать из них embedded images, и поскольку эти PDFки приходят со сканера, то я очень сомневаюсь, что в них есть что-либо, кроме этих картинок. Поэтому углубленное понимание встроенных фонтов, заполняемых таблиц, шифрования, яваскрипта и прочей PDFной премудрости не требуется, но библиотечка не должна падать от того, что ее накормили PDF-кой средней кривезны, и должна игнорировать все, что она не понимает, а не сходить от этого с ума.
Pzz>Я хочу получить картинку со сканера, и распаковывать ее по мере потребления. Pzz>Поэтому мне бы выковырнуть из PDF'а эти картинки в их нативном виде (а они там JPEG/PNF/TIFF и т.п.), а дальше с этим нативным видом и разбираться.
Парсер PDF именно в данной конкретной постановке задачи видится избыточной сущностью. За глаза хватит топорно-дуболомного libmagic-подобного детектора старта JPEG/PNG/TIFF-стрима. Вероятность 99.(9)%, что контент-стримы с изображением вставлены в PDF прямым текстом, и их можно просто-напросто выкусывать не обращая внимания на обрамление. Вряд ли авторам ПО для сканера пришло в голову так извращаться, чтобы заворачивать JPEG–стрим в какой-нибудь там DEFLATE–стрим, а его, в свою очередь, в, к примеру, AES–стрим
Здравствуйте, serj.e, Вы писали:
SE>Парсер PDF именно в данной конкретной постановке задачи видится избыточной сущностью. За глаза хватит топорно-дуболомного libmagic-подобного детектора старта JPEG/PNG/TIFF-стрима. Вероятность 99.(9)%, что контент-стримы с изображением вставлены в PDF прямым текстом, и их можно просто-напросто выкусывать не обращая внимания на обрамление. Вряд ли авторам ПО для сканера пришло в голову так извращаться, чтобы заворачивать JPEG–стрим в какой-нибудь там DEFLATE–стрим, а его, в свою очередь, в, к примеру, AES–стрим
Мда, бóльшие извращенцы, чем можно было предположить. В таком раскладе парсер нужен.
PS. Есть одна сишная, простая и удобная в интеграции библиотека mupdf, единственное, с фатальным недостатком в виде драконовской двойной лицензии (GPL v3 + Comercial с неразглашаемой ценой по запросу). Если условия лицензии подойдут, то всё, несвязанное со структурой документа (шрифты-рендеринги-кернинги и т.д.) оттуда довольно просто можно выпилить, если не хочется засорять продукт мертвым кодом.