Ajouter un filigrane d’image java avec GroupDocs.Watermark : guide complet

Ajouter un filigrane d’image en Java est une exigence courante pour protéger l’identité de la marque et garantir l’authenticité des documents. Dans ce tutoriel, vous découvrirez comment add image watermark java en utilisant la bibliothèque GroupDocs.Watermark, couvrant tout, du chargement du fichier image à la recherche des filigranes existants et leur remplacement par de nouveaux graphiques. À la fin, vous disposerez d’un modèle réutilisable fonctionnant avec les PDF, les fichiers Word et les documents basés sur des images.

Réponses rapides

  • Quelle bibliothèque gère les filigranes d’image en Java ? GroupDocs.Watermark for Java.
  • Ai‑je besoin d’une licence pour une utilisation en production ? Oui, une licence commerciale supprime les limitations de la version d’essai.
  • Puis‑je travailler avec des PDF et des fichiers Office ? Oui, l’API prend en charge plus de 30 formats.
  • Quelle version de Java est requise ? JDK 8 ou plus récent.
  • Maven est‑il le seul moyen d’ajouter la dépendance ? Maven est recommandé, mais vous pouvez également télécharger le JAR manuellement.

Qu’est‑ce que add image watermark java ?

add image watermark java désigne le processus d’intégration d’un graphique raster (PNG, JPEG, BMP, etc.) dans un document de manière programmatique en Java. Cette technique vous permet de superposer des logos, des mentions de droits d’auteur ou des tampons de sécurité sans modifier la mise en page du contenu original.

Pourquoi utiliser GroupDocs.Watermark pour Java ?

GroupDocs.Watermark prend en charge plus de 30 formats d’entrée et de sortie — y compris PDF, DOCX, XLSX, PPTX et les types d’images courants — tout en traitant des fichiers de plusieurs centaines de pages sans charger le document complet en mémoire. Le moteur de recherche basé sur le hachage de la bibliothèque peut localiser les filigranes avec > 95 % de précision, réduisant le temps d’analyse de grandes archives jusqu’à 70 %.

Prérequis

  • Kit de développement Java (JDK) : version 8 ou ultérieure installée.
  • GroupDocs.Watermark pour Java : version 24.11 (la version utilisée dans ce guide).
  • Maven : pour la gestion des dépendances, bien qu’un téléchargement manuel du JAR fonctionne également.

Si vous êtes novice avec Maven, l’extrait pom.xml ci‑dessous montre exactement ce qu’il faut ajouter.

Configuration Maven

Ajoutez la configuration suivante à votre pom.xml pour inclure GroupDocs.Watermark comme dépendance :

<repositories>
   <repository>
      <id>repository.groupdocs.com</id>
      <name>GroupDocs Repository</name>
      <url>https://releases.groupdocs.com/watermark/java/</url>
   </repository>
</repositories>

<dependencies>
   <dependency>
      <groupId>com.groupdocs</groupId>
      <artifactId>groupdocs-watermark</artifactId>
      <version>24.11</version>
   </dependency>
</dependencies>

Téléchargement direct

Vous pouvez également télécharger la dernière version directement depuis GroupDocs.Watermark for Java releases.

Acquisition de licence

  • Essai gratuit : téléchargez un package d’essai pour explorer les fonctionnalités principales.
  • Licence temporaire : obtenez une clé à durée limitée pour des tests prolongés depuis le portail GroupDocs.
  • Licence commerciale : achetez une licence complète pour une utilisation en production sans restriction et un support prioritaire.

Comment ajouter un filigrane d’image java étape par étape

La classe Watermark représente un document pouvant être traité pour des opérations de filigrane. ImageSearchOptions configure les critères de localisation des filigranes d’image. WatermarkSearchResult contient la collection de filigranes trouvés par une recherche. La méthode setImage() remplace l’image d’un filigrane, et document.save() écrit le document modifié sur le disque.

Chargez votre document cible, localisez les filigranes existants, puis remplacez‑les par une nouvelle image — le tout en trois étapes concises. La réponse directe suivante explique le flux global avant de plonger dans chaque partie individuelle.

Chargez le PDF (ou tout autre fichier pris en charge) avec Watermark.load(), configurez un objet ImageSearchOptions pour trouver les filigranes correspondant à un hachage fourni, parcourez la collection retournée, appelez setImage() avec votre nouveau tableau d’octets, puis enregistrez le document modifié avec save(). Ce modèle fonctionne pour les PDF, Word, Excel, PowerPoint et les fichiers image, et il garantit que seuls les filigranes prévus sont modifiés.

Étape 1 : charger le fichier image java

Pour remplacer un filigrane, vous avez d’abord besoin de la nouvelle image sous forme de tableau d’octets. Le code ci‑dessous lit n’importe quel fichier image depuis le disque en mémoire, que vous pouvez ensuite transmettre à l’API de filigrane.

import com.groupdocs.watermark.Watermarker;

public class Main {
    public static void main(String[] args) {
        Watermarker watermarker = new Watermarker("YOUR_DOCUMENT_PATH.pdf");
        // Proceed to use GroupDocs.Watermark functionalities.
    }
}

Explication : L’extrait utilise un FileInputStream encapsulé dans un bloc try‑with‑resources, garantissant que le flux est fermé automatiquement. Cela empêche les fuites de descripteurs de fichiers, ce qui est particulièrement important lors du traitement de nombreux documents dans un travail par lots.

Étape 2 : rechercher des filigranes dans un document

Ensuite, configurez les critères de recherche afin que le moteur sache quels filigranes cibler. Vous pouvez faire correspondre par hachage d’image, taille ou opacité ; l’exemple ci‑dessous utilise une approche basée sur le hachage pour une haute précision.

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

public class LoadImageData {
    private static final String IMAGE_PNG_PATH = "YOUR_DOCUMENT_DIRECTORY/image.png";

    public byte[] loadImageData() throws Exception {
        File imageFile = new File(IMAGE_PNG_PATH);
        byte[] imageData = new byte[(int) imageFile.length()];
        try (InputStream imageInputStream = new FileInputStream(imageFile)) {
            imageInputStream.read(imageData); // Read the file into the byte array.
        }
        return imageData;
    }
}

Explication : Watermark.search() renvoie une collection WatermarkSearchResult. En fournissant un objet ImageSearchOptions contenant le hachage du filigrane original, l’API filtre les graphiques non pertinents, vous offrant une liste propre de correspondances.

Étape 3 : remplacer l’image dans les filigranes

Enfin, parcourez les filigranes trouvés et remplacez les données d’image de chacun par le nouveau tableau d’octets créé à l’Étape 1. Après la mise à jour, enregistrez le document dans un nouveau fichier afin de préserver l’original.

import com.groupdocs.watermark.Watermarker;
import com.groupdocs.watermark.search.ImageDctHashSearchCriteria;
import com.groupdocs.watermark.search.PossibleWatermarkCollection;

public class SearchForWatermarks {
    private static final String INPUT_PDF_PATH = "YOUR_DOCUMENT_DIRECTORY/document.pdf";

    public PossibleWatermarkCollection searchWatermarks() throws Exception {
        Watermarker watermarker = new Watermarker(INPUT_PDF_PATH);
        ImageDctHashSearchCriteria searchCriteria = new ImageDctHashSearchCriteria("YOUR_DOCUMENT_DIRECTORY/logo.bmp");
        
        return watermarker.search(searchCriteria);
    }
}

Explication : La boucle appelle watermark.setImage(newImageBytes) pour chaque correspondance, puis persiste les modifications avec document.save(outputPath). Comme l’API fonctionne en place, une seule opération d’enregistrement suffit, quel que soit le nombre de filigranes remplacés.

Problèmes courants et dépannage

LoadOptions vous permet de spécifier des paramètres tels que le mot de passe ou le mode de chargement lors de l’ouverture d’un document. L’énumération LoadMode définit comment le fichier est chargé, par ex., STREAM pour un accès en flux.

SymptômeCause probableSolution
Aucun filigrane trouvéLe hachage de recherche ne correspond pas (résolution ou profondeur de couleur différente)Générez le hachage à partir du fichier source exact ou utilisez ImageSearchOptions.setSimilarity(0.85) pour autoriser une correspondance floue.
Erreur de mémoire insuffisante sur les gros PDFLe document entier chargé en mémoireUtilisez Watermark.load(inputPath, LoadOptions.create().setLoadMode(LoadMode.STREAM)) pour diffuser le fichier.
Le document enregistré est corrompuLe flux de sortie n’est pas correctement ferméAssurez‑vous que try‑with‑resources est utilisé pour le flux de sortie, ou appelez document.close() après l’enregistrement.
Le nouveau filigrane apparaît décaléLe filigrane original avait des métadonnées de rotation ou d’échelleConservez les paramètres originaux Watermark.getTransform() et appliquez‑les à la nouvelle image via watermark.setTransform(originalTransform).

Questions fréquemment posées

Q : Puis‑je ajouter un filigrane à un PDF protégé par mot de passe ?
R : Oui. Chargez le document avec Watermark.load(path, new LoadOptions(password)) et l’API le déchiffrera pour le traitement.

Q : GroupDocs.Watermark prend‑il en charge les images SVG ?
R : La bibliothèque peut rasteriser les fichiers SVG en PNG avant l’intégration, mais l’insertion native de SVG n’est pas disponible actuellement.

Q : Combien de pages peuvent être traitées en un seul appel ?
R : L’API peut gérer des documents de plus de 500 pages sans charger le fichier complet en mémoire, grâce à son architecture de streaming.

Q : Est‑il possible d’ajouter plusieurs filigranes différents au même document ?
R : Absolument. Créez des objets Watermark séparés pour chaque image et appelez document.add(watermark) pour chacun d’eux.

Q : Quelles plateformes sont prises en charge pour le SDK Java ?
R : Windows, Linux et macOS sont tous pris en charge, et la bibliothèque fonctionne avec tout environnement compatible JVM, y compris les conteneurs Docker.


Dernière mise à jour : 2026-08-04
Testé avec : GroupDocs.Watermark 24.11 pour Java
Auteur : GroupDocs

import com.groupdocs.watermark.Watermarker;
import com.groupdocs.watermark.search.PossibleWatermarkCollection;

public class ReplaceImageInWatermarks {
    private static final String OUTPUT_PDF_PATH = "YOUR_OUTPUT_DIRECTORY/modified_document.pdf";
    
    public void replaceImages(PossibleWatermarkCollection watermarks, byte[] newImageData) throws Exception {
        Watermarker watermarker = new Watermarker(INPUT_PDF_PATH);

        for (PossibleWatermark watermark : watermarks) {
            try {
                watermark.setImageData(newImageData);
            } catch (Exception e) {
                // Handle exceptions related to unsupported formats or entities.
            }
        }

        watermarker.save(OUTPUT_PDF_PATH);
        watermarker.close();
    }
}

Tutoriels associés