如何在 Java 中获取和设置 PDF 表单字段


在 Java 中获取和设置 PDF 表单字段通常需要使用 PDF 操作库。Apache PDFBox 是一个流行的 Java 库,可用于处理 PDF 文件,包括读取和设置 PDF 表单字段。以下是一个简单的示例,演示如何使用 Apache PDFBox 获取和设置 PDF 表单字段:

  1. 添加 Maven 依赖

    首先,在项目的 Maven 或 Gradle 配置文件中添加 Apache PDFBox 的依赖项:

    Maven 项目的 pom.xml 文件:

    <dependencies>
        <dependency>
            <groupId>org.apache.pdfbox</groupId>
            <artifactId>pdfbox</artifactId>
            <version>2.0.30</version> <!-- 请检查最新版本 -->
        </dependency>
    </dependencies>

    Gradle 项目的 build.gradle 文件:

    dependencies {
        implementation 'org.apache.pdfbox:pdfbox:2.0.30' // 请检查最新版本
    }
  2. 示例代码

    下面是一个简单的示例,演示如何使用 Apache PDFBox 获取和设置 PDF 表单字段:

    import org.apache.pdfbox.pdmodel.PDDocument;
    import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
    import org.apache.pdfbox.pdmodel.PDPage;
    import org.apache.pdfbox.pdmodel.PDResources;
    import org.apache.pdfbox.pdmodel.PDTextField;
    import org.apache.pdfbox.pdmodel.PDType0Font;
    
    import java.io.File;
    import java.io.IOException;
    
    public class PdfFormFieldExample {
    
        public static void main(String[] args) {
            try {
                // 1. 读取 PDF 文档
                PDDocument document = PDDocument.load(new File("example.pdf"));
    
                // 2. 获取表单字段
                PDDocumentCatalog catalog = document.getDocumentCatalog();
                PDPage page = catalog.getPages().get(0); // 获取第一页
                PDResources resources = page.getResources();
                PDTextField textField = (PDTextField) resources.getFields().get(0); // 假设第一个字段是文本字段
    
                // 3. 获取字段值
                String fieldValue = textField.getValue();
                System.out.println("Current Field Value: " + fieldValue);
    
                // 4. 设置字段值
                textField.setValue("New Field Value");
    
                // 5. 保存修改后的 PDF 文档
                document.save("modified_example.pdf");
    
                // 6. 关闭文档
                document.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    请确保将上述示例中的 "example.pdf" 替换为你的实际 PDF 文件路径。这个示例假设 PDF 文档的第一页包含一个文本字段。你需要根据实际情况修改代码以适应不同的 PDF 表单结构。

注意:在处理 PDF 表单字段时,要确保使用正确的字段类型(如 PDTextFieldPDCheckbox 等),并了解 PDF 表单的结构。根据具体情况,你可能需要查看 PDF 文件的文档结构以确定正确的字段类型和路径。


原文链接:codingdict.net