繁体   English   中英

如何获取特定pdf表单字段的页码和位置,并在iText7中的位置插入表格?

[英]How can I get the page number and position for a specific pdf form field and insert a table in it's place in iText7?

我想在表格字段的位置插入一个表格。 如何获取表单字段的位置和页码? 如何在该位置插入表格?

//Retrieves AcroForm from the document.
//If there is no AcroForm in the document Catalog and createIfNotExist
//flag is true then the AcroForm dictionary will be created and added to the document.
PdfAcroForm acroForm = PdfAcroForm.getAcroForm(pdfDoc, true);
//Gets the form fields as a Map.
Map<String, PdfFormField> fields = acroForm.getFormFields();
//Create Table
Table table = new Table(new float[]{1,1});
table.setHorizontalAlignment(HorizontalAlignment.CENTER);
table.setWidthPercent(95);  
Cell cell = new Cell();
cell.add(new Paragraph("Name"));
//cell.setBorder(Border.NO_BORDER);
table.addCell(cell);
Cell cell = new Cell();
cell.add(new Paragraph("Address"));
//cell.setBorder(Border.NO_BORDER);
table.addCell(cell);
...
...
doc.add(table);
...

字段本身没有任何位置或页码。 但是,它的小部件注释确实可以。

要访问这些内容,可以使用field.getWidgets() 然后,您可以使用annotation.getPage()annotation.getRectangle()来获取有关批注位置的信息。

要在某个特定位置布局单个元素,最好的选择之一是使用Canvas布局对象。 然后可以使用page.removeAnnotation(annotation);删除page.removeAnnotation(annotation);

总体而言,这可编译为以下解决方案:

String fieldName = "Text1";
PdfFormField field = form.getField(fieldName);

for (PdfAnnotation annotation : field.getWidgets()) {
    PdfPage page = annotation.getPage();
    Rectangle rectangle = annotation.getRectangle().toRectangle();

    Table table = new Table(UnitValue.createPointArray(new float[] {-1, -1}));
    table.setHorizontalAlignment(HorizontalAlignment.CENTER);
    Cell cell = new Cell();
    cell.add(new Paragraph("Name"));
    table.addCell(cell);
    cell = new Cell();
    cell.add(new Paragraph("Address"));
    table.addCell(cell);

    Canvas canvas = new Canvas(new PdfCanvas(page), pdfDocument, rectangle);
    canvas.add(table);
    canvas.close();

    page.removeAnnotation(annotation);
}

当然,您将必须完全负责创建适当大小的桌子,以使其适合您想要的区域。 您可以使用较小的字体大小等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM