мне нужно сделать извлечение текста низкого уровня с использованием PRTokeniserнечитаемый шрифт с помощью iTextSharp PRTokeniser
Для некоторых PDF файлов все в порядке, но для некоторых других я получаю пустые строки (или, скорее, строка составлена пустые коробки или пустые персонажи).
Все такие файлы следуют схеме:
endobj
7 0 obj
<</BaseFont/RDZRPI+TimesNewRoman/FontDescriptor 8 0 R/Type/Font
/FirstChar 1/LastChar 10/Widths[ 444 500 444 500 444 333 500 500 278 250]
/Encoding 11 0 R/Subtype/TrueType>>
endobj
11 0 obj
<</Type/Encoding/BaseEncoding/WinAnsiEncoding/Differences[
1/a/b/c/d/e/f/g/h/i/space]>>
endobj
Каждый символ в маркере stringvalue не является ASCII или ANSI код, а индекс массива разностей. Например, если у меня есть строка типа «abc», я бы получил 1,2,3. Тогда iTextSharp понимал бы такие коды, как коды ASCII, и отображал бы их как пустые квадратные квадраты или любой другой символ.
Поэтому я должен был бы получить массив подмножество: номер 1 «а», номер 2 «б» ...
Проблема заключается в том, что массив basefont.differences имеет только пустые значения, и поэтому я не знаю, как перестроить строку.
С другой стороны, стратегия.GetResultantText правильно обрабатывает содержимое страницы, но мне нужно гораздо больше деталей, и я использую PRTokeniser, хотя я застрял в этой проблеме с шрифтом.
Любые идеи?
В PDF потоки все так:
/FirstChar 1/LastChar 8/Widths[ 722 444 278 500 250 944 333 500]
/Encoding 11 0 R/Subtype/TrueType>>
endobj
11 0 obj
<</Type/Encoding/BaseEncoding/WinAnsiEncoding/Differences[
1/H/e/l/o/space/W/r/d]>>
В этом случае есть только это предложение в формате PDF: Хеллоу Word. Поэтому массив символов будет:
1 H 2 e 3 l 4 o 5 space 6 W 7 r 8 d
Мне нужно найти такой массив, используя iTextSharp для того, чтобы расшифровать строку маркеров.
Благодаря
Это тоже не ответ (см моего комментария к вашему дополнительному «ответу» перечислена @ user584106 на этот вопрос), несмотря на upvote вы получили для этого. Пожалуйста, прочитайте мой комментарий к другому «ответу». Я не уменьшаю это из-за вашего нового статуса здесь, в SO, но вы должны лучше познакомиться с работой этого сайта, прежде чем потерять репутацию. :) –