Чтение информации о цвете шрифта из PDF - PullRequest
4 голосов
/ 28 сентября 2011

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

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

Я почесал гугл, без радости.

Заранее спасибо!

1 Ответ

4 голосов
/ 28 сентября 2011

Цвет текста и другой заполненной графики устанавливается с помощью одного из операторов g, rg или k в объекте потока содержимого в файле PDF, как описано в разделе 4.5.7 Цвет Операторы в справочном руководстве PDF.

Пример G.3 Пример простой графики в справочном руководстве показывает, что эти операторы используются для обводки и заливки некоторых фигур (но не текста).

http://www.adobe.com/devnet/pdf/pdf_reference.html

При самостоятельном разборе файла PDF вы начинаете с чтения трейлера в конце файла, который содержит смещение файла таблица перекрестных ссылок . Эта таблица содержит смещение файла каждый объект в файле PDF. Объекты в древовидной структуре со ссылками к другим объектам. Один из объектов будет поток контента. Это описано в разделах 3.4 Структура файла и 3.6 Структура документа в справочном руководстве в формате PDF.

Можно проанализировать файл PDF самостоятельно, но это довольно много работы. Содержимое поток может быть сжат, содержать ссылки на другие объекты, содержать комментарии и т. д., и вы должны рассмотреть все эти случаи.

Программное обеспечение PDFMiner уже читает поток контента. Возможно это было бы проще расширить PDFMiner, чтобы сообщить цвет текста тоже?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...