表单处理器
大约 5 分钟pdfbox模块高级功能处理器
提示
操作完表单后,务必调用 flush 方法刷新表单,否则不生效
说明
用于处理表单
- 支持获取字段
- 支持添加字段
- 支持替换关键字
- 支持移除字段
- 支持填写字段
- 支持字段只读
- 支持表单扁平化
示例
获取字段
try (
// 加载文档
Document document = PdfHandler.getDocumentHandler().load("E:\\PDF\\pdfbox\\hello-world.pdf");
){
// 获取处理器
FormProcessor processor = PdfHandler.getDocumentProcessor(document).getFormProcessor();
// 获取字段
List<PDField> fields = processor.getFields();
// 输出字段信息
fields.forEach(System.out::println);
}
添加字段
- 添加文本
try (
// 创建文档
Document document = PdfHandler.getDocumentHandler().create();
){
// 创建页面
Page page = new Page(document);
// 需要先添加页面
document.appendPage(page);
// 获取处理器
FormProcessor processor = PdfHandler.getDocumentProcessor(document).getFormProcessor();
// 创建文本字段构建器
TextFieldBuilder builder = TextFieldBuilder.builder(document, page, Size.create(0F, 100F, 0F, 50F));
// 设置字段名称
builder.setName("test");
// 设置字体名称
builder.setFontName("仿宋");
// 设置最大长度
builder.setMaxLength(50);
// 设置允许多行
builder.setIsMultiline(true);
// 添加字段
processor.addField(builder);
// 刷新
processor.flush();
// 保存文档
document.save("E:\\PDF\\pdfbox\\processor\\form\\addTextFieldTest.pdf");
}
- 添加图像
try (
// 创建文档
Document document = PdfHandler.getDocumentHandler().create();
){
// 创建页面
Page page = new Page(document);
// 需要先添加页面
document.appendPage(page);
// 获取处理器
FormProcessor processor = PdfHandler.getDocumentProcessor(document).getFormProcessor();
// 创建图像字段构建器
ImageFieldBuilder builder = ImageFieldBuilder.builder(document, page, Size.create(0F, 50F, 0F, 50F));
// 设置字段名称
builder.setName("test");
// 设置标签
builder.setLabel("test");
// 设置布局
builder.setLayout(ImageFieldLayout.IMAGE_BEHIND);
// 添加字段
processor.addField(builder);
// 刷新
processor.flush();
// 保存文档
document.save("E:\\PDF\\pdfbox\\processor\\form\\addImageFieldTest.pdf");
}
- 添加单选
try (
// 创建文档
Document document = PdfHandler.getDocumentHandler().create();
){
// 创建页面
Page page = new Page(document);
// 需要先添加页面
document.appendPage(page);
// 获取处理器
FormProcessor processor = PdfHandler.getDocumentProcessor(document).getFormProcessor();
// 定义左x轴坐标
float leftX = 100F;
// 定义右x轴坐标
float rightX = 120F;
// 定义下y轴坐标
float bottomY = 480F;
// 定义上y轴坐标
float topY = 500F;
// 创建单选字段构建器
RadioFieldBuilder builder = RadioFieldBuilder.builder(document, page);
// 设置字段名称
builder.setName("test");
// 设置选项
for (int i = 0; i < 6; i++) {
// 创建选项
RadioField field = new RadioField(Size.create(leftX, rightX, bottomY, topY), "选项" + i);
// 设置选中样式
field.setStyle(FormFieldStateStyle.values()[i]);
// 设置选中
field.setIsSelected(i == 1);
// 添加选项
builder.addFields(field);
// 重置左x轴坐标
leftX = leftX + 30F;
// 重置右x轴坐标
rightX = rightX + 30F;
}
// 添加字段
processor.addField(builder);
// 刷新
processor.flush();
// 保存文档
document.save("E:\\PDF\\pdfbox\\processor\\form\\addRadioFieldTest.pdf");
}
- 添加多选
try (
// 创建文档
Document document = PdfHandler.getDocumentHandler().create();
){
// 创建页面
Page page = new Page(document);
// 需要先添加页面
document.appendPage(page);
// 获取处理器
FormProcessor processor = PdfHandler.getDocumentProcessor(document).getFormProcessor();
// 定义左x轴坐标
float leftX = 100F;
// 定义右x轴坐标
float rightX = 120F;
// 定义下y轴坐标
float bottomY = 480F;
// 定义上y轴坐标
float topY = 500F;
// 设置选项
for (int i = 0; i < 6; i++) {
// 创建多选字段构建器
CheckBoxFieldBuilder builder = CheckBoxFieldBuilder.builder(document, page, Size.create(leftX, rightX, bottomY, topY));
// 设置字段名称
builder.setName("test" + i);
// 设置选项值
builder.setValue("选项" + i);
// 设置选中样式
field.setStyle(FormFieldStateStyle.values()[i]);
// 设置选中
field.setIsSelected(i == 1);
// 添加字段
processor.addField(builder);
// 重置左x轴坐标
leftX = leftX + 30F;
// 重置右x轴坐标
rightX = rightX + 30F;
}
// 刷新
processor.flush();
// 保存文档
document.save("E:\\PDF\\pdfbox\\processor\\form\\addCheckBoxFieldTest.pdf");
}
替换关键字
try (
// 加载文档
Document document = PdfHandler.getDocumentHandler().load("E:\\PDF\\pdfbox\\hello-world.pdf");
){
// 获取处理器
FormProcessor processor = PdfHandler.getDocumentProcessor(document).getFormProcessor();
// 创建替换字典
Map<String, String> keyMap = new HashMap<>();
// 添加替换内容
keyMap.put("test", "测试");
// 替换关键字
processor.replaceKey(keyMap);
// 刷新
processor.flush();
// 保存文档
document.save("E:\\PDF\\pdfbox\\processor\\form\\replaceKeyTest.pdf");
}
移除字段
try (
// 加载文档
Document document = PdfHandler.getDocumentHandler().load("E:\\PDF\\pdfbox\\hello-world.pdf");
){
// 获取处理器
FormProcessor processor = PdfHandler.getDocumentProcessor(document).getFormProcessor();
// 移除字段
processor.remove("test1", "test2");
// 刷新
processor.flush();
// 保存文档
document.save("E:\\PDF\\pdfbox\\processor\\form\\replaceKeyTest.pdf");
}
填写字段
- 填写文本
try (
// 加载文档
Document document = PdfHandler.getDocumentHandler().load("E:\\PDF\\pdfbox\\hello-world.pdf");
){
// 获取处理器
FormProcessor processor = PdfHandler.getDocumentProcessor(document).getFormProcessor();
// 设置字体名称、大小与颜色
processor.setFont("微软雅黑", 12F, Color.BLACK);
// 创建填写字典
Map<String, String> map = new HashMap<>();
// 添加填写内容
map.put("test", "其他");
// 填写文本
processor.fillText(map);
// 刷新
processor.flush();
// 保存文档
document.save("E:\\PDF\\pdfbox\\processor\\form\\fillTextTest.pdf");
}
- 填写图像
try (
// 加载文档
Document document = PdfHandler.getDocumentHandler().load("E:\\PDF\\pdfbox\\hello-world.pdf");
){
// 获取处理器
FormProcessor processor = PdfHandler.getDocumentProcessor(document).getFormProcessor();
// 创建填写字典
Map<String, BufferedImage> map = new HashMap<>();
// 添加填写内容
map.put("test", ImageUtil.read(new File("E:\\PDF\\pdfbox\\image\\test.png")));
// 填写图像
processor.fillImage(map);
// 刷新
processor.flush();
// 保存文档
document.save("E:\\PDF\\pdfbox\\processor\\form\\fillTextTest.pdf");
}
- 填写单选
try (
// 加载文档
Document document = PdfHandler.getDocumentHandler().load("E:\\PDF\\pdfbox\\hello-world.pdf");
){
// 获取处理器
FormProcessor processor = PdfHandler.getDocumentProcessor(document).getFormProcessor();
// 填写单选
processor.fillRadio("test", 2);
// 刷新
processor.flush();
// 保存文档
document.save("E:\\PDF\\pdfbox\\processor\\form\\fillRadioFieldTest.pdf");
}
- 填写多选
try (
// 加载文档
Document document = PdfHandler.getDocumentHandler().load("E:\\PDF\\pdfbox\\hello-world.pdf");
){
// 获取处理器
FormProcessor processor = PdfHandler.getDocumentProcessor(document).getFormProcessor();
// 创建填写字典
Map<String, Boolean> map = new HashMap<>(3);
// 添加填写内容
map.put("test1", false);
map.put("test2", false);
map.put("test3", false);
// 填写多选
processor.fillCheckBox(map);
// 刷新
processor.flush();
// 保存文档
document.save("E:\\PDF\\pdfbox\\processor\\form\\fillCheckBoxTest.pdf");
}
字段只读
try (
// 加载文档
Document document = PdfHandler.getDocumentHandler().load("E:\\PDF\\pdfbox\\hello-world.pdf");
){
// 获取处理器
FormProcessor processor = PdfHandler.getDocumentProcessor(document).getFormProcessor();
// 字段只读
processor.readOnly("test1", "test2");
// 刷新
processor.flush();
// 保存文档
document.save("E:\\PDF\\pdfbox\\processor\\form\\readOnlyTest.pdf");
}
表单扁平化
try (
// 加载文档
Document document = PdfHandler.getDocumentHandler().load("E:\\PDF\\pdfbox\\hello-world.pdf");
){
// 获取处理器
FormProcessor processor = PdfHandler.getDocumentProcessor(document).getFormProcessor();
// 表单扁平化
processor.flatten(true, "test1", "test2");
// 刷新
processor.flush();
// 保存文档
document.save("E:\\PDF\\pdfbox\\processor\\form\\flattenTest.pdf");
}