Ответ 1
В целом PDFBox использует координаты пространства пользователя PDF при создании PDF. Это означает:
-
Координаты страницы разделяются символом CropBox по умолчанию на MediaBox, значения увеличиваются слева направо и снизу вверх. Таким образом, если вы создаете страницу с помощью
new PDPage()
илиnew PDPage(PDPage.PAGE_SIZE_*)
, начало координат начинается в левом нижнем углу страницы. -
Единица в пространстве пользователя начинается как единица пространства пользователя по умолчанию, которая определяется UserUnit страницы. Чаще всего (например, если вы создаете страницу с помощью любого из конструкторов
PDPage
и не меняете явное значение этого значения), она явно не задана и, следовательно, ее удары по умолчанию равны 1/72 дюйма. -
Система координат пользовательского пространства может быть изменена довольно произвольно путем конкатенации некоторая матрица к текущей матрице преобразования. Текущая матрица преобразования начинается как единичная матрица.
В PDFBox вы делаете это, используя одну из перегрузок
PDPageContentStream.concatenate2CTM()
. -
Как только вы переключаетесь в текстовый режим с помощью
PDPageContentStream.beginText()
, на используемую систему координат также влияет преобразование, введенное текстовой матрицей.В PDFBox вы устанавливаете текстовую матрицу, используя одну из перегрузок
PDPageContentStream.setTextMatrix()
.
Поскольку вы новичок в PDFBox (как вы говорите) и новичок в PDF в целом (как я полагаю, потому что иначе вы бы узнали координаты), я бы посоветовал вам сначала воздерживаться от использования преобразований, где это возможно, и, следовательно, остаются в состоянии, когда система координат начинается в левом нижнем углу, ни поворачивается, ни перекошена и имеет единицу длины 1/72 дюйма.
В этом контексте вы можете использовать константы, предоставленные PDFBox для преобразования:
- Умножить координаты в дюймах на
PDPage.DEFAULT_USER_SPACE_UNIT_DPI
, чтобы получить координаты пространства пользователя по умолчанию. - Умножить координаты в мм на
PDPage.MM_TO_UNITS
, чтобы получить координаты пространства пользователя по умолчанию.
Если вы хотите повеселиться с координатами, посмотрите на спецификацию PDF ISO-32000-1 и изучите разделы 8.3 Системы координат и 9.4.4 Детали текстового пространства.