PDF: понимание чисел в массиве при использовании оператора TJ - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь выяснить, как вы должны использовать числа в массиве оператора TJ в файле PDF.

Я использую пример:

[(A)120(W)120(A)95(Y again)]TJ

Как использовать цифры?

  1. Должны ли они обрабатываться индивидуально?
  2. Должно ли число использоваться со строкой перед ним для вычисления первого символа этой строки перед ним? например: (A) + 120
  3. Должно ли число использоваться со строкой позади него для вычисления первого символа этой строки за ним? например: 120 + (Вт)
  4. Другой вариант?

До сих пор я пытался справиться с этим индивидуально, но без хороших результатов.

Будем рады прочитать ваши ответы / комментарии, чтобы лучше их понять. (Надеемся, что другие вычисления для комбинированного смещения верны).

Другой пример массива:

[(1.1)-1753(A)1(bo)-7(ut This Book)]TJ

обновление:

образец файла, который я тестирую: http://www.filedropper.com/9mei2018reduced

"плохой" результат:

enter image description here

Массив со строками и числами для TJ:

[(1)-100(0)-99( )-101(m)-100(e)-100(i)-99( )-101(1)-100(9)-99(1)-100(8)
-99( )-101(d)-99(e)-100( )-101(r)-99(a)-101(i)-99(d)-100(s)-100( )-101(o)
-100(p)-100( )-100(O)-100(o)-100(s)-100(t)-100(e)-100(n)-100(d)-99(e)]TJ

При расчете Tx я обрабатываю строки и числа отдельно. Для вычислений чисел (-100, -99, -101, ...), когда я добавляю ширину глифа 100 вместо 0 для параметра w0, результат в порядке ... но я не могу сохранить это Значение w0 (100) для чисел, так как 98% других файлов pdf неверно с этим значением.

1 Ответ

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

Уравнение

Похоже, вы пытаетесь интерпретировать уравнение

tx = ((w0 - Tj/1000) * Tfs + Tc + Tw) * Th

в глифе вместо текстового пространства, по крайней мере, значения, которые вы вставляете, указывают на это. Вместо этого интерпретируйте его в текстовом пространстве независимо от типа шрифта.

В частности:

  • w0 - использовать ширину соответствующего символа из массива ширины в словаре шрифтов PDF и разделить его на 1000; Я ожидаю, что значение около 0,667 для столицы А.
  • Tj - использовать значение из параметра операционного массива TJ , например, 120.
  • Tfs - использовать размер шрифта из графического состояния, которое является параметром размера шрифта из соответствующей операции Tf , например, 10.
  • Tc - использовать значение из графического состояния, которое является параметром соответствующей Tc или " операции.
  • Tw - используйте 0 или (в случае однобайтового кода символа 32) значение из графического состояния, которое является параметром из соответствующих Tw или " работа.
  • Th - использовать значение из графического состояния, которое является параметром соответствующей операции Tz , деленное на 100.

Ваш файл примера

К сожалению, вы не показываете x координаты вашего кода, рассчитанного для происхождения глифов, поэтому я не могу сказать, неверны ли ваши вычисления или что-то еще в вашем коде.

Поскольку значения в основном тривиальны (размер шрифта 1, без Tc или Tw, Th 1), я вручную вычислил x координаты происхождения глифов для первых нескольких символов:

character   x coordinate
'1'         734.204784
'0'         745.564784
' '         756.908784
'm'         765.452784
'e'         779.468784
'i'         790.012784
' '         796.076784
'1'         804.620784
'9'         815.980784
'1'         827.324784
'8'         838.684784
' '         850.028784
'd'         858.572784

Согласно вашему изображению, ваши координаты здесь уже довольно неправильны.

Координаты, которые я вычислил, кажутся правильными, хотя, в частности, они соответствуют координатам инструкций векторной графики, рисующим «тени» глифов.

Таким образом, пожалуйста, сравните с координатами, рассчитанными вашим кодом. Если ваши отличаются, в частности, если они различаются в большей степени, вы все равно не выполняете вычисления, как описано выше, по крайней мере, не совсем точно (возможно, вы используете числовой тип, который является слишком потерянным в этих вычислениях?). Если ваши не отличаются, то ваша проблема не в расчете координат, а в их использовании; Вы, в частности, затем используете их по-разному для текста и инструкций по векторной графике.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...