Исключение позиционирования Itext7 - PullRequest
1 голос
/ 14 января 2020

Для электроники c подпись, исходные координаты должны быть от нижнего левого угла до верхнего правого угла. Но некоторые страницы превратятся в верхний левый угол и верхний правый угол. Что мне делать

1 Ответ

0 голосов
/ 15 января 2020

Вы предполагаете, что для аннотаций, в частности аннотаций виджета поля формы подписи,

исходные координаты должны быть из левого нижнего угла

и в комментарии укажите пример

Я использую следующий код. Координата начала координат - это левый нижний угол

Rectangle rect = new Rectangle(0, 0, 200, 100);
appearance.setPageRect(rect);

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

На самом деле даны диапазоны координат видимой области страницы с помощью записи CropBox на соответствующей странице:

CropBox прямоугольник (необязательно; наследуемый) прямоугольник, выраженный у пользователя по умолчанию космические единицы, которые должны определять видимую область пространства пользователя по умолчанию. Когда страница отображается или печатается, ее содержимое должно быть обрезано (обрезано) до этого прямоугольника.

(ISO 32000-1 Таблица 30 - Записи в объекте страницы)

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

Используя iText 7, вы позиционируете PdfSignatureAppearance appearance на PdfPage page относительно его нижнего левого угла следующим образом:

Rectangle crop = page.getCropBox();
Rectangle rect = new Rectangle(crop.getLeft() + 0, crop.getBottom() + 0, 200, 100);
appearance.setPageRect(rect);

(getCropBox уже учитывает, что CropBox наследуется, проверяя узлы-предки в дереве Pages , а также является необязательным, если по умолчанию используется MediaBox страницы.)

...