使用 Java 替换现有 PDF 文件中的图像

根据您需要定位图像的精确程度,可使用页面图像集合或基于位置的搜索。

通过资源索引替换图像

  1. 打开源 PDF Document。
  2. 访问目标上的图像资源 Page。
  3. 使用新图像文件替换目标图像资源。
  4. 保存更新后的 PDF Document。
public static void replaceImage(Path inputFile, Path imageFile, Path outputFile) throws Exception {
    try (Document document = new Document(inputFile.toString());
         InputStream imageStream = Files.newInputStream(imageFile)) {
        document.getPages().get_Item(1).getResources().getImages().replace(1, imageStream);
        document.save(outputFile.toString());
    }
}

使用 替换图像 ImagePlacementAbsorber

  1. 打开源 PDF Document。
  2. 创建一个 ImagePlacementAbsorber 并访问目标 Page。
  3. 获取目标 ImagePlacement 并使用新的图像流替换它。
  4. 保存更新后的 PDF Document。
public static void replaceImageWithAbsorber(Path inputFile, Path imageFile, Path outputFile) throws Exception {
    try (Document document = new Document(inputFile.toString())) {
        ImagePlacementAbsorber absorber = new ImagePlacementAbsorber();
        document.getPages().get_Item(1).accept(absorber);

        if (absorber.getImagePlacements().size() > 0) {
            ImagePlacement imagePlacement = absorber.getImagePlacements().get_Item(1);
            try (InputStream imageStream = Files.newInputStream(imageFile)) {
                imagePlacement.replace(imageStream);
            }
        }

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