Comment convertir HTML en PDF avec IronPDF pour JAVA

HTML vers PDF en Java

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPDF for Java convertit le contenu HTML en documents PDF en exécutant un moteur de rendu Chromium complet — le même moteur qui alimente les navigateurs modernes. Chaque propriété CSS, police, image, et mise en page générée par JavaScript est rendue exactement comme elle le serait dans une fenêtre de navigateur, puis atterrit sur la page sous forme de PDF précis au pixel.

Ce tutoriel parcours les trois méthodes de conversion principales : chaîne HTML en PDF, URL en direct en PDF, et fichier HTML local en PDF. Il couvre également l'installation, la configuration de licence, et les options de rendu que les développeurs utilisent le plus souvent.

La bibliothèque Java reflète la forme de l'API de IronPDF for .NET, de sorte que les équipes travaillant sur les deux environnements d'exécution trouveront la transition directe. Le code source de tous les exemples de ce tutoriel est disponible sur GitHub.

Mode d'emploi rapide: Convertir HTML en PDF en Java

Ajoutez IronPDF à votre Maven pom.xml, puis appelez une seule méthode pour générer un PDF :

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/quickstart.java
import com.ironsoftware.ironpdf.*;

// Set your license key before any rendering calls
License.setLicenseKey("YOUR-LICENSE-KEY");

// Convert an HTML string to a PDF and save it
PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Hello from IronPDF for Java!</h1>");
pdf.saveAs("output.pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/quickstart.java
import com.ironsoftware.ironpdf.*;

// Set your license key before any rendering calls
License.setLicenseKey("YOUR-LICENSE-KEY");

// Convert an HTML string to a PDF and save it
PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Hello from IronPDF for Java!</h1>");
pdf.saveAs("output.pdf");
JAVA

Commencez à utiliser IronPDF dans votre projet aujourd'hui avec un essai gratuit.

Première étape :
green arrow pointer

Table des matières


Installation d'IronPDF for Java

IronPDF for Java est distribué via Maven Central et en tant que JAR autonome. La voie Maven est recommandée pour la plupart des projets car elle gère les dépendances transitives et conserve les versions des bibliothèques cohérentes sur les machines des développeurs et les pipelines CI.

Option 1 : Ajouter IronPDF en tant que dépendance Maven

Ouvrez le fichier pom.xml du projet et ajoutez les entrées suivantes au bloc <dependencies> :

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/maven-dependency.xml
<dependencies>

    <dependency>
        <groupId>com.ironsoftware</groupId>
        <artifactId>ironpdf</artifactId>
        <version>[LATEST_VERSION]</version>
    </dependency>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>[LATEST_VERSION]</version>
    </dependency>
</dependencies>
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/maven-dependency.xml
<dependencies>

    <dependency>
        <groupId>com.ironsoftware</groupId>
        <artifactId>ironpdf</artifactId>
        <version>[LATEST_VERSION]</version>
    </dependency>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>[LATEST_VERSION]</version>
    </dependency>
</dependencies>
XML

Le premier artefact récupère la dernière version IronPDF for Java. Le deuxième artefact active la journalisation SLF4J afin que le moteur de rendu d'IronPDF puisse écrire des messages de diagnostic pendant l'exécution. Les développeurs qui préfèrent Logback ou Log4J peuvent substituer ce fournisseur à la place. La dépendance de journalisation est optionnelle — omettez-la si les journaux ne sont pas nécessaires.

Après avoir économisé le fichier, exécutez mvn install depuis le répertoire racine du projet pour télécharger les deux bibliothèques. Maven résout automatiquement le graphique complet des dépendances, y compris toutes les dépendances transitives dont IronPDF a besoin.

Pour les projets Gradle, la déclaration de dépendance équivalente dans build.gradle est :

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/gradle-dependency.java
// build.gradle (Groovy DSL)
// dependencies {
//     implementation 'com.ironsoftware:ironpdf:[LATEST_VERSION]'
//     implementation 'org.slf4j:slf4j-simple:[LATEST_VERSION]'
// }
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/gradle-dependency.java
// build.gradle (Groovy DSL)
// dependencies {
//     implementation 'com.ironsoftware:ironpdf:[LATEST_VERSION]'
//     implementation 'org.slf4j:slf4j-simple:[LATEST_VERSION]'
// }
JAVA

Remplacez [LATEST_VERSION] par le numéro de version figurant dans le journal des modifications d'IronPDF ou sur la page Maven Central de l'artefact.

Option 2 : Ajouter le fichier JAR manuellement

Téléchargez directement le JAR d'IronPDF depuis Maven Central et ajoutez-le au classpath du projet. Cette approche fonctionne sans outil de build mais nécessite une gestion manuelle des versions, elle est donc mieux adaptée aux projets patrimoniaux qui n'utilisent ni Maven ni Gradle, ou aux environnements où l'accès au réseau sortant est restreint.

Après le téléchargement, ajoutez le JAR au classpath du projet via les paramètres du projet de l'IDE. Dans IntelliJ IDEA, faites un clic droit sur la racine du projet, sélectionnez "Open Module Settings", naviguez jusqu'à "Dependencies" et ajoutez le fichier JAR. Dans Eclipse, faites un clic droit sur le projet, allez sur "Properties > Java Build Path > Libraries", puis cliquez sur "Add External JARs".

Veuillez noterLe JAR IronPDF inclut un binaire du moteur Chromium intégré. Le premier appel de rendu sur une nouvelle machine l'extraire dans un répertoire temporaire, ce qui prend quelques secondes. Les appels suivants utilisent le binaire mis en cache et démarrent instantanément. Dans les environnements conteneurisés, montez un volume persistant au chemin d'extraction pour éviter de ré-extraire à chaque démarrage du conteneur.

Configuration système requise

IronPDF for Java fonctionne sur JDK 8 ou une version ultérieure. Il prend en charge Windows, Linux et macOS sur les architectures x86-64 et ARM64. Aucune installation de navigateur externe n'est requise — le binaire Chromium est inclus avec le JAR. Sur Linux, assurez-vous que les bibliothèques partagées standard attendues par Chromium sont présentes. La documentation IronPDF for Java répertorie les packages minimaux requis pour les distributions Linux courantes.


Comment importer IronPDF et configurer une clé de licence ?

Toutes les classes IronPDF se trouvent dans le package com.ironsoftware.ironpdf. Importez-le en haut de tout fichier source qui créera ou manipulera des documents PDF.

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/import-and-license.java
import com.ironsoftware.ironpdf.*;
import java.nio.file.Paths;

// Apply your license key before any other IronPDF calls
License.setLicenseKey("YOUR-LICENSE-KEY");

// Optional: set a custom log file path
Settings.setLogPath(Paths.get("IronPdfEngine.log"));
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/import-and-license.java
import com.ironsoftware.ironpdf.*;
import java.nio.file.Paths;

// Apply your license key before any other IronPDF calls
License.setLicenseKey("YOUR-LICENSE-KEY");

// Optional: set a custom log file path
Settings.setLogPath(Paths.get("IronPdfEngine.log"));
JAVA

Sans clé de licence, IronPDF fonctionne en mode d'essai et tamponne chaque page PDF avec un filigrane en tuiles. L'activation de la clé supprime le filigrane et débloque toutes les fonctionnalités. Commencez un essai gratuit pour obtenir immédiatement une clé.

Filigrane du mode d'essai d'IronPDF apposé sur une page PDF rendue

La clé de licence est une chaîne qu'Iron Software émet lorsqu'une licence d'essai ou commerciale est activée. Stockez-la dans une variable d'environnement ou un fichier de configuration plutôt que de la coder en dur dans le code source. Un modèle courant est de la lire à partir d'une variable d'environnement au démarrage :

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/license-from-env.java
import com.ironsoftware.ironpdf.*;

// Read the license key from an environment variable
String licenseKey = System.getenv("IRONPDF_LICENSE_KEY");
if (licenseKey != null && !licenseKey.isEmpty()) {
    License.setLicenseKey(licenseKey);
}
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/license-from-env.java
import com.ironsoftware.ironpdf.*;

// Read the license key from an environment variable
String licenseKey = System.getenv("IRONPDF_LICENSE_KEY");
if (licenseKey != null && !licenseKey.isEmpty()) {
    License.setLicenseKey(licenseKey);
}
JAVA

Cette approche garde la clé hors du contrôle de version et simplifie l'utilisation de clés différentes pour les environnements de développement, de pré-production et de production.

ImportantLicense.setLicenseKey et Settings.setLogPath doivent tous deux être appelés avant toute méthode de rendu ou de manipulation. Placez-les au démarrage de l'application — idéalement dans un bloc d'initialisation statique ou un point d'entrée main.


Comment convertir une chaîne HTML en PDF ?

PdfDocument.renderHtmlAsPdf accepte une chaîne de balises HTML et renvoie un objet PdfDocument qui peut être économisé, fusionné ou modifié avant d'être écrit sur le disque. C'est la méthode principale pour le HTML généré par programme — par exemple, des rapports construits en combinant des valeurs de base de données avec un modèle HTML défini en tant que chaîne Java ou chargé depuis un fichier.

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/html-string-to-pdf.java
import com.ironsoftware.ironpdf.*;

// Simple one-liner: convert an HTML string to a PDF
PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Hello from IronPDF!</h1>");
pdf.saveAs("htmlstring_to_pdf.pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/html-string-to-pdf.java
import com.ironsoftware.ironpdf.*;

// Simple one-liner: convert an HTML string to a PDF
PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Hello from IronPDF!</h1>");
pdf.saveAs("htmlstring_to_pdf.pdf");
JAVA

Le moteur de rendu résout les chemins d'actifs relatifs (images, feuilles de style, scripts) en fonction du deuxième argument optionnel — le chemin de base. Lorsqu'un chemin de base est fourni, le moteur le considère comme la racine à partir de laquelle les URL relatives sont résolues. Cela permet au HTML qui référence des fichiers CSS et image locaux de se rendre correctement sans aucune manipulation de chemin dans le balisage source.

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/html-string-with-assets.java
import com.ironsoftware.ironpdf.*;

// HTML references assets in a local "assets" subfolder
String html = "<html>" +
    "<head><link rel='stylesheet' href='assets/style.css'></head>" +
    "<body><h1>Invoice</h1><img src='assets/logo.png' /></body>" +
    "</html>";

// Pass the base path so IronPDF resolves relative asset URLs
PdfDocument pdf = PdfDocument.renderHtmlAsPdf(html, "C:/my-project/templates");
pdf.saveAs("invoice.pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/html-string-with-assets.java
import com.ironsoftware.ironpdf.*;

// HTML references assets in a local "assets" subfolder
String html = "<html>" +
    "<head><link rel='stylesheet' href='assets/style.css'></head>" +
    "<body><h1>Invoice</h1><img src='assets/logo.png' /></body>" +
    "</html>";

// Pass the base path so IronPDF resolves relative asset URLs
PdfDocument pdf = PdfDocument.renderHtmlAsPdf(html, "C:/my-project/templates");
pdf.saveAs("invoice.pdf");
JAVA

La méthode saveAs accepte un chemin absolu ou relatif. La bibliothèque crée le fichier s'il n'existe pas et le remplace s'il existe déjà. Lorsque vous écrivez dans un répertoire que l'application n'a peut-être pas encore créé, créez d'abord le répertoire à l'aide de Files.createDirectories(Paths.get("output")) avant d'appeler saveAs.

IronPDF prend en charge l'ensemble complet de fonctionnalités HTML5 et CSS3 tel qu'implémenté dans Chromium. Les polices personnalisées chargées via @font-face dans le CSS s'affichent correctement lorsque les fichiers de polices sont accessibles à l'emplacement de base. Les éléments SVG et les éléments <canvas> rendus par JavaScript apparaissent également dans le fichier PDF généré.

ConseilsGardez les modèles HTML dans un répertoire dédié et transmettez ce répertoire comme chemin de base. Ce modèle permet aux designers de mettre à jour le modèle sans toucher à aucun code Java.


Comment convertir une URL en PDF en Java ?

PdfDocument.renderUrlAsPdf récupère la page à l'URL indiquée, attend que le JavaScript s'exécute et que le contenu dynamique se charge, puis convertit le DOM entièrement rendu en PDF.

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/url-to-pdf.java
import com.ironsoftware.ironpdf.*;

// Convert a live web page to PDF
PdfDocument pdf = PdfDocument.renderUrlAsPdf("https://en.wikipedia.org/wiki/PDF");
pdf.saveAs("wikipedia_pdf_article.pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/url-to-pdf.java
import com.ironsoftware.ironpdf.*;

// Convert a live web page to PDF
PdfDocument pdf = PdfDocument.renderUrlAsPdf("https://en.wikipedia.org/wiki/PDF");
pdf.saveAs("wikipedia_pdf_article.pdf");
JAVA

Le moteur gère les en-têtes d'authentification, les cookies, et les applications monopage riches en JavaScript. Pour les pages nécessitant une connexion ou des en-têtes de requête personnalisés, utilisez la classe ChromePdfRenderOptions pour configurer les paramètres de requête avant d'appeler renderUrlAsPdf.

Cette méthode de conversion est utile pour archiver des pages Web, générer des instantanés de conformité, et produire des rapports à destination des clients depuis des tableaux de bord internes. Les pages générées par le serveur et accessibles via un réseau local sont entièrement prises en charge — passez http://localhost:8080/report/123 de la même manière qu'une URL publique. IronPDF attend que la page soit complètement chargée avant de rendre, de sorte que les tableaux de bord qui reposent sur des récupérations de données asynchrones sont rendus avec leurs données peuplées plutôt qu'avec des graphiques vides.

Pour les pages protégées par une authentification HTTP de base, transmettez les identifiants dans l'URL en utilisant le format http://user:password@host/path. Pour les pages protégées par des cookies de session, configurez le cookie jar sur l'objet ChromePdfRenderOptions avant de le transmettre à renderUrlAsPdf. Consultez la documentation IronPDF for Java pour plus de détails sur la configuration des en-têtes de requête et la gestion des cookies pour les URLs authentifiées.


Comment convertir un fichier HTML local en PDF ?

PdfDocument.renderHtmlFileAsPdf lit un fichier HTML à partir du système de fichiers local et le convertit au format PDF. Tous les actifs liés (CSS, JavaScript, images) référencés par des chemins relatifs dans le fichier sont résolus par rapport au propre répertoire du fichier HTML.

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/html-file-to-pdf.java
import com.ironsoftware.ironpdf.*;

// Convert a local HTML file — assets resolve relative to its directory
PdfDocument pdf = PdfDocument.renderHtmlFileAsPdf("C:/invoices/TestInvoice1.html");
pdf.saveAs("htmlfile_to_pdf.pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/html-file-to-pdf.java
import com.ironsoftware.ironpdf.*;

// Convert a local HTML file — assets resolve relative to its directory
PdfDocument pdf = PdfDocument.renderHtmlFileAsPdf("C:/invoices/TestInvoice1.html");
pdf.saveAs("htmlfile_to_pdf.pdf");
JAVA

Cette approche est la plus précise pour convertir des documents HTML complexes. Parce que le moteur de rendu opère sur le chemin du système de fichiers plutôt qu'une chaîne en mémoire, les références relatives aux répertoires d'assets multi-niveaux se résolvent sans configuration supplémentaire. Un modèle qui s'appuie sur style.css et script.js dans le même dossier s'affichera correctement sans aucun ajustement de chemin d'accès.

Cette méthode est particulièrement bien adaptée à la génération de factures, à la production de contrats et à tout flux de travail où un designer maintient le modèle HTML indépendamment de l'application Java. L'équipe de développement traite le modèle comme un fichier de données, le stocke avec l'application et appelle renderHtmlFileAsPdf avec le chemin d'accès. Lorsque le designer met à jour le modèle pour changer l'image de marque ou la mise en page, aucun changement de code Java n'est nécessaire.

Veuillez noterIronPDF supporte toutes les fonctionnalités HTML et CSS modernes que Chromium supporte — Flexbox, grille CSS, variables CSS, polices Web et requêtes média se rendent toutes correctement dans le PDF de sortie.


Comment configurer les options de génération de PDF ?

ChromePdfRenderOptions contrôle le comportement de rendu : format du papier, marges, niveau de Zoom, type de support d'impression, délai d'expiration JavaScript, etc. Créez une instance, configurez les propriétés souhaitées, puis transmettez-la en tant que deuxième argument à n'importe quelle méthode render*AsPdf.

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/render-options.java
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.render.*;

ChromePdfRenderOptions options = new ChromePdfRenderOptions();

// Render the page using the print media type (uses @media print CSS rules)
options.setCssMediaType(CssMediaType.PRINT);

// Wait up to 5 seconds for JavaScript to finish executing
options.setJavaScriptTimeout(5000);

// Apply a 1.5x zoom level to scale content to fit the page
options.setZoom(150);

// Render at 150 DPI for sharper images in print output
options.setDpi(150);

PdfDocument pdf = PdfDocument.renderHtmlAsPdf(
    "<h1>Styled Report</h1>",
    options
);
pdf.saveAs("styled_report.pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/render-options.java
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.render.*;

ChromePdfRenderOptions options = new ChromePdfRenderOptions();

// Render the page using the print media type (uses @media print CSS rules)
options.setCssMediaType(CssMediaType.PRINT);

// Wait up to 5 seconds for JavaScript to finish executing
options.setJavaScriptTimeout(5000);

// Apply a 1.5x zoom level to scale content to fit the page
options.setZoom(150);

// Render at 150 DPI for sharper images in print output
options.setDpi(150);

PdfDocument pdf = PdfDocument.renderHtmlAsPdf(
    "<h1>Styled Report</h1>",
    options
);
pdf.saveAs("styled_report.pdf");
JAVA

Le paramètre CssMediaType.PRINT indique au moteur d'appliquer les règles CSS @media print, que de nombreux modèles HTML utilisent pour masquer les barres de navigation et appliquer des mises en page spécifiques à la PRINT. La méthode setJavaScriptTimeout est importante pour les pages qui utilisent des bibliothèques de création de graphiques JavaScript (D3.js, Chart.js) ou du contenu à chargement différé — si le délai d'attente est trop court, le PDF capturera la page avant que JavaScript n'ait fini de l'afficher, ce qui produira des graphiques vides ou des sections manquantes. Augmentez le délai d'attente si le PDF rendu manque de contenu attendu.

La méthode setDpi contrôle la résolution des images dans la sortie. La valeur par défaut (96 DPI) est appropriée pour les documents à l'écran. Pour les PDFs qui seront imprimés ou affichés sur des écrans à haute résolution, utilisez 150 ou 300 DPI. Des valeurs DPI plus élevées augmentent la taille du fichier proportionnellement. Voir l'exemple de code des paramètres de génération de PDF pour la liste complète des propriétés configurables.


Comment ajouter des en-têtes et pieds de page ?

IronPDF prend en charge les en-têtes et pieds de page basés sur le texte ainsi que ceux basés sur HTML. Les en-têtes de texte utilisent un objet TextHeaderFooter avec des jetons de format ({page}, {total-pages}, {date}) qui se résolvent automatiquement au moment du rendu.

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/headers-footers.java
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.headerfooter.*;

// Create a text-based header and footer
TextHeaderFooter header = new TextHeaderFooter();
header.setCenterText("Confidential — {date}");
header.setFontSize(10);

TextHeaderFooter footer = new TextHeaderFooter();
footer.setLeftText("My Company, Inc.");
footer.setRightText("Page {page} of {total-pages}");
footer.setFontSize(9);

PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Annual Report</h1>");
pdf.addTextHeaders(header);
pdf.addTextFooters(footer);
pdf.saveAs("report_with_headers.pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/headers-footers.java
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.headerfooter.*;

// Create a text-based header and footer
TextHeaderFooter header = new TextHeaderFooter();
header.setCenterText("Confidential — {date}");
header.setFontSize(10);

TextHeaderFooter footer = new TextHeaderFooter();
footer.setLeftText("My Company, Inc.");
footer.setRightText("Page {page} of {total-pages}");
footer.setFontSize(9);

PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Annual Report</h1>");
pdf.addTextHeaders(header);
pdf.addTextFooters(footer);
pdf.saveAs("report_with_headers.pdf");
JAVA

Les balises {page} et {total-pages} génèrent des valeurs telles que " 3 sur 12 " dans le pied de page et se mettent à jour automatiquement à mesure que le nombre de pages change ; il n'est donc pas nécessaire de connaître le nombre final de pages avant le rendu. Le jeton {date} insère la date du jour en utilisant les paramètres régionaux du système. D'autres jetons sont disponibles, notamment {time}, {document-title} et {url}.

Les en-têtes et pieds de page ajoutés avec addTextHeaders et addTextFooters s'appliquent par défaut à toutes les pages du document. Passez le paramètre de plage de pages optionnel pour les restreindre à des pages spécifiques — par exemple, pour sauter l'en-tête sur la page de couverture.

Pour les en-têtes stylisés nécessitant des logos, des couleurs de marque ou des mises en page personnalisées, utilisez plutôt HtmlHeaderFooter — il accepte une chaîne HTML complète et l'affiche de la même manière que le corps de la page. Voir l'exemple d'en-têtes et pieds de page personnalisés pour le modèle complet d'en-tête HTML.


Comment définir les marges de page et la taille du papier ?

Passez une instance ChromePdfRenderOptions avec les valeurs de marge et de format de papier configurées avant d'appeler toute méthode render*AsPdf.

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/margins-paper-size.java
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.render.*;
import com.ironsoftware.ironpdf.page.*;

ChromePdfRenderOptions options = new ChromePdfRenderOptions();

// Set uniform margins in millimeters
options.setMarginTop(20);
options.setMarginBottom(20);
options.setMarginLeft(15);
options.setMarginRight(15);

// Use A4 paper (default is Letter)
options.setPaperSize(PaperSize.A4);

PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<p>Page content here.</p>", options);
pdf.saveAs("a4_with_margins.pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/margins-paper-size.java
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.render.*;
import com.ironsoftware.ironpdf.page.*;

ChromePdfRenderOptions options = new ChromePdfRenderOptions();

// Set uniform margins in millimeters
options.setMarginTop(20);
options.setMarginBottom(20);
options.setMarginLeft(15);
options.setMarginRight(15);

// Use A4 paper (default is Letter)
options.setPaperSize(PaperSize.A4);

PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<p>Page content here.</p>", options);
pdf.saveAs("a4_with_margins.pdf");
JAVA

Les valeurs de marge sont en millimètres. L'énumération PaperSize couvre les formats standard (A4, Letter, Legal, A3 et autres). Les développeurs qui ont besoin de dimensions non standard peuvent définir une largeur et une hauteur personnalisées à l'aide de options.setCustomPaperWidth et options.setCustomPaperHeight. L'exemple de taille de papier personnalisée et l'exemple de marges personnalisées montrent les modèles de configuration complets.


Comment appliquer un filigrane à un PDF ?

Un filigrane dans IronPDF est un élément HTML tamponné sur chaque page à une opacité configurable. Cette approche offre aux développeurs un contrôle total sur l'apparence du filigrane — tout élément HTML, image ou texte stylisé peut servir de tampon.

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/watermark.java
import com.ironsoftware.ironpdf.*;

PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Confidential Report</h1><p>Internal use only.</p>");

// Define the watermark using an HTML string
String watermarkHtml = "<h1 style='color:rgba(200,0,0,0.3); transform:rotate(-45deg);'>DRAFT</h1>";

// Stamp the watermark on all pages at 50% opacity
pdf.applyStamp(watermarkHtml);

pdf.saveAs("draft_watermark.pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/watermark.java
import com.ironsoftware.ironpdf.*;

PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Confidential Report</h1><p>Internal use only.</p>");

// Define the watermark using an HTML string
String watermarkHtml = "<h1 style='color:rgba(200,0,0,0.3); transform:rotate(-45deg);'>DRAFT</h1>";

// Stamp the watermark on all pages at 50% opacity
pdf.applyStamp(watermarkHtml);

pdf.saveAs("draft_watermark.pdf");
JAVA

La méthode applyStamp accepte un paramètre HtmlStampOptions pour un positionnement précis : centré, en haut à gauche, décalages en pixels personnalisés et z-index (premier plan ou arrière-plan). Définir le tampon comme arrière-plan le place derrière le texte de manière à ce que le document reste lisible. Le définir comme premier plan le place au-dessus, ce qui est plus difficile à masquer lors de l'impression.

ConseilsPour produire un filigrane en tuile répétée — du type que IronPDF applique en mode essai — rendez une grille d'éléments de texte tournés dans la chaîne de tampon HTML et dimensionnez l'élément pour remplir toute la page.

Voir le guide pratique du filigrane personnalisé pour des exemples couvrant les filigranes en arrière-plan, les motifs en mosaïque, et la suppression des filigranes en mettant à niveau la licence.


Comment fusionner plusieurs PDFs en un seul ?

PdfDocument.merge combine deux ou plusieurs objets PdfDocument dans l'ordre et renvoie un seul nouveau document. C'est l'approche préférée pour assembler des rapports à partir de sections de composants, ajouter des pages de couverture ou assembler des sections par utilisateur d'un travail par lots.

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/merge-pdfs.java
import com.ironsoftware.ironpdf.*;
import java.util.Arrays;
import java.util.List;

// Render two separate HTML documents into PDFs
PdfDocument cover    = PdfDocument.renderHtmlAsPdf("<h1>Cover Page</h1>");
PdfDocument body     = PdfDocument.renderHtmlAsPdf("<h1>Report Body</h1><p>Section one...</p>");
PdfDocument appendix = PdfDocument.renderHtmlAsPdf("<h2>Appendix A</h2>");

// Merge all three into a single PDF in the specified order
List<PdfDocument> parts = Arrays.asList(cover, body, appendix);
PdfDocument merged = PdfDocument.merge(parts);
merged.saveAs("full_report.pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/merge-pdfs.java
import com.ironsoftware.ironpdf.*;
import java.util.Arrays;
import java.util.List;

// Render two separate HTML documents into PDFs
PdfDocument cover    = PdfDocument.renderHtmlAsPdf("<h1>Cover Page</h1>");
PdfDocument body     = PdfDocument.renderHtmlAsPdf("<h1>Report Body</h1><p>Section one...</p>");
PdfDocument appendix = PdfDocument.renderHtmlAsPdf("<h2>Appendix A</h2>");

// Merge all three into a single PDF in the specified order
List<PdfDocument> parts = Arrays.asList(cover, body, appendix);
PdfDocument merged = PdfDocument.merge(parts);
merged.saveAs("full_report.pdf");
JAVA

Les pages de chaque document source apparaissent dans le résultat fusionné dans l'ordre que la liste source spécifie. Le document fusionné n'hérite d'aucune métadonnée d'une source individuelle — mettez à jour meta.title et les autres propriétés du document à l'aide de PdfDocument.getPdfMetaData() après la fusion si ces champs sont importants pour l'utilisateur final.

La méthode merge dispose également d'une surcharge à deux arguments qui accepte exactement deux instances PdfDocument. Pour les fusions en vrac de nombreux documents, utilisez la surcharge de liste — elle est plus efficace que d'enchaîner plusieurs appels à deux arguments car elle traite toutes les sources en un seul passage.

Veuillez noterChaque source PdfDocument de la liste de fusion reste valide et inchangée après l'appel. L'instance merged est un nouveau document indépendant. Libérez les documents source avec leur méthode close() lorsqu'ils ne sont plus nécessaires afin de libérer les ressources natives associées.


Comment ajouter ou supprimer des pages d'un PDF ?

Des pages individuelles peuvent être copiées d'un document vers un autre, ou supprimées purement et simplement, à l'aide des méthodes PdfDocument.copyPage, PdfDocument.copyPages et PdfDocument.removePages.

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/page-operations.java
import com.ironsoftware.ironpdf.*;
import java.util.Arrays;

// Generate a multi-page document using CSS page breaks
PdfDocument report = PdfDocument.renderHtmlAsPdf(
    "<p>Page 1 content</p>" +
    "<div style='page-break-after:always;'></div>" +
    "<p>Page 2 content</p>" +
    "<div style='page-break-after:always;'></div>" +
    "<p>Page 3 content</p>"
);

// Remove page 2 (zero-indexed — page index 1)
report.removePages(Arrays.asList(1));

// Save the two-page result
report.saveAs("two_page_report.pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/page-operations.java
import com.ironsoftware.ironpdf.*;
import java.util.Arrays;

// Generate a multi-page document using CSS page breaks
PdfDocument report = PdfDocument.renderHtmlAsPdf(
    "<p>Page 1 content</p>" +
    "<div style='page-break-after:always;'></div>" +
    "<p>Page 2 content</p>" +
    "<div style='page-break-after:always;'></div>" +
    "<p>Page 3 content</p>"
);

// Remove page 2 (zero-indexed — page index 1)
report.removePages(Arrays.asList(1));

// Save the two-page result
report.saveAs("two_page_report.pdf");
JAVA

Les indices de pages dans IronPDF sont basés sur zéro. Lors de la suppression de plusieurs pages, transmettez tous les indices en un seul appel removePages plutôt que de l'appeler plusieurs fois dans une boucle, car chaque suppression décale les indices des pages suivantes. Passer la liste complète d'un coup évite les dérives d'index. Par exemple, pour supprimer les pages 2 et 4 d'un document de cinq pages, passez Arrays.asList(1, 3) — et non deux appels distincts.

Pour insérer des pages à partir d'un PDF externe — par exemple, pour ajouter une mention légale à partir d'un modèle statique —, utilisez PdfDocument.insertPdf pour insérer le document externe à un emplacement spécifique. Le nombre de pages du document récepteur est mis à jour immédiatement après l'insertion.

La propriété CSS css page-break-after:always est la méthode standard pour forcer des sauts de page dans le code HTML qui sera converti en PDF. IronPDF prend également en charge la nouvelle propriété CSS break-after: page. Les deux approches produisent des sauts de page prévisibles sans nécessiter de code Java spécial.


Comment protéger par mot de passe un PDF en Java ?

IronPDF supporte deux mots de passe distincts sur un PDF : un mot de passe propriétaire qui contrôle les permissions d'édition, d'impression et de copie, et un mot de passe utilisateur qui contrôle l'ouverture du document. Les deux sont définis via la classe SecurityOptions.

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/password-protect.java
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.security.*;

PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Secure Document</h1>");

SecurityOptions security = new SecurityOptions();

// Require a password to open the document
security.setUserPassword("user123");

// Require a separate password to edit, print, or copy content
security.setOwnerPassword("owner456");

// Restrict printing to prevent unauthorized reproduction
security.setAllowUserPrinting(PrintOptions.FullPrintQuality);

PdfSecurityManager securityManager = new PdfSecurityManager(pdf);
securityManager.setSecurityOptions(security);

pdf.saveAs("secure_document.pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/password-protect.java
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.security.*;

PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Secure Document</h1>");

SecurityOptions security = new SecurityOptions();

// Require a password to open the document
security.setUserPassword("user123");

// Require a separate password to edit, print, or copy content
security.setOwnerPassword("owner456");

// Restrict printing to prevent unauthorized reproduction
security.setAllowUserPrinting(PrintOptions.FullPrintQuality);

PdfSecurityManager securityManager = new PdfSecurityManager(pdf);
securityManager.setSecurityOptions(security);

pdf.saveAs("secure_document.pdf");
JAVA

Le paramètre AllowUserPrinting accepte une énumération PrintOptions : FullPrintQuality, LowQualityPrint ou NoPrint. Lorsque le mot de passe propriétaire est défini mais que le mot de passe utilisateur est vide, le document s'ouvre sans mot de passe mais l'édition et d'autres opérations nécessitent le mot de passe propriétaire dans un éditeur PDF.

AvertissementLa protection par mot de passe PDF crypte le fichier mais n'est pas un substitut à des systèmes de contrôle d'accès appropriés. Les utilisateurs déterminés avec des outils spécialisés peuvent tenter des attaques par force brute sur des mots de passe faibles. Utilisez des mots de passe forts et générés aléatoirement pour les documents qui nécessitent une véritable sécurité.


Comment convertir un modèle HTML avec des données dynamiques ?

Générer des PDFs à partir d'un modèle HTML basé sur des données est l'un des cas d'utilisation les plus courants pour IronPDF. L'approche standard consiste à construire la chaîne HTML en Java à l'aide d'une bibliothèque de modèles ou d'opérations sur les chaînes, puis à transmettre la chaîne finale à renderHtmlAsPdf.

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/dynamic-template.java
import com.ironsoftware.ironpdf.*;

// Simulate data from a database or service layer
String customerName  = "Acme Corp";
String invoiceNumber = "INV-20240501";
String totalAmount   = "$1,250.00";
String dueDate       = "2024-06-01";

// Build the HTML template with real data injected
String html = "<!DOCTYPE html><html><head>" +
    "<style>body{font-family:Arial,sans-serif;margin:40px;}" +
    "table{width:100%;border-collapse:collapse;}" +
    "th,td{border:1px solid #ccc;padding:8px;text-align:left;}" +
    "th{background:#f4f4f4;}</style></head><body>" +
    "<h1>Invoice</h1>" +
    "<p><strong>Customer:</strong> " + customerName + "</p>" +
    "<p><strong>Invoice #:</strong> " + invoiceNumber + "</p>" +
    "<table><tr><th>Description</th><th>Amount</th></tr>" +
    "<tr><td>Professional Services</td><td>" + totalAmount + "</td></tr>" +
    "</table>" +
    "<p><strong>Due Date:</strong> " + dueDate + "</p>" +
    "</body></html>";

PdfDocument pdf = PdfDocument.renderHtmlAsPdf(html);
pdf.saveAs(invoiceNumber + ".pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/dynamic-template.java
import com.ironsoftware.ironpdf.*;

// Simulate data from a database or service layer
String customerName  = "Acme Corp";
String invoiceNumber = "INV-20240501";
String totalAmount   = "$1,250.00";
String dueDate       = "2024-06-01";

// Build the HTML template with real data injected
String html = "<!DOCTYPE html><html><head>" +
    "<style>body{font-family:Arial,sans-serif;margin:40px;}" +
    "table{width:100%;border-collapse:collapse;}" +
    "th,td{border:1px solid #ccc;padding:8px;text-align:left;}" +
    "th{background:#f4f4f4;}</style></head><body>" +
    "<h1>Invoice</h1>" +
    "<p><strong>Customer:</strong> " + customerName + "</p>" +
    "<p><strong>Invoice #:</strong> " + invoiceNumber + "</p>" +
    "<table><tr><th>Description</th><th>Amount</th></tr>" +
    "<tr><td>Professional Services</td><td>" + totalAmount + "</td></tr>" +
    "</table>" +
    "<p><strong>Due Date:</strong> " + dueDate + "</p>" +
    "</body></html>";

PdfDocument pdf = PdfDocument.renderHtmlAsPdf(html);
pdf.saveAs(invoiceNumber + ".pdf");
JAVA

Pour les projets plus grands, envisagez une bibliothèque de gabarits Java telle que Thymeleaf ou Freemarker pour gérer les modèles HTML en tant que fichiers séparés, injecter des données via un objet contexte, et garder la syntaxe des modèles plus propre que la concaténation de chaînes. Les deux bibliothèques produisent une chaîne HTML simple qui est transmise directement à renderHtmlAsPdf.

ConseilsLors de la génération de PDF dans un traitement par lots — par exemple, une facture par client — instanciez ChromePdfRenderOptions une seule fois avant la boucle et réutilisez la même instance pour chaque appel de rendu. Créer un nouvel objet d'options par appel ajoute un surcoût inutile d'allocation d'objet.


Comment extraire du texte d'un PDF en Java ?

PdfDocument.extractAllText lit tout le contenu textuel de chaque page d'un PDF et le renvoie sous la forme d'une chaîne unique. C'est utile pour l'indexation de recherche, l'extraction de données, et la validation de contenu après le rendu.

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/extract-text.java
import com.ironsoftware.ironpdf.*;
import java.nio.file.Paths;

// Open an existing PDF (or use the result of a render call)
PdfDocument pdf = PdfDocument.fromFile(Paths.get("output.pdf"));

// Extract all text content as a plain string
String text = pdf.extractAllText();
System.out.println(text);
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/extract-text.java
import com.ironsoftware.ironpdf.*;
import java.nio.file.Paths;

// Open an existing PDF (or use the result of a render call)
PdfDocument pdf = PdfDocument.fromFile(Paths.get("output.pdf"));

// Extract all text content as a plain string
String text = pdf.extractAllText();
System.out.println(text);
JAVA

La chaîne retournée préserve l'ordre de lecture du texte sur chaque page mais n'inclut pas la mise en forme. Les espaces entre colonnes et cellules de table sont représentés par des espaces. Pour les fichiers PDF contenant plusieurs sections logiques, extractTextFromPage(int pageIndex) isole le texte d'une seule page, ce qui est plus efficace lors du traitement de documents volumineux page par page.

L'extraction de texte ne fonctionne que sur les PDF où le texte est stocké sous forme d'objets texte réels dans la structure du PDF — les PDF générés par renderHtmlAsPdf sont toujours éligibles. Les documents scannés dont les pages sont des images nécessitent un OCR avant que l'extraction de texte soit possible. IronOCR est une bibliothèque complémentaire d'Iron Software qui ajoute des capacités OCR aux applications Java et .NET.

Pour l'extraction d'images, utilisez pdf.extractAllImages() qui renvoie une liste d'objets BufferedImage, un par image trouvée dans le document. Voir l'extraction de texte à partir d'un exemple de PDF et l'extraction d'images à partir d'un exemple de PDF pour des modèles de code complets.


Comment compresser un fichier PDF ?

PdfDocument.compressImages réduit la taille des fichiers en réencodant les images intégrées à une qualité inférieure. C'est particulièrement efficace pour les PDFs générés à partir de pages web contenant de grandes photos ou bannières.

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/compress-pdf.java
import com.ironsoftware.ironpdf.*;
import java.nio.file.Paths;

PdfDocument pdf = PdfDocument.fromFile(Paths.get("large_report.pdf"));

// Compress embedded images to 60% quality (0–100 scale)
pdf.compressImages(60);

pdf.saveAs("compressed_report.pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/compress-pdf.java
import com.ironsoftware.ironpdf.*;
import java.nio.file.Paths;

PdfDocument pdf = PdfDocument.fromFile(Paths.get("large_report.pdf"));

// Compress embedded images to 60% quality (0–100 scale)
pdf.compressImages(60);

pdf.saveAs("compressed_report.pdf");
JAVA

Les valeurs de qualité entre 50 et 75 réduisent généralement la taille du fichier de 40 à 70 % avec une fidélité visuelle acceptable pour la lecture à l'écran. Les valeurs inférieures à 40 peuvent introduire des artefacts visibles sur les photos, bien qu'elles puissent être acceptables pour des diagrammes et captures d'écran avec de grandes zones de couleur unie.

La méthode surchargée compressImages(int quality, boolean scaleExistingImages) accepte également une valeur booléenne indiquant s'il faut redimensionner les images dont la taille est supérieure à celle affichée dans le PDF. En définissant cela sur true, la taille du fichier est encore réduite en éliminant la résolution excédentaire qui se produit lorsqu'une image haute résolution est intégrée mais affichée à une taille beaucoup plus petite sur la page. C'est courant dans les conversions de web à PDF où les images sont servies à une résolution doublée pour les écrans retina.

L'exemple de compression PDF démontre la compression par lots sur des documents multi-pages, y compris comment vérifier la réduction de taille après compression.


Prochaines étapes

Ce tutoriel a couvert les trois méthodes de conversion HTML en PDF, l'installation, la configuration de licence, les options de rendu, les en-têtes et pieds de page, les paramètres de mise en page, l'extraction de texte et la compression de fichier.

Pour aller plus loin, explorez ces ressources dans la documentation de IronPDF for Java :

  1. Paramètres de génération de PDFConfigurez DPI, zoom, temps d'attente, et type de média CSS pour un contrôle de rendu précis.
  2. En-têtes et pieds de pageAjoutez des en-têtes et pieds de page HTML avec logos de marque et mises en page personnalisées.
  3. Mise en page — Définissez des marges personnalisées et des dimensions de papier pour un résultat prêt à être imprimé.
  4. Filigranes — Appliquez des filigranes arrière-plan et premier plan pour la sécurité du document.
  5. Extraction de contenuExtrayez du texte des PDFs et extrayez des images pour un traitement aval.
  6. Compression de fichierRéduisez la taille des fichiers PDF pour le stockage et la livraison par e-mail.
  7. Référence API — Parcourez la référence complète de l'API Java de IronPDF pour chaque classe et méthode.

Commencez un essai gratuit pour commencer à convertir du HTML en PDF dans votre application Java dès aujourd'hui. Lorsque vous êtes prêt à déployer, consultez les options de licence pour trouver le plan qui convient à votre projet.

Questions Fréquemment Posées

Comment convertir une chaîne HTML en PDF en Java?

Appelez PdfDocument.renderHtmlAsPdf avec votre chaîne HTML. Passez un chemin de base facultatif comme second argument afin que les références relatives CSS, image, et script se résolvent correctement. Appelez saveAs sur le PdfDocument renvoyé pour écrire le fichier.

Comment convertir une URL en PDF en Java?

Appelez PdfDocument.renderUrlAsPdf avec l'URL entièrement qualifiée. IronPDF récupère la page, attend que JavaScript s'exécute, et rend le DOM complètement chargé en PDF.

Comment convertir un fichier HTML local en PDF en Java?

Appelez PdfDocument.renderHtmlFileAsPdf avec un chemin de fichier absolu. Toutes les références de ressources relatives dans le fichier HTML se résolvent automatiquement relativement au répertoire du fichier.

Comment installer IronPDF dans un projet Java utilisant Maven?

Ajoutez la dépendance IronPDF à pom.xml avec groupId com.ironsoftware et artifactId ironpdf, puis exécutez mvn install à partir de la racine du projet.

Comment supprimer le filigrane des PDFs générés par IronPDF?

Appelez License.setLicenseKey avec une clé de licence valide avant tout appel de rendu. Sans clé de licence, IronPDF applique un filigrane en mosaïque sur chaque page.

Comment ajouter des en-têtes et pieds de page à un PDF en Java?

Créez une instance TextHeaderFooter, définissez ses propriétés de texte en utilisant des jetons de format tels que {page} et {total-pages}, puis appelez pdf.addTextHeaders et pdf.addTextFooters. Pour des en-têtes stylisés avec logos, utilisez HtmlHeaderFooter à la place.

Comment définir les marges de page PDF et la taille du papier en Java?

Créez une instance ChromePdfRenderOptions et appelez setMarginTop, setMarginBottom, setMarginLeft, setMarginRight (en millimètres) et setPaperSize avec une valeur d'énumération PaperSize. Passez les options à toute méthode de rendu.

Comment fusionner plusieurs PDFs en un seul en Java?

Créez une List avec les documents dans l'ordre souhaité et passez-la à PdfDocument.merge. La méthode retourne un nouveau PdfDocument contenant toutes les pages de toutes les sources.

Comment protéger un PDF par mot de passe en Java?

Créez une instance SecurityOptions, appelez setUserPassword et setOwnerPassword, puis appliquez-les via PdfSecurityManager avant d'enregistrer le document.

Comment extraire du texte d'un PDF en Java ?

Appelez pdf.extractAllText() pour récupérer tout le contenu texte comme une seule chaîne. Utilisez extractTextFromPage(int pageIndex) pour extraire du texte d'une page spécifique.

Darrius Serrant
Ingénieur logiciel Full Stack (WebOps)

Darrius Serrant est titulaire d'un baccalauréat en informatique de l'université de Miami et travaille comme ingénieur marketing WebOps Full Stack chez Iron Software. Attiré par le codage dès son plus jeune âge, il a vu l'informatique comme à la fois mystérieuse et accessible, en faisant le ...

Lire la suite
Prêt à commencer?
Version : 2026.5 just released
Still Scrolling Icon

Vous faites encore défiler ?

Vous voulez une preuve rapidement ?
exécuter un échantillon Regardez votre code HTML se transformer en PDF.