修改 AcroForm
Contents
[
Hide
]
表单维护通常涉及字段级别的编辑以及表单相关页面资源的清理。
清除嵌入式表单资源中的文本
当需要清空打字机表单内容而不删除表单对象本身时,请使用此示例。
- 打开源 PDF Document。
- 遍历页面表单资源并定位 Typewriter 表单。
- 清除已吸收的文本片段并保存文档。
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());
}
}
设置文本字段长度限制
当文本字段只应接受有限数量的字符时,请使用此示例。
- 创建一个 FormEditor 对象并绑定源 PDF。
- 设置目标字段的最大长度。
- 保存更新后的文档。
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();
}
}
获取文本字段长度限制
当您需要检查文本字段的当前最大长度时,请使用此示例。
- 打开源 PDF Document。
- 从表单集合中访问目标字段。
- 从中读取限制 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());
}
}
}
更改表单字段字体
当现有文本字段需要使用不同的字体或外观时,请使用此示例。
- 打开源 PDF Document。
- 访问目标 TextBoxField 并设置新的默认外观。
- 保存已更新的 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 中删除特定字段时,请使用此示例。
- 打开源 PDF Document。
- 按名称从表单中删除目标字段。
- 保存更新后的文档。
public static void deleteFormField(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
document.getForm().delete("First Name");
document.save(outputFile.toString());
}
}