修改 AcroForm

表单维护通常涉及字段级别的编辑以及表单相关页面资源的清理。

清除嵌入式表单资源中的文本

当需要清空打字机表单内容而不删除表单对象本身时,请使用此示例。

  1. 打开源 PDF Document。
  2. 遍历页面表单资源并定位 Typewriter 表单。
  3. 清除已吸收的文本片段并保存文档。
public static void clearTextInForm(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        for (XForm form : document.getPages().get_Item(1).getResources().getForms()) {
            if ("Typewriter".equals(form.getIT()) && "Form".equals(form.getSubtype())) {
                TextFragmentAbsorber absorber = new TextFragmentAbsorber();
                absorber.visit(form);

                for (TextFragment fragment : absorber.getTextFragments()) {
                    fragment.setText("");
                }
            }
        }
        document.save(outputFile.toString());
    }
}

设置文本字段长度限制

当文本字段只应接受有限数量的字符时,请使用此示例。

  1. 创建一个 FormEditor 对象并绑定源 PDF。
  2. 设置目标字段的最大长度。
  3. 保存更新后的文档。
public static void setFieldLimit(Path inputFile, Path outputFile) {
    FormEditor form = new FormEditor();
    form.bindPdf(inputFile.toString());
    try {
        form.setFieldLimit("First Name", 15);
        form.save(outputFile.toString());
    } finally {
        form.close();
    }
}

获取文本字段长度限制

当您需要检查文本字段的当前最大长度时,请使用此示例。

  1. 打开源 PDF Document。
  2. 从表单集合中访问目标字段。
  3. 从中读取限制 TextBoxField 并输出它。
public static void getFieldLimit(Path inputFile) {
    try (Document document = new Document(inputFile.toString())) {
        Field field = document.getForm().getFields()[0];
        if (field instanceof TextBoxField textBoxField) {
            System.out.println("Limit: " + textBoxField.getMaxLen());
        }
    }
}

更改表单字段字体

当现有文本字段需要使用不同的字体或外观时,请使用此示例。

  1. 打开源 PDF Document。
  2. 访问目标 TextBoxField 并设置新的默认外观。
  3. 保存已更新的 PDF。
public static void setFormFieldFont(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        Field field = document.getForm().getFields()[0];
        if (field instanceof TextBoxField textBoxField) {
            textBoxField.setDefaultAppearance(new DefaultAppearance(
                    FontRepository.findFont("Calibri"), 10, com.aspose.pdf.Color.getBlack().toRgb()));
        }

        document.save(outputFile.toString());
    }
}

按名称删除表单字段

当需要从 AcroForm 中删除特定字段时,请使用此示例。

  1. 打开源 PDF Document。
  2. 按名称从表单中删除目标字段。
  3. 保存更新后的文档。
public static void deleteFormField(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        document.getForm().delete("First Name");
        document.save(outputFile.toString());
    }
}