Размещение цифровых подписей в PDF-файлах с использованием пользовательских координат (с использованием структуры надувного замка)

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

 PdfReader reader = new PdfReader(src);//src being file path of pdf being signed
 Rectangle cropBox = reader.getCropBox(1);
 if(signaturePosition.equalsIgnoreCase("bottom-left"))
           appearance.setVisibleSignature(new Rectangle(cropBox.getLeft(), cropBox.getBottom(),
                  cropBox.getLeft(width), cropBox.getBottom(height)), 1,    "first");
           if(signaturePosition.equalsIgnoreCase("bottom-right"))
               appearance.setVisibleSignature(new Rectangle(cropBox.getRight(width), cropBox.getBottom(),
                       cropBox.getRight(), cropBox.getBottom(height)), 1,    "first");
           if(signaturePosition.equalsIgnoreCase("top-left"))
               appearance.setVisibleSignature(new Rectangle(72, 732, 144, 780), 1,    "first");
           if(signaturePosition.equalsIgnoreCase("top right"))
               appearance.setVisibleSignature(new Rectangle(cropBox.getRight(width), cropBox.getTop(height),
                     cropBox.getRight(), cropBox.getTop()), 1,    "first");

Требуется разместить подпись в любом месте PDF, в зависимости от координат, предоставленных пользователем. Чтобы получить координаты пользователя, мы используем шаблон pdf xpro с помещенным над ним текстовым полем (пользователь загрузит шаблон и поместит текстовое поле там, где ему требуется подпись), используя координаты этого текстового поля с его высотой и шириной. поместите подпись в PDF.

Мне нужна помощь в понимании того, как метод origin.setVisibleSignature () работает с объектом Rectangle, переданным ему, потому что для каждого квадранта страницы (рассматривая центр страницы как источник) параметры передаются по-разному для верхнего левого, верхнего правого внизу слева и внизу справа соответственно.

1 ответ

Решение

ФП пояснил в (пока что удаленном) комментарии:

Я прошу объяснить ширину передаваемой высоты в качестве параметра для функций getTop(),getLeft() и т.д. Это не ясно.

Эти методы определены как:

// Returns the lower left y-coordinate, considering a given margin.
public float getBottom(final float margin) {
    return lly + margin;
}

// Returns the lower left x-coordinate, considering a given margin.
public float getLeft(final float margin) {
    return llx + margin;
}

// Returns the upper right x-coordinate, considering a given margin.
public float getRight(final float margin) {
    return urx - margin;
}

// Returns the upper right y-coordinate, considering a given margin.
public float getTop(final float margin) {
    return ury - margin;
}

( Rectangle.java)

Т.е. эти методы возвращают максимальную или минимальную координату x или y, сдвинутую внутрь на заданное расстояние. В вычислениях, которые вы скопировали выше, эти методы использовались просто как замена некоторых дополнений или вычитаний.

в идеале прямоугольник - это верхняя левая координата в качестве первых двух координат, а высота и ширина в качестве двух других координат,

То, что человек считает идеальным, зависит от обстоятельств. Здесь у нас есть конструктор

/**
 * Constructs a <CODE>Rectangle</CODE> -object.
 *
 * @param llx   lower left x
 * @param lly   lower left y
 * @param urx   upper right x
 * @param ury   upper right y
 */
public Rectangle(final float llx, final float lly, final float urx, final float ury)

( там же)

Итак, сначала у вас есть нижний левый x и y, затем верхний правый x и y. Другими словами, вы оставили x, нижний y, правый x, верхний y.

но это делается по-другому. Запросить понимание этого.

Если у вас есть верхние левые координаты, ширина и высота, эти необходимые координаты легко рассчитать.

Кстати, я надеюсь, вы знаете, что в PDF система координат пользовательского пространства по умолчанию может иметь свое начало в любом месте на странице или за ее пределами (установите флажок обрезки), и что (как это часто встречается в математике) координаты x увеличиваются вправо, а y координаты увеличиваются вверх.

Другие вопросы по тегам