Я не знаю, как получить положение «строки» в PDF с помощью iText, но я знаю, как получить положение поля формы в PDF с помощью iText.Форма, если вы не знаете этот термин, представляет собой документ PDF с полями, которые названы и могут быть заполнены конечным пользователем, если форма представлена в среде, где это возможно.
Высоздайте PdfWriter и PdfReader, получите шаблон формы, а затем коллекцию того, что iText называет «AcroFields»:
Document document = new Document(PageSize.LETTER, 18, 18, 18, 18);
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(<<fileoutputpath>>);
DirectContent content = write.getDirectContent();
PdfReader reader = new PdfReader("<pdf form file specification>");
PdfImportedPage template = writer.getImportedPage(reader, 1); // gets first page
AcroFields acroFields = reader.getAcroFields();
создатель формы даст имя поля каждому из заполняемых полей;Вы можете получить позицию и размер прямоугольника, покрываемого этим полем с таким именем:
float[] positions = acroFields.getFieldPositions("<fieldName>");
, а затем записать свое значение в эту позицию вместо имени поля:
ColumnText columnText = new ColumnText(contentByte);
columnText.setSimpleColumn(new Phrase(value, fontToUse), pos1, pos2, pos3, pos4, Element.ALIGN_LEFT, false);
columnText.go(false);
Я знаю, что это довольно сложно, и, к сожалению, все еще не полностью, но я не хотел объяснять это полностью, прежде чем я / мы даже узнаем, что использование формы - вариант для вас.Библиотека iText сделает это, но у меня нет простого способа сделать это, о котором я знаю.