Я пытаюсь извлечь некоторые текстовые данные из файла PDF.Для этого мне нужно знать, где какой-то текст печатается на странице, чтобы я мог сопоставлять местоположения различных фрагментов данных.Однако я застреваю, потому что не до конца понимаю поведение текстовой матрицы, установленной оператором Tm.
Tm (0.0, -5.28, 5.28, 0.0, 429.7006, 803.9603)
rg (0.617, 0.098, 0.043)
Tj '\x01'
Tm (0.0, -9.0, 9.0, 0.0, 428.1406, 784.8203)
rg (0.0, 0.219, 0.512)
Tc (2.4756,)
Tj '4567'
Это часть содержимого потока.Как видите, он имеет два вызова Tm, тесно связанных друг с другом.Весь обычный текст печатается в пространстве Tm (0.0, -9.0, 9.0, 0.0) - похоже, что пространство -5.28 / 5.28 используется только для печати некоторых специальных символов.Теперь я знаю, что последние два параметра Tm используются для установки текущего местоположения на новое, но кажется, что эти числа зависят от большего контекста (вероятно, шкалы 5.28 и 9.0, так или иначе).Однако я не могу понять, как все это сочетается, и спецификация (на странице 250 есть «объяснение») кажется мне совершенно бесполезной.
РЕДАКТИРОВАТЬ: расширенный пример, почему это меняflummoxed:
Tm 0 -27 27 0 545.5606 817.2203
(rg, Tc, Tw, Tj, Tf omitted)
TD 0.0156 -1.2556
Tm 0 -9 9 0 441.9406 677.4803
TD 10.6733 0 # more omitted, including other TD ops with second param 0
TD -82.7267 -1.5333 # start of a new line
Tc 0
Tj (3)
Tf /F2 1
Tm 0 -5.28 5.28 0 429.7006 803.9603
Tj ()
Tf /TT2 1
Tm 0 -9 9 0 428.1406 784.8203
Tc 2.4756
Tj (4567) # these appear on the same line as before the double Tm
В моем исходном коде я предполагал, что параметры e и f для Tm и параметры для TD находятся в одном пространстве, что приводит к организованным координатам.Однако здесь это не получается: 4567 в последнем Tj отображается в той же строке, что и предыдущие 3, тогда как координата y перешла из 677.4803 + -1.5333 = 675.947, но после последнего Tm координата оси y выглядит какустановить на 784,8203;предполагая, что "4567" должно быть нарисовано выше 3.