Вы должны иметь возможность установить прямоугольник выбора на pageSize/MediaBox
страницы и получить весь текст.
Я должен сказать, потому что прежде чем вы начнете задаваться вопросом, почему вы удивляетесь выводу poppler_page_get_text
, вы должны знать, как текст размещается на странице. Вся графика размещается на странице с помощью программы, выраженной в пост-исправлении. Для рендеринга страницы эта программа выполняется на пустой странице.
Операции в программе могут включать в себя изменение цвета, положения, текущей матрицы преобразования, рисование линий, кривые Безье и так далее. Текст размещается рядом текстовых операторов, которые всегда заключены в квадратные скобки BT (начальный текст) и ET (конечный текст). Как или где текст размещается на странице, остается на усмотрение программного обеспечения, генерирующего PDF. Например, для драйверов печати код отвечает на вызовы GDI для DrawString
и преобразует это в операции рисования текста.
Если вам повезет, текст на странице выложен в разумном порядке с использованием вменяемого шрифта, но многие программы, которые генерируют PDF, не так добры. Psroff
, например, понравилось размещать сначала весь обычный текст, затем курсив, затем жирный текст. Слова могут или не могут быть размещены в порядке чтения. Шрифты могут быть перекодированы так, что 'a'
отображается на '{'
или что-то еще. Тогда у вас могут быть лигатуры, в которых несколько символов заменены одиночными глифами - наиболее распространенными являются ae
, oe
, fi
, fl
и ffl
.
Имея все это в виду, процесс извлечения текста определенно нетривиален, так что не удивляйтесь, если увидите результаты низкого качества при извлечении текста.
Раньше я работал над инструментами извлечения текста в Acrobat 1.0 и 2.0 - это настоящая проблема, чтобы получить право.