Первое, что вам нужно сделать, это загрузить ссылку на PDF. В наши дни это стандарт ISO, но вы можете скачать Acrobat SDK (http://www.adobe.com/devnet/acrobat.html), который содержит копию Adobe, которая будет служить вам точно также.
Читать главу 9. научу вас, что с одной стороны, вы должны понимать, текстовые операторы (Tj,»,», TJ), а с другой стороны, вы должны понимать, шрифты и кодировки.
Текстовые операторы - это операторы, которые вы можете перехватить, добавляя «строки» к PDF-документу, а все текстовые операторы должны появляться между блоками BT и ET, перехватывая эти блоки BT и ET сами по себе, не будут много для вас делать I
Шрифты важны, поскольку они определяют, как байты, используемые этими операторами, соответствуют действительным (Unicode) символам. Поэтому, если вы хотите получить значение байтов, которые вы получаете из файла PDF, вам нужно t o знать, как использовать шрифты для получения этого значения.
Некоторые дополнительные пункты:
Не думайте, что BT и ET соответствуют фактическим блока текста или абзаца, как вы можете знать его от таких приложений, как InDesign или Word. Один текстовый блок может содержать целую страницу или один символ (или ничего).
Существуют также операторы текстового состояния, которые определяют, как текст будет отображаться на странице. Есть способы, например, привлечь невидимый текст; вы можете или не захотите извлечь этот тип текста. Если вы этого не сделаете, вам нужно будет поддерживать достаточное количество операторов текстового состояния, что вы можете отличить.
Не маленькая задача :)
Update после просмотра образца PDF
Поскольку в комментариях вопрос был усовершенствован, чтобы указать извлечение текста определенного типа PDF-файла, позвольте мне добавьте немного дополнительной информации.
1) Если вы посмотрите на файл PDF, на который вы ссылаетесь, вы не сможете пропустить проблему с шрифтом/кодировкой. Шрифты в образце PDF-файла подмножества, что означает, что у вас нет «cleartext» в описании страницы PDF, а вместо этого индексы, которые должны отображаться через кодировку шрифтов, используемых для получения значимого текста.
2) Извлечение текста возможно, если вы посмотрите на следующий выход из pdfToolbox (предупреждение, я аффилированное довольно сильно с этим инструментом):
<page id="33">
<words>
<word txt="Senator">
<parts>
<part tlh="28.3481" tlv="868.534" trh="55.4455" trv="868.534" blh="28.3481" blv="859.902" brh="55.4455" brv="859.902"></part>
</parts>
</word>
<word txt="House,">
<parts>
<part tlh="57.5305" tlv="868.534" trh="82.123" trv="868.534" blh="57.5305" blv="859.902" brh="82.123" brv="859.902"></part>
</parts>
</word>
<word txt="85">
<parts>
<part tlh="84.208" tlv="868.534" trh="92.548" trv="868.534" blh="84.208" blv="859.902" brh="92.548" brv="859.902"></part>
</parts>
</word>
Есть, несомненно, и другие инструменты, которые могут дать аналогичный (или лучший) результат, поэтому извлечение текста само по себе должно быть выполнимым.
Большая проблема заключается в поиске текста, который вас интересует в правильном порядке. Выделение, которое я использовал здесь, дает текст каждого слова и его позиции (ограничивающий прямоугольник) на странице. Когда я просматриваю XML, когда вы попадаете в таблицу, проблема будет заключаться в том, какой текст принадлежит той ячейке таблицы, где заканчиваются строки и столбцы и т. Д.
В какой-то мере эта проблема сложнее, чем проблема просто обнаруживая строки текста, потому что вы имеете дело с довольно плотной таблицей (и где моя проблема была в основном одномерной (собирая все на одной линии), эта проблема двумерна.
Дэвид, большое спасибо за ясное объяснение. Очевидно, что это сложнее, чем ожидалось! Если возможно, я был бы очень благодарен за любые подробные рекомендации. Adobe Ref дает различные примеры того, как «абстрактный» текст (который я хочу) отличается от представления текста через « глифов ". В примере, представленном Adobe: BT /F13 48 Tf 20 38 Td 7 Tr (ABC) Tj ET - Есть ли советы о том, как мы можем просто нацелить буквы ABC, которые появляются в скобках (xxx ....) перед оператором «Tj»? – MikeLondonUK
Дэвид, я прочитал ваш комментарий с марта 2012 о «фокусе». Увлекательные комментарии о стандарте, который является универсальным в сегодняшнем возрасте «больших данных», когда столько данных хранится в формате PDF! Что касается вашей темы «фокус», возможно, у вас есть еще несколько мыслей, если я объясню, что мой основной упор делается на получение простого текста (например, «http://downloads.property.joneslanglasalle.co.uk/img/commercial_pdf_jll27452_1.pdf») и, в частности, сотни таблиц, подобных тому, который содержится на стр. 34). – MikeLondonUK
Здесь очень важно. Я согласен. Если вас интересует только извлечение этих данных, и вы знаете, что процесс, генерирующий эти файлы, не сильно меняется ... (big ifs:)) ... значимой стратегией может быть сборка этих файлов и создание уверен, что все они сформированы аналогичным образом. Используйте инструмент, например callas pdfToolbox (принадлежность!) Или браузер Enfocus, чтобы посмотреть, как создаются PDF-файлы. Это потенциально позволит вам пропустить все или большую часть кодировки/шрифтов. В этом случае ваша проблема может быть сведена к «простому» перехвату операторов рисования текста ... –