Reemplazar imagen en archivo PDF existente usando Java

Utilice la colección de imágenes de la página o la búsqueda basada en ubicaciones según la precisión con la que necesite dirigir la imagen.

Reemplazar una imagen por índice de recurso

  1. Abra el PDF de origen Document.
  2. Acceda a los recursos de imagen en el destino Page.
  3. Reemplace el recurso de imagen del destino con el nuevo archivo de imagen.
  4. Guarde el PDF actualizado 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());
    }
}

Reemplazar una imagen usando ImagePlacementAbsorber

  1. Abra el PDF de origen Document.
  2. Cree un ImagePlacementAbsorber y visite el objetivo Page.
  3. Obtenga el objetivo ImagePlacement y reemplácelo con el nuevo flujo de imagen.
  4. Guarde el PDF actualizado 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());
    }
}