替换处理器
大约 1 分钟pdfbox模块高级功能处理器
说明
用于替换文档内容
- 支持替换文本
- 支持替换图像
- 支持替换多页
示例
替换文本
- 根据词组替换
try (
// 加载文档
Document document = PdfHandler.getDocumentHandler().load("E:\\PDF\\pdfbox\\hello-world.pdf");
){
// 获取处理器
ReplaceProcessor processor = PdfHandler.getDocumentProcessor(document).getReplaceProcessor();
// 获取字体
PDFont font = document.getContext().getFont("仿宋");
// 创建替换字典
Map<String, String> map = new HashMap<>();
// 添加替换数据
map.put("World", "X-easypdf");
// 替换第一页文本
processor.replaceText(font, map, 0);
// 保存文档
document.save("E:\\PDF\\pdfbox\\processor\\replace\\replaceTextTest.pdf");
}
- 根据字符替换
try (
// 加载文档
Document document = PdfHandler.getDocumentHandler().load("E:\\PDF\\pdfbox\\allTest.pdf");
){
// 获取处理器
ReplaceProcessor processor = PdfHandler.getDocumentProcessor(document).getReplaceProcessor();
// 获取字体
PDFont font = document.getContext().getFont("微软雅黑");
// 替换指定第一个与第二个
ReplaceInfo replaceInfo1 = new ReplaceInfo('贵', '遵', Stream.of(0, 1).collect(Collectors.toSet()), font);
// 替换全部
ReplaceInfo replaceInfo2 = ReplaceInfo.builder().original('阳').value('义').font(font).build();
// 替换为空(移除)
ReplaceInfo replaceInfo3 = new ReplaceInfo('百', '\u0000', Stream.of(1).collect(Collectors.toSet()), font);
ReplaceInfo replaceInfo4 = new ReplaceInfo('科', '\u0000', Stream.of(1).collect(Collectors.toSet()), font);
// 替换文本
processor.replaceText(Arrays.asList(replaceInfo1, replaceInfo2, replaceInfo3, replaceInfo4), 0);
// 保存文档
document.save("E:\\PDF\\pdfbox\\processor\\replace\\replaceTextTest2.pdf");
}
替换图像
try (
// 加载文档
Document document = PdfHandler.getDocumentHandler().load("E:\\PDF\\pdfbox\\allTest.pdf");
){
// 获取处理器
ReplaceProcessor processor = PdfHandler.getDocumentProcessor(document).getReplaceProcessor();
// 获取替换图像
BufferedImage image = ImageUtil.read(new File("E:\\PDF\\pdfbox\\test.jpg"));
// 替换指定第一与第二页的第一个图像
processor.replaceImage(image, Arrays.asList(0, 1), 0);
// 保存文档
document.save("E:\\PDF\\pdfbox\\processor\\replace\\replaceTextTest2.pdf");
}