Найти абсолютное положение и размер поля по acrokey
Имеется ли условный знак, возможно ли найти абсолютную позицию и размерность этого конкретного поля (getLeft, getTop, getWidth, getHeight)?
И возможна ли наоборот - если я знаю позицию, могу ли я получить акрокейку на поле?
1 ответ
Первая часть вашего вопроса:
Предположим, что у вас есть AcroFields
пример (form
) либо получены из PdfReader
(только чтение) или PdfStamper
экземпляр, тогда вы можете получить позицию поля первого виджета, который соответствует определенному полю name
как это:
Rectangle rectangle = form.getFieldPositions(name).get(0).position;
Обратите внимание, что одно поле может соответствовать нескольким виджетам. Например, чтобы получить второй виджет, вам нужно:
Rectangle rectangle = form.getFieldPositions(name).get(1).position;
Конечно, вы, вероятно, также хотите знать номер страницы:
int page = form.getFieldPositions(name).get(0).page;
Вторая часть вашего вопроса
Поля соответствуют аннотациям виджетов. Если вы знаете номер страницы аннотации виджета, вы можете получить словарь страницы и проверить записи /Annots
массив. Вам придется циклически проходить различные аннотации, проверяя каждую аннотацию. /Rect
запись. Как только вы найдете совпадение, вам нужно просканировать содержимое поля, соответствующего аннотации. Это больше работы, чем можно представить в примере кода на этом сайте.