Замена изображения в существующем PDF‑файле с помощью Java

Используйте либо коллекцию изображений страницы, либо поиск на основе размещения, в зависимости от того, насколько точно вам нужно найти изображение.

Замена изображения по индексу ресурса

  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 в объекте Документ.
  2. Создайте ImagePlacementAbsorber и обработайте нужную страницу Страница.
  3. Получите нужный объект ImagePlacement и замените его новым потоком изображения.
  4. Сохраните обновлённый PDF Документ.
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());
    }
}