найти текстовую позицию в формате pdf - PullRequest
0 голосов
/ 07 ноября 2019

Я борюсь с расчетом положения текста в PDF. Я прочитал в Интернете, но безуспешно.
Я прочитал ссылку в формате PDF, но это ммм.
Теперь я напишу кусок PDF и расскажу, что я об этом думаю ...

/TT3 1 Tf
11.9951 0 0 12 71.94 420.9803 Tm     //scale x=11.9951  scaley=12   x position=71.94 y position=420.9803
<0003>Tj
/TT2 1 Tf
1.6657 -1.22 TD   //x position=71.94+1.6657 y position=420.9803-1.22
-.0016 Tc
(2\))Tj   //x position=71.94+1.6657-0.0016 y position=420.9803-1.22
/TT6 1 Tf
.8203 0 TD   //x position=71.94+1.6657-0.0016+0.8203
0 Tc
( )Tj
/TT3 1 Tf
10.016 0 0 10.02 71.94 237.6803 Tm  //x position=71.94 y position=237.6803
<0003>Tj
/TT2 1 Tf

Я уверен, что что-то не так, потому что с помощью этого метода последовательность не перестраивается правильно.
Спасибо большое.

1 Ответ

0 голосов
/ 08 ноября 2019

Прежде всего вы не должны пытаться отслеживать несколько скаляров по отдельности, но вместо всей текущей текстовой матрицы и матрицы текстовых строк.

Затем вы извлекли эти инструкции из контекста. Таким образом, мы должны предположить, что соответствующие инструкции не предшествовали им.

Таким образом, мы начинаем с текстовой матрицы и матрицы текстовой строки, равной единичной матрице.

/TT3 1 Tf
11.9951 0 0 12 71.94 420.9803 Tm

Это устанавливает для текстовой матрицы и матрицы текстовой строки значение

11.9951  0       0
 0      12       0
71.94  420.9803  1

Затем

<0003>Tj

увеличивает текстовую матрицу на ширину этой строки,Поскольку я не знаю метрики TT3 , я не могу определить результирующую текстовую матрицу.

/TT2 1 Tf
1.6657 -1.22 TD

Это умножает

1       0    0
0       1    0
1.6657 -1.22 1

на матрицу текстовой строки слева, в результате чего получается новая матрица текстовой строки (слегка округленная)

11.9951    0       0
 0        12       0
91.92    406.3403  1

Тогдатекстовая матрица тоже установлена ​​на это значение.

(2\))Tj

Это увеличивает текстовую матрицу на ширину этой строки. Поскольку я не знаю метрики TT2 , я не могу определить результирующую текстовую матрицу. Я даже не знаю, представляет ли эта строка в TT2 один или два глифа. Таким образом, я не могу сказать, как часто применяется интервал между символами.

/TT6 1 Tf
.8203 0 TD

Это умножает

1       0    0
0       1    0
0.8203  0    1

на матрицу текстовой строки слева, что приводит к новой матрице текстовой строки (немного округлено)

 11.9951    0       0
  0        12       0
101.76    406.3403  1

Теперь

0 Tc
( )Tj

Это увеличивает текстовую матрицу на ширину этой строки. Поскольку я не знаю метрики TT6 , я не могу определить результирующую текстовую матрицу.

/TT3 1 Tf
10.016 0 0 10.02 71.94 237.6803 Tm

Это устанавливает для текстовой матрицы и матрицы текстовых строк значение

10.016    0        0
0        10.02     0
71.94   237.6803   1
...