Извлечь оглавление из PDF?
Я извлекаю PDF в images / swf и текст с помощью SWFTools и XPDF.. Я запускаю их в сценарии PDF.
Но теперь я пытаюсь сделать еще один шаг вперед и попытаться получить оглавление из PDF. Можно ли извлечь эту информацию?
4 ответа
Я нашел это с небольшим поиском. Это выглядит довольно многообещающе.
PDFMiner: http://www.unixuser.org/~euske/python/pdfminer/index.html
Примечание: инструмент основан на Python, но вы должны иметь возможность использовать инструмент через доступ к оболочке. Кроме того, вы можете получить некоторую полезную информацию из самого исходного кода, так как проект с открытым исходным кодом.
С сайта:
dumppdf.py
dumppdf.py выдает внутреннее содержимое файла PDF в псевдо-XML-формате. Эта программа в первую очередь для целей отладки, но также возможно извлечь некоторое значимое содержимое (например, изображения).
Примеры:
$ dumppdf.py -a foo.pdf (dump all the headers and contents, except stream objects) $ dumppdf.py -T foo.pdf (dump the table of contents) $ dumppdf.py -r -i6 foo.pdf > pic.jpeg (extract a JPEG image)
Я старался dump.pdf -T
, но он не работал на некоторых файлах PDF.
Есть еще один инструмент от MuPDF, названный mutool
, который я только что нашел. Я не знаю, если это лучше, чем dump.pdf, но работал над файлом PDF. Dump.pdf выдает ошибку.
Вот как извлечь TOC с помощью mutool
mutool show {your-pdf-file} outline
В качестве альтернативы, вы можете использовать MuPDF, который является довольно легковесной, но полной реализацией PDF, написанной C. apps/
В подкаталоге вы найдете несколько инструментов, которые могут просматривать, выгружать и извлекать информацию из файлов PDF. Я бы предпочел MuPDF, а не xpdf, потому что он активно поддерживается и имеет лучшую поддержку PDF.
В противном случае всегда есть Poppler, который на самом деле основан на xpdf. Разработчики портировали его код на C++. Следовательно, он работает хуже, чем его предшественник. По сравнению с MuPDF, у Poppler, похоже, немного больше возможностей, но в свою очередь код гораздо сложнее.
Для ваших целей MuPDF должно быть достаточно, хотя. Вы можете взломать простое приложение из примера кода, представленного в apps/
который извлекает всю необходимую информацию, не полагаясь на внешние приложения.
Я думаю, что просмотр PHPLib PDF был бы очень хорошим местом для начала. Если вы прокрутите вниз, вы увидите множество пользовательских решений для преобразования PDF в HTML или PDF в текст. После преобразования относительно простая функция сопоставления может извлекать тегированные элементы оглавления и, например, выбрасывать их в массив, которым вы можете манипулировать по своему усмотрению.
В этом посте Stackru также есть еще несколько решений.
Надеюсь это поможет.