Comment appliquer des filigranes personnalisés aux PDF en Java
IronPDF permet aux développeurs Java d'appliquer des filigranes personnalisés aux documents PDF en utilisant des chaînes HTML avec un support CSS complet, permettant un contrôle total sur le texte, les images, l'opacité, la rotation et le positionnement à des fins de branding ou de sécurité.
Démarrage rapide : Appliquer des filigranes aux PDF en Java
- Ajoutez IronPDF à votre projet Maven ou Gradle et définissez votre clé de licence
- Chargez votre document PDF à l'aide de
PdfDocument.fromFile() - Créez une chaîne HTML pour votre filigrane (texte, image ou les deux)
- Appliquez le filigrane à l'aide de
pdf.applyWatermark(watermarkHtml) - Économisez le PDF avec filigrane
pdf.saveAs()
```java :title=QuickStartWatermark.java //:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/quickstart.java PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf")) ; pdf.applyWatermark(""); pdf.saveAs("watermarked.pdf") ;
Le filigranage protège les documents PDF et communique la propriété ou l'état du document. Les cas d'utilisation courants incluent le marquage des brouillons comme " Confidentiel ", l'intégration d'un logo d'entreprise sur chaque page, ou l'indication qu'un document est en attente d'approbation. IronPDF adopte une approche HTML-et-CSS, ce qui signifie que tout style que vous pouvez exprimer dans un navigateur (polices personnalisées, opacité, rotation, positionnement absolu) fonctionne de manière identique dans un filigrane.
Ce guide couvre les filigranes `text`, les filigranes `image`, les contrôles d'opacité et de position, ainsi que l'estampillage avancé avec [`TextStamper`](https://ironpdf.com/java/how-to/stamp-text-image-pdf/) et [`ImageStamper`](https://ironpdf.com/java/how-to/stamp-text-image-pdf/). Pour les techniques de manipulation de PDF connexes, voir le guide sur la [création de PDF à partir de HTML en Java](https://ironpdf.com/java/how-to/java-create-pdf-tutorial/) ou l'aperçu de [l'ajout d'arrière-plans et d'avant-plans](https://ironpdf.com/java/how-to/background-foreground/).
<div class="hsg-featured-snippet">
<h3>Comment appliquer des filigranes en Java</h3>
<ol>
<li><a class="js-modal-open" data-modal-id="download-modal" href="#download-modal">Téléchargez la bibliothèque Java pour appliquer des filigranes aux PDF</a></li>
<li>Rendre un nouveau PDF ou charger un existant</li>
<li>Configurez la chaîne HTML ou l'image à utiliser comme filigrane</li>
<li>Appliquez le filigrane en utilisant la méthode appropriée</li>
<li>Ajustez les paramètres pour l'opacité, la rotation et la localisation au besoin</li>
</ol>
</div>
## Comment appliquer un filigrane textuel à un PDF?
Utilisez la méthode `applyWatermark` pour apposer un tampon sur chaque page d'un document PDF. La méthode accepte une chaîne HTML, vous pouvez donc styliser le filigrane avec n'importe quelle propriété CSS : famille de polices, taille, couleur, espacement des lettres, ou ombre de texte. L'exemple ci-dessous marque un document comme " Confidentiel " en rouge, ce qui couvre le scénario le plus courant de traçabilité et de contrôle d'accès.
```java
//:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/text-watermark.java
import java.io.IOException;
import java.nio.file.Paths;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
public class Main {
public static void main(String[] args) throws IOException {
// Set the license key for IronPDF
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Load an existing PDF document from file
PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf")) ;
// HTML string defines the watermark appearance via CSS
String watermarkHtml = "<h1 style='color:red;'>Confidential</h1>";
// Apply the watermark to every page
pdf.applyWatermark(watermarkHtml);
// Save the watermarked PDF to a new file
pdf.saveAs("text_watermark.pdf");
}
}
L'appel applyWatermark ajoute le filigrane à toutes les pages en une seule opération. Par défaut, le filigrane s'affiche à 50% d'opacité et est centré sur chaque page. Pour activer toutes les fonctionnalités de la bibliothèque, configurez votre clé de licence IronPDF avant toute opération PDF. Le code HTML transmis à applyWatermark accepte tout élément HTML valide ; vous pouvez donc inclure des balises <div>, <span> ou <p> stylisées pour les filigranes sur plusieurs lignes.
À quoi ressemble le texte en filigrane ?
Le fichier de sortie text_watermark.pdf affiche le mot " Confidential " en rouge, centré horizontalement et verticalement sur chaque page. L'opacité par défaut de 50% permet de garder le contenu du document lisible sous le filigrane. Pour les documents multi-pages, chaque page reçoit le même tampon sans qu'une boucle par page soit nécessaire.
transform: rotate(-45deg) scale(1.5).Pour des techniques de rendu HTML plus approfondies applicables aux filigranes, consultez le tutorial HTML to PDF.
Comment puis-je ajouter un filigrane d'image à un PDF ?
Les filigranes d'image fonctionnent selon la même méthode applyWatermark en encapsulant une balise <img> dans la chaîne HTML. Les fichiers PNG avec des fonds transparents sont idéaux pour les filigranes de logo car la transparence est préservée lorsque l'image est composée sur la page PDF. Les formats JPEG, GIF, SVG et BMP sont également pris en charge.
//:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/image-watermark.java
import java.io.IOException;
import java.nio.file.Paths;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
public class Main {
public static void main(String[] args) throws IOException {
// Set the license key for IronPDF
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Load an existing PDF document from file
PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf")) ;
// Reference the image file path relative to the runtime working directory
String watermarkHtml = "<img src='logo.png' style='width:100px;'/>";
// Apply the image watermark to all pages
pdf.applyWatermark(watermarkHtml);
// Save the result
pdf.saveAs("image_watermark.pdf");
}
}
//:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/image-watermark.java
import java.io.IOException;
import java.nio.file.Paths;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
public class Main {
public static void main(String[] args) throws IOException {
// Set the license key for IronPDF
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Load an existing PDF document from file
PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf")) ;
// Reference the image file path relative to the runtime working directory
String watermarkHtml = "<img src='logo.png' style='width:100px;'/>";
// Apply the image watermark to all pages
pdf.applyWatermark(watermarkHtml);
// Save the result
pdf.saveAs("image_watermark.pdf");
}
}
Les propriétés CSS dans la balise <img> contrôlent la taille, la position et la transparence :
//:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/image-watermark-advanced.java
// Apply a 150px logo at 50% opacity, rotated 45 degrees counterclockwise
String advancedWatermarkHtml =
"<img src='logo.png' style='width:150px; opacity:0.5; transform:rotate(-45deg);'/>";
//:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/image-watermark-advanced.java
// Apply a 150px logo at 50% opacity, rotated 45 degrees counterclockwise
String advancedWatermarkHtml =
"<img src='logo.png' style='width:150px; opacity:0.5; transform:rotate(-45deg);'/>";
Le chemin d'accès à l'image doit être accessible depuis le répertoire de travail de la JVM au moment de l'exécution. Pour les déploiements sur serveur, utilisez des chemins absolus ou intégrez l'image sous forme d'URI de données Base64 dans l'attribut src afin d'éviter les problèmes de résolution de chemin.
Quels sont les formats de fichiers pris en charge pour les filigranes d'image ?
IronPDF prend en charge les formats d'image PNG, JPEG, GIF, SVG et BMP dans les filigranes. Les PNG avec un fond transparent produisent les résultats les plus nets pour les filigranes de logo. Le fichier de sortie image_watermark.pdf affiche l'image avec une largeur de 100 pixels, centrée sur chaque page avec une opacité par défaut de 50 %. Pour extraire des images d'un PDF existant pour les utiliser dans un autre filigrane, consultez le guide sur l'extraction d'images à partir de PDF.
Comment contrôler l'opacité et l'alignement des filigranes ?
La méthode applyWatermark accepte des paramètres d'opacité et d'alignement après la chaîne HTML. L'opacité est un entier de 0 (totalement transparent) à 100 (totalement opaque). Les valeurs entre 20 et 40 fonctionnent bien pour la plupart des documents, permettant de garder le filigrane visible sans masquer le texte principal. Les énumérations VerticalAlignment et HorizontalAlignment déterminent le coin ou le bord de la page où le filigrane doit être placé.
//:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/watermark-opacity-alignment.java
import java.io.IOException;
import java.nio.file.Paths;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.stamp.HorizontalAlignment;
import com.ironsoftware.ironpdf.stamp.VerticalAlignment;
public class Main {
public static void main(String[] args) throws IOException {
// Set the license key for IronPDF
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Load an existing PDF document from file
PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf")) ;
// Define the watermark HTML
String watermarkHtml = "<h1 style='color:blue;'>Confidential</h1>";
// Apply at 30% opacity, anchored to the top-left corner of each page
pdf.applyWatermark(watermarkHtml, 30, VerticalAlignment.TOP, HorizontalAlignment.LEFT);
// Save the result
pdf.saveAs("watermark_opacity_alignment.pdf");
}
}
//:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/watermark-opacity-alignment.java
import java.io.IOException;
import java.nio.file.Paths;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.stamp.HorizontalAlignment;
import com.ironsoftware.ironpdf.stamp.VerticalAlignment;
public class Main {
public static void main(String[] args) throws IOException {
// Set the license key for IronPDF
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Load an existing PDF document from file
PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf")) ;
// Define the watermark HTML
String watermarkHtml = "<h1 style='color:blue;'>Confidential</h1>";
// Apply at 30% opacity, anchored to the top-left corner of each page
pdf.applyWatermark(watermarkHtml, 30, VerticalAlignment.TOP, HorizontalAlignment.LEFT);
// Save the result
pdf.saveAs("watermark_opacity_alignment.pdf");
}
}
La combinaison des trois paramètres optionnels offre neuf options de positionnement distinctes, une pour chaque intersection d'alignement vertical et horizontal. Pour les cas d'utilisation nécessitant des filigranes à plusieurs positions sur la même page, ou des filigranes appliqués uniquement à une plage de pages spécifique, les classes de tamponneuses offrent un contrôle plus fin. Consultez le guide des arrière-plans et avant-plans pour des techniques de composition en couches.
Quelles sont les options d'alignement disponibles ?
La méthode applyWatermark prend en charge les constantes d'alignement suivantes :
Alignement vertical (VerticalAlignment) :
TOP- filigrane ancré au bord supérieurMIDDLE- filigrane centré verticalementBOTTOM- filigrane ancré au bord inférieur
Alignement horizontal (HorizontalAlignment) :
LEFT- filigrane ancré au bord gaucheCENTER- filigrane centré horizontalementRIGHT- filigrane ancré au bord droit
applyWatermark(html) sans paramètres supplémentaires équivaut à passer opacity 50, VerticalAlignment.MIDDLE, HorizontalAlignment.CENTER.Associez n'importe quelle valeur verticale avec n'importe quelle valeur horizontale pour un contrôle précis. Pour les documents nécessitant plusieurs tampons qui se chevauchent, tels qu'un logo dans le coin supérieur droit et un avis de brouillon centré en diagonale, appliquez chaque tampon sous la forme d'un appel applyWatermark distinct. Pour les superpositions basées sur des annotations, consultez l'exemple d'annotations.
Comment appliquer des filigranes avancés avec TextStamper et ImageStamper ?
La méthode applyWatermark répond à la plupart des besoins en matière de filigranage, mais les classes TextStamper et ImageStamper offrent un contrôle programmatique lorsque des coordonnées pixel exactes, le ciblage d'une plage de pages ou la génération dynamique de texte sont requis. Les deux classes appartiennent au package com.ironsoftware.ironpdf.stamp.
TextStamper accepte une valeur de chaîne et expose des propriétés pour la police, la taille de police, la couleur de police, l'alignement horizontal et vertical, ainsi que l'opacité. Il prend également en charge la rotation sous forme d'entier (degrés). ImageStamper accepte un chemin d'accès au fichier ou un tableau d'octets pour l'image et propose les mêmes commandes d'alignement et d'opacité que TextStamper.
Le principal avantage des classes stamper par rapport à applyWatermark réside dans leur capacité à cibler des pages spécifiques. Transmettez une liste de numéros de page indexés à partir de zéro à la méthode stamp pour appliquer le filigrane uniquement aux pages qui en ont besoin, par exemple en l'apposant uniquement sur la page de garde d'un rapport ou sur la page d'approbation finale d'un contrat.
//:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/text-stamper.java
import java.io.IOException;
import java.nio.file.Paths;
import java.util.Arrays;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.stamp.HorizontalAlignment;
import com.ironsoftware.ironpdf.stamp.TextStamper;
import com.ironsoftware.ironpdf.stamp.VerticalAlignment;
public class Main {
public static void main(String[] args) throws IOException {
// Set the license key for IronPDF
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Load the target PDF document
PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf")) ;
// Configure a TextStamper with custom font, rotation, and opacity
TextStamper stamper = new TextStamper();
stamper.setText("DRAFT");
stamper.setFontSize(72);
stamper.setFontColor("gray");
stamper.setOpacity(40);
stamper.setRotation(45);
stamper.setVerticalAlignment(VerticalAlignment.MIDDLE);
stamper.setHorizontalAlignment(HorizontalAlignment.CENTER);
// Apply the stamp only to pages 0 and 1 (zero-indexed)
pdf.stamp(stamper, Arrays.asList(0, 1));
// Save the stamped PDF
pdf.saveAs("text_stamped.pdf");
}
}
//:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/text-stamper.java
import java.io.IOException;
import java.nio.file.Paths;
import java.util.Arrays;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.stamp.HorizontalAlignment;
import com.ironsoftware.ironpdf.stamp.TextStamper;
import com.ironsoftware.ironpdf.stamp.VerticalAlignment;
public class Main {
public static void main(String[] args) throws IOException {
// Set the license key for IronPDF
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Load the target PDF document
PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf")) ;
// Configure a TextStamper with custom font, rotation, and opacity
TextStamper stamper = new TextStamper();
stamper.setText("DRAFT");
stamper.setFontSize(72);
stamper.setFontColor("gray");
stamper.setOpacity(40);
stamper.setRotation(45);
stamper.setVerticalAlignment(VerticalAlignment.MIDDLE);
stamper.setHorizontalAlignment(HorizontalAlignment.CENTER);
// Apply the stamp only to pages 0 and 1 (zero-indexed)
pdf.stamp(stamper, Arrays.asList(0, 1));
// Save the stamped PDF
pdf.saveAs("text_stamped.pdf");
}
}
La méthode stamp accepte un List<Integer> de numéros de page indexés à partir de zéro, ce qui permet de contrôler précisément les pages sur lesquelles le filigrane doit apparaître. Lorsque aucune liste de pages n'est fournie, le tampon s'applique à toutes les pages. Cela fait de TextStamper le choix idéal lorsque votre application génère des filigranes de manière dynamique, par exemple en intégrant un identifiant de transaction unique, un nom d'utilisateur ou un horodatage sur chaque PDF généré.
TextStamper et ImageStamper partagent une classe de base commune Stamper. Utilisez l'approche de la tamponneuse chaque fois que votre application génère des filigranes dynamiquement, par exemple en intégrant un identifiant de transaction unique ou un nom d'utilisateur sur chaque PDF généré.Pour le traitement par lots, par exemple pour apposer des filigranes uniques spécifiques à chaque client sur des centaines de PDF, chargez et apposez chaque PdfDocument dans une boucle, puis appelez saveAs avant l'itération suivante. IronPDF traite chaque document indépendamment, de sorte que l'utilisation de la mémoire reste limitée. Le guide Java PDF Stamp couvre en détail ImageStamper et d'autres options d'estampillage, et la documentation IronPDF Java fournit la référence API complète.
En quoi TextStamper diffère d'applyWatermark ?
La méthode applyWatermark est optimisée pour la création rapide et cohérente de tampons multipages à partir de chaînes HTML. TextStamper et ImageStamper traitent des cas où applyWatermark ne suffit pas : cibler un sous-ensemble de pages, appliquer plusieurs tampons distincts avec des configurations différentes, ou créer des paramètres de filigrane par programmation à partir d'une base de données ou d'une saisie utilisateur. Les deux approches produisent une sortie de qualité vectorielle intégrée directement dans le flux de contenu PDF, de sorte que les filigranes survivrent à la ré-enregistrement, l'impression et les lecteurs PDF qui ne respectent pas les calques de contenu optionnels.
Les développeurs travaillant avec la bibliothèque Apache PDFBox pour le filigrane constateront que l'approche d'IronPDF est considérablement plus simple. PDFBox nécessite la construction manuelle de flux de contenu et la gestion des ressources, tandis que applyWatermark accepte une chaîne HTML simple. Le guide sur les filigranes iText publié sur Baeldung illustre une tâche similaire avec iText, qui implique la création d'objets PdfStampAnnotation et leur ajout via un pipeline PdfCanvas. IronPDF réduit cela à un simple appel de méthode.
PdfDocument.extractAllText() et vérifiez la présence de la chaîne de filigrane attendue, ou consultez la discussion de la communauté Stack Overflow sur la manipulation de PDF en Java pour connaître les schémas de dépannage courants.Quelles sont les prochaines étapes pour le filigrane de PDF en Java ?
Ce guide a présenté quatre approches pour ajouter des filigranes aux PDF avec IronPDF for Java : des filigranes textuels simples via applyWatermark, des filigranes d'image utilisant les balises HTML <img>, le contrôle de l'opacité et de l'alignement via les paramètres de méthode, et l'apposition programmatique avec TextStamper et ImageStamper pour les cas d'utilisation avancés.
Commencez votre essai gratuit pour tester le filigrane dans votre application Java. L'essai comprend un accès complet à toutes les fonctionnalités de tamponnage et de filigranage sans limite de temps pour l'évaluation. Lorsque vous êtes prêt à déployer, consultez les options de licence pour trouver le niveau qui correspond à votre utilisation.
Prêt à voir ce que vous pouvez faire d'autre? Consultez la page de tutoriels complète ici : Guides How-To IronPDF for Java
Questions Fréquemment Posées
Comment ajouter un filigrane textuel à un PDF en Java ?
Chargez votre PDF avec PdfDocument.fromFile(), puis appelez pdf.applyWatermark() avec une chaîne HTML. IronPDF rend tout HTML et CSS valide, de sorte que vous pouvez définir la couleur, la taille de la police et l'opacité directement sur l'élément.
Puis-je utiliser des images comme filigranes en Java ?
Oui. Passez une balise dans votre chaîne HTML à applyWatermark(). Les fichiers PNG avec des arrière-plans transparents produisent les résultats les plus clairs. Vous pouvez également utiliser la classe ImageStamper pour cibler une plage de pages.
Comment puis-je contrôler l'opacité du filigrane ?
Passez un entier de 0 (entièrement transparent) à 100 (entièrement opaque) comme deuxième argument de applyWatermark(). Les valeurs comprises entre 20 et 40 fonctionnent bien pour la plupart des documents sans masquer le texte du corps.
Puis-je faire pivoter un filigrane en diagonale ?
Oui. Ajoutez un style CSS transform: rotate(-45deg) à votre élément HTML avant de le passer à applyWatermark(). IronPDF applique toutes les transformations CSS3 standards lors du rendu.
Quelle est la différence entre applyWatermark et TextStamper ?
applyWatermark() est l'approche la plus rapide pour appliquer le même tampon basé sur HTML à chaque page. TextStamper offre un contrôle programmatique sur la police, la rotation et une liste de pages pour cibler uniquement les pages spécifiques.
Comment positionner un filigrane à un emplacement spécifique ?
Passez les valeurs d'énumération VerticalAlignment et HorizontalAlignment comme troisième et quatrième arguments à applyWatermark(). Les positions disponibles incluent TOP, MIDDLE, BOTTOM combinés avec LEFT, CENTER, RIGHT.
Puis-je appliquer différents filigranes à différentes pages ?
Oui. Utilisez TextStamper ou ImageStamper et passez une liste de numéros de pages basés sur zéro à la méthode stamp() pour cibler uniquement les pages nécessitant un filigrane spécifique.
Puis-je combiner des filigranes de texte et d'image dans le même PDF ?
Oui. Appelez applyWatermark() plusieurs fois ou effectuez plusieurs appels de stamp() avant de sauvegarder. Chaque appel ajoute une nouvelle couche au flux de contenu PDF de manière indépendante.


