Настройка TextMatrix в iText

Я сгенерировал PDF-файл с рядом символов M. Каждая буква M имела одинаковую ширину, но расстояние между ними менялось: первая пара была 2 пикселя, пятая — 3 пикселя, затем следующие четыре — 2 пикселя, десятая — 3 пикселя и т. д.

Поскольку в моем коде нет абсолютно никакой разницы ни в каком из M или в каких-либо пробелах между ними, единственный вывод состоит в том, что некоторое значение ширины не может правильно масштабироваться в системе координат, время от времени генерируя дополнительный пиксель.

Вот как PDF вычисляет, насколько нужно сместиться по горизонтали при рисовании глифа:

введите здесь описание изображения

При расчете для стандартного дисплея с разрешением 96 точек на дюйм каждый пиксель представлен 0,75 единицами (тщательно проверено и протестировано).

Имея это в виду, мне нужно убедиться, что значение Tx делится на 0,75.

Вот что я знаю:

  1. w0 — целое число из массива ширин (widths[])
  2. Tfs — это число, кратное 0,75 (установлено мной)
  3. Th равно 100 (по умолчанию)
  4. Tc и Tw равны 0 (по умолчанию)

Таким образом, Tj/1000 должно быть целым числом, то есть Tj должно делиться на 1000.

Один из способов — получить и отрегулировать значение Tj. Другой подход к этому состоит в том, чтобы получить доступ к значению Tx после его расчета и просто изменить его на ближайшее значение, кратное 0,75.

Как это сделать в iText?

Или все мое предположение неверно?

Источник: ссылка (стр. 252)


person Karlovsky120    schedule 17.09.2013    source источник
comment
Как это сделать в iText? Скорее всего, ваше значение T_j всегда равно 0. Чтобы убедиться, предоставьте соответствующий PDF-файл.   -  person mkl    schedule 18.09.2013


Ответы (1)


Я видел, как этот вопрос задавали раньше здесь, на SO, и я действительно не понимаю, чего вы пытаетесь достичь. Если вы нарисовали буквы М на одинаковом расстоянии, они будут отображаться на одинаковом расстоянии. Вы столкнулись с ограничением технологии отображения, вызванным подгонкой пикселей.
Создание PDF-файла для отображения с точностью до пикселя с разрешением 96 точек на дюйм не является тем, для чего формат PDF был разработан. Даже если вы создадите такой PDF-файл, который будет отображаться так, как вы ожидаете, в одном средстве просмотра, у вас нет гарантии, что он будет отображаться так же в другом средстве просмотра.

person Mihai Iancu    schedule 17.09.2013
comment
Я хочу, чтобы все было в масштабе. Не беда, если у кого-то буквы будут шире, все остальное будет шире и выглядеть как надо. Как есть, некоторые линии имеют тенденцию выходить за поля страницы, если не за край, что мне не подходит. Я задавал его несколько раз, но каждый раз удалял последний вопрос и добавлял новый материал, который узнал. Эта штука ДЕЙСТВИТЕЛЬНО работала, когда я пытался вычислить вертикальные координаты. Теперь мне нужно как-то заставить его работать для горизонтальных, манипулируя шрифтом и его атрибутами... - person Karlovsky120; 18.09.2013
comment
Используйте форматирующий движок, который работает в нужном вам масштабе. Один предназначен для вывода на печать. У всего есть ограничение в том, как оно работает внутри и управляет позициями информации внутри. - person Kevin Brown; 18.09.2013