使用 pdfbox 获取表单字段值

Ski*_*zzo 3 java pdf pdfbox

我第一次使用pdfbox。现在我正在阅读网站上的一些东西Pdf

总结一下我有一个这样的pdf:

在此处输入图片说明

只是我的文件有很多不同的组件(textField、RadionButton、CheckBox)。对于此 pdf,我必须阅读以下值:Mauro、Rossi、MyCompany。现在我写了以下代码:

PDDocument pdDoc = PDDocument.loadNonSeq( myFile, null );
PDDocumentCatalog pdCatalog = pdDoc.getDocumentCatalog();
PDAcroForm pdAcroForm = pdCatalog.getAcroForm();

for(PDField pdField : pdAcroForm.getFields()){
    System.out.println(pdField.getValue())
}
Run Code Online (Sandbox Code Playgroud)

这是读取表单组件内值的正确方法吗?对此有何建议?我在哪里可以在 pdfbox 上学到其他东西?

Joh*_*lly 5

您拥有的代码应该可以工作。如果您真的想对这些值做一些事情,您可能需要使用其他一些方法。例如,您可以使用pdAcroForm.getField(<fieldName>)以下方法获取特定字段:

PDField firstNameField = pdAcroForm.getField("firstName");
PDField lastNameField = pdAcroForm.getField("lastName");
Run Code Online (Sandbox Code Playgroud)

请注意,这PDField只是一个基类。您可以将事物转换为子类以从中获取更多有趣的信息。例如:

PDCheckbox fullTimeSalary = (PDCheckbox) pdAcroForm.getField("fullTimeSalary");
if(fullTimeSalary.isChecked()) {
    log.debug("The person earns a full-time salary");
} else {
    log.debug("The person does not earn a full-time salary");
}
Run Code Online (Sandbox Code Playgroud)

正如您所建议的,您可以在 apache pdfbox 网站上找到更多信息。