gpt4 book ai didi

java - 如何处理具有相同名称的表单字段?

转载 作者:行者123 更新时间:2023-12-01 18:46:39 25 4
gpt4 key购买 nike

我有一个 PDF 文件,其中包含一个表单,其中的字段具有相同的字段名称。这样做是为了共享文档中的数据。例如,我有契约(Contract),该文档的每一页都必须有公司名称,并且我在一个表单字段中写入公司名称,并将其复制到当前文档中的所有页面,但是当我尝试使用 阅读该文档时itext7 库我没有获取此数据,因为 itext7 仅创建一个带有字段名称的字段,其他字段已清理。

PdfFormField field = acroform.getFormFields().values().get(0);
if(field.getFieldName().equals(“my_company”)) {
List<PdfWidgetAnnotation> list = field.getWidgets();
if(pdf.getPageNumber(list.get(0).getPage()) == 1). { // because I have this text on page 1, but this code return page = 7, because is the last page of the document which contains this text field.

}
}

如何使用itext7库读取具有相同字段名称的字段?

最佳答案

我找到了解决问题的方法。我从放置在 PdfDocument 类中的 Catalog 获取了所有字段。代码如下所示:

public List<PdfFormField> getFields() {
final List<PdfFormField> pdfFormFields = new ArrayList<>();
final PdfDictionary acroFormDict = pdf.getCatalog().getPdfObject().getAsDictionary(PdfName.AcroForm);
if (acroFormDict != null) {
final PdfArray fields = acroFormDict.getAsArray(PdfName.Fields);
if(fields != null) {
fillPdfFormFields(fields, pdfFormFields);
}
}
return pdfFormFields;
}
private List<PdfFormField> fillPdfFormFields(PdfArray array, List<PdfFormField> fields) {
array.forEach(pdfObject -> {
final PdfFormField field = PdfFormField.makeFormField(pdfObject, pdfFile);
fields.add(field);
final PdfArray fieldKids = field.getKids();
if (fieldKids != null) {
fillPdfFormFields(fieldKids, fields);
}
});
return fields;
}

关于java - 如何处理具有相同名称的表单字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59823802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com