gpt4 book ai didi

java - 如何使用pdfbox获取PDF表单文本域的内容?

转载 作者:行者123 更新时间:2023-11-30 07:04:50 29 4
gpt4 key购买 nike

我正在使用它通过 org.apache.pdfbox 获取 PDF 文件的文本

File f = new File(fileName);  
if (!f.isFile()) {
System.out.println("File " + fileName + " does not exist.");
return null;
}

try {
parser = new PDFParser(new FileInputStream(f));
} catch (Exception e) {
System.out.println("Unable to open PDF Parser.");
return null;
}
try {
parser.parse();
cosDoc = parser.getDocument();
pdfStripper = new PDFTextStripper();
pdDoc = new PDDocument(cosDoc);
parsedText = pdfStripper.getText(pdDoc);
} catch (Exception e) {
e.printStackTrace();
}

它非常适合我目前使用过的 PDF。现在我有一个 PDF 表单,其中包含可编辑的文本字段。我的代码不返回字段内的文本。我想得到那个文本。有没有办法使用 PDFBox 获取它?

最佳答案

这是获取 AcroForms 的键/值的方式:(这个特定的程序将它打印到控制台。)

package pdf_form_filler;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
import org.apache.pdfbox.pdmodel.interactive.form.*;
import java.io.File;
import java.util.*;

public class pdf_form_filler {

public static void listFields(PDDocument doc) throws Exception {
PDDocumentCatalog catalog = doc.getDocumentCatalog();
PDAcroForm form = catalog.getAcroForm();
List<PDFieldTreeNode> fields = form.getFields();

for(PDFieldTreeNode field: fields) {
Object value = field.getValue();
String name = field.getFullyQualifiedName();
System.out.print(name);
System.out.print(" = ");
System.out.print(value);
System.out.println();
}
}

public static void main(String[] args) throws Exception {
File file = new File("test.pdf");
PDDocument doc = PDDocument.load(file);
listFields(doc);
}

}

关于java - 如何使用pdfbox获取PDF表单文本域的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27282537/

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