Comment imprimer des fichiers PDF en Java

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

IronPDF for Java vous permet d'imprimer des fichiers PDF de manière programmatique, avec ou sans interaction de l'utilisateur. Vous pouvez envoyer des PDF directement à des imprimantes physiques, contrôler les paramètres d'impression tels que les copies et les plages de pages, et automatiser les flux de travail d'impression de documents dans les applications Java. Que vous conceviez des systèmes de gestion de documents d'entreprise ou automatisiez la génération de factures, IronPDF fournit des capacités d'impression qui s'intègrent parfaitement à l'infrastructure d'impression de Java. Vous pouvez également l'utiliser avec d'autres tâches PDF telles que la signature numérique des PDF ou la conversion d'images en PDF dans le cadre d'un pipeline de traitement de documents plus large.

Flux de travail d'impression IronPDF for Java montrant l'envoi d'un document PDF vers une imprimante par programmation

Démarrage rapide : Imprimer un fichier PDF en Java

  1. Ajoutez la dépendance IronPDF à votre projet
  2. Définissez votre clé de licence avec License.setLicenseKey()
  3. Charger ou créer un PDF à l'aide de PdfDocument
  4. Appelez pdf.print() pour l'impression par boîte de dialogue ou pdf.printWithoutDialog() pour l'impression directe
  5. Le PDF est envoyé à votre imprimante sélectionnée ou par défaut

```java :title=Quickstart //:path=/static-assets/ironpdf-java/content-code-examples/how-to/print-pdf/quickstart.java import com.ironsoftware.ironpdf.* ;

classe publique PrintPDFQuickstart { public static void main(String[] args) { // Appliquer votre clé de licence License.setLicenseKey("YOUR-LICENSE-KEY") ;

    // Créer un PDF à partir de HTML
    PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Invoice #12345</h1><p>Total: $100.00</p>");

    // Imprimer avec dialogue (interactif)
    pdf.print() ;

    // Ou imprimer sans dialogue (automatisé)
    // pdf.printWithoutDialog() ;
}

}


<div class="hsg-featured-snippet">
    <h3>Comment imprimer des fichiers PDF en Java</h3>
    <ol>
        <li><a class="js-modal-open" data-modal-id="download-modal" href="#download-modal">Installer la bibliothèque Java pour imprimer des fichiers PDF</a></li>
        <li>Chargez un PDF existant ou générez-en un nouveau</li>
        <li>Utilisez la méthode <code>print</code> pour imprimer avec un dialogue</li>
        <li>Utilisez la méthode <code>printWithoutDialog</code> pour imprimer sans dialogue</li>
        <li>Vérifiez le document PDF imprimé</li>
    </ol>
</div>

<hr>

## Comment imprimer des PDF avec l'interaction de l'utilisateur?

Chargez le document PDF que vous souhaitez imprimer, puis appelez `pdf.print()`. La méthode ouvre le dialogue d'impression standard, permettant aux utilisateurs de sélectionner l'imprimante, la plage de pages et d'autres options avant que le travail ne soit envoyé. Cela s'intègre à la fonctionnalité d'impression native du système d'exploitation, donc chaque imprimante installée sur la machine (y compris les imprimantes réseau et virtuelles) apparaît automatiquement dans le dialogue.

```java
//:path=/static-assets/ironpdf-java/content-code-examples/how-to/print-pdf/interactive-printing.java
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import java.io.IOException;

public class InteractivePrinting {
public static void main(String[] args) {
        // Set the license key for IronPDF
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

        try {
            // Option 1: Create a new PDF from HTML
            PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Monthly Report</h1><p>Sales data...</p>");

            // Option 2: Load an existing PDF file
            // PdfDocument pdf = PdfDocument.fromFile(Paths.get("report.pdf"));

            // Print the PDF with a print dialog for user interaction
            pdf.print() ;

            System.out.println("Print job sent to selected printer");

        } catch (IOException e) {
            System.err.println("Error printing PDF: " + e.getMessage());
        }
    }
}

Le dialogue d'impression accepte les paramètres sélectionnés par l'utilisateur avant d'envoyer le travail à l'imprimante.

Boîte de dialogue d'impression illustrant l'intégration d'IronPDF Java avec la boîte de dialogue d'impression système, affichant les options de sélection d'imprimante, de plage de pages et de nombre de copies

Quand devez-vous utiliser l'impression basée sur un dialogue ?

L'impression basée sur un dialogue donne aux utilisateurs le contrôle sur les paramètres tels que la sélection de l'imprimante, la plage de pages, le nombre de copies et l'orientation du papier. Cette approche convient aux applications de bureau, systèmes de gestion de documents ou toute situation où les utilisateurs doivent revoir et ajuster les paramètres avant que le travail ne soit envoyé.

Situations courantes nécessitant print() :

  • Applications de bureau avec fonctionnalité d'aperçu avant impression
  • Systèmes de flux de travail de documents où les utilisateurs sélectionnent des plages de pages spécifiques
  • Environnements de bureau où différentes imprimantes servent différents objectifs
  • Applications nécessitant une confirmation de l'utilisateur avant d'imprimer des documents sensibles

Pour des applications qui nécessitent de fusionner plusieurs PDF avant impression, combinez d'abord les documents, puis passez le résultat unifié au dialogue d'impression. Consultez le tutoriel HTML to PDF for Java de IronPDF pour des conseils sur la génération de PDF prêts à être imprimés à partir de contenu web.

Quelles configurations le dialogue d'impression expose-t-il ?

Le dialogue d'impression Java standard montre l'ensemble des attributs d'impression de niveau système d'exploitation, y compris l'orientation de la page, la taille du média, la qualité de l'impression et l'ordre de rassemblement. IronPDF s'appuie sur l'API sous-jacente javax.print pour la négociation des attributs ; les options disponibles dépendent donc des capacités déclarées de chaque imprimante. Sur Windows, le dialogue d'impression natif Win32 apparaît ; sur Linux et macOS, le dialogue GTK ou Cocoa est utilisé à la place. Votre application Java ne nécessite pas de code d'interface utilisateur personnalisé car le système d'exploitation gère la présentation automatiquement.


Comment imprimer des PDF sans l'aide de l'utilisateur?

La méthode printWithoutDialog() contourne la boîte de dialogue PRINT et envoie le document directement à l'imprimante par défaut. Aucune interaction de l'utilisateur n'est requise à aucun point du flux. Cela en fait le choix idéal pour les applications serveur, les systèmes de traitement par lots et les flux de travail planifiés où la sortie cohérente et non surveillée est l'objectif.

//:path=/static-assets/ironpdf-java/content-code-examples/how-to/print-pdf/automated-printing.java
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import java.io.IOException;
import java.nio.file.Paths;
import java.time.LocalDateTime;

public class AutomatedPrinting {
public static void main(String[] args) {
        // Set the license key for IronPDF
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

        try {
            // Create a batch of invoices
            for (int i = 1; i <= 10; i++) {
                String html = String.format(
                    "<h1>Invoice #%d</h1>" +
                    "<p>Date: %s</p>" +
                    "<p>Amount: $%.2f</p>",
                    i, LocalDateTime.now(), i * 100.0
                );

                // Render HTML to PDF
                PdfDocument pdf = PdfDocument.renderHtmlAsPdf(html);

                // Print directly without showing dialog
                pdf.printWithoutDialog();

                System.out.println("Printed invoice #" + i);

                // Save a copy for records
                pdf.saveAs(Paths.get("invoices/invoice_" + i + ".pdf"));
            }

        } catch (IOException e) {
            System.err.println("Printing error: " + e.getMessage());
        }
    }
}
//:path=/static-assets/ironpdf-java/content-code-examples/how-to/print-pdf/automated-printing.java
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import java.io.IOException;
import java.nio.file.Paths;
import java.time.LocalDateTime;

public class AutomatedPrinting {
public static void main(String[] args) {
        // Set the license key for IronPDF
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

        try {
            // Create a batch of invoices
            for (int i = 1; i <= 10; i++) {
                String html = String.format(
                    "<h1>Invoice #%d</h1>" +
                    "<p>Date: %s</p>" +
                    "<p>Amount: $%.2f</p>",
                    i, LocalDateTime.now(), i * 100.0
                );

                // Render HTML to PDF
                PdfDocument pdf = PdfDocument.renderHtmlAsPdf(html);

                // Print directly without showing dialog
                pdf.printWithoutDialog();

                System.out.println("Printed invoice #" + i);

                // Save a copy for records
                pdf.saveAs(Paths.get("invoices/invoice_" + i + ".pdf"));
            }

        } catch (IOException e) {
            System.err.println("Printing error: " + e.getMessage());
        }
    }
}
JAVA

La boucle ci-dessus rend chacune des factures à partir d'un modèle HTML et elle est envoyée immédiatement à l'imprimante par défaut. Puisqu'aucun dialogue ne bloque la boucle, l'ensemble du lot se termine sans interruption.

ConseilsAvant de déployer l'impression automatisée sur un serveur, vérifiez qu'une imprimante par défaut est configurée sur la machine cible. Sur les serveurs Linux sans interface graphique, une imprimante virtuelle comme CUPS ou une destination d'impression PDF fonctionne bien.

Quels sont les avantages de l'impression silencieuse ?

L'impression silencieuse élimine les invites de l'utilisateur, ce qui permet des flux de travail entièrement automatisés. Les avantages clés sont :

  • Vitesse : Aucune interaction de l'utilisateur signifie un traitement plus rapide pour les grands lots
  • Cohérence : Les mêmes paramètres d'impression s'appliquent à chaque fois
  • Automatisation : Fonctionne pour les tâches planifiées et les services en arrière-plan
  • Intégration : S'intègre aux flux de travail automatisés existants sans modification

Lors du traitement de documents volumineux, appliquez la compression PDF for Java de IronPDF d'abord pour réduire la taille des fichiers avant de les envoyer à l'imprimante, ce qui réduit à la fois le temps d'impression et l'utilisation des ressources.

Quand l'impression directe est-elle la plus efficace?

Utilisez printWithoutDialog() pour les flux de travail documentaires automatisés, les tâches d'impression planifiées ou les services backend où l'impression doit s'effectuer sans intervention manuelle. Les cas d'utilisation courants incluent :

  • Systèmes de point de vente : Imprimez les reçus automatiquement après les transactions
  • Génération de rapports : Planifiez et imprimez des rapports quotidiens ou hebdomadaires
  • Impression d'étiquettes : Imprimez des étiquettes d'expédition dans les systèmes de gestion d'entrepôt
  • Traitement de documents : Imprimez en lot des contrats ou des documents légaux

Pour les applications qui ont besoin d'ajouter des filigranes en Java ou tamponner le contenu avant l'impression, traitez d'abord les PDF, puis envoyez-les directement à l'imprimante.


Comment gérer les erreurs d'impression dans les flux de travail automatisés ?

Lorsque vous imprimez sans dialogues, une gestion correcte des erreurs est essentielle. Les problèmes de disponibilité de l'imprimante, les bourrages papier et les problèmes de connexion peuvent tous interrompre un lot. Envelopper les appels d'impression dans des blocs try-catch et mettre en œuvre une stratégie de réessai permet de maintenir les flux de travail en fonctionnement lors de la survenue d'erreurs transitoires.

//:path=/static-assets/ironpdf-java/content-code-examples/how-to/print-pdf/retry-print-handler.java
import com.ironsoftware.ironpdf.* ;
import java.io.IOException;
import java.util.logging.*;

public class RobustPrintHandler {
    private static final Logger logger = Logger.getLogger(RobustPrintHandler.class.getName());

    public static void safePrint(PdfDocument pdf, int maxRetries) {
        int attempts = 0;
        boolean success = false;

        while (attempts < maxRetries && !success) {
            try {
                attempts++;
                pdf.printWithoutDialog();
                success = true;
                logger.info("Print successful on attempt " + attempts);

            } catch (Exception e) {
                logger.warning("Print attempt " + attempts + " failed: " + e.getMessage());

                if (attempts < maxRetries) {
                    try {
                        // Wait before retrying
                        Thread.sleep(2000);
                    } catch (InterruptedException ie) {
                        Thread.currentThread().interrupt();
                    }
                } else {
                    // Max retries reached
                    logger.severe("Print failed after " + maxRetries + " attempts");
                }
            }
        }
    }
}
//:path=/static-assets/ironpdf-java/content-code-examples/how-to/print-pdf/retry-print-handler.java
import com.ironsoftware.ironpdf.* ;
import java.io.IOException;
import java.util.logging.*;

public class RobustPrintHandler {
    private static final Logger logger = Logger.getLogger(RobustPrintHandler.class.getName());

    public static void safePrint(PdfDocument pdf, int maxRetries) {
        int attempts = 0;
        boolean success = false;

        while (attempts < maxRetries && !success) {
            try {
                attempts++;
                pdf.printWithoutDialog();
                success = true;
                logger.info("Print successful on attempt " + attempts);

            } catch (Exception e) {
                logger.warning("Print attempt " + attempts + " failed: " + e.getMessage());

                if (attempts < maxRetries) {
                    try {
                        // Wait before retrying
                        Thread.sleep(2000);
                    } catch (InterruptedException ie) {
                        Thread.currentThread().interrupt();
                    }
                } else {
                    // Max retries reached
                    logger.severe("Print failed after " + maxRetries + " attempts");
                }
            }
        }
    }
}
JAVA

La méthode safePrint effectue jusqu'à maxRetries tentatives, avec une pause de deux secondes entre chaque tentative. Chaque tentative est consignée afin que vous puissiez remonter les échecs jusqu'à des tâches spécifiques. Une fois la limite de réessai atteinte, la méthode enregistre un message sévère. De là, votre application peut enregistrer le document sur le disque, le mettre en file d'attente pour plus tard, ou notifier un administrateur.

ImportantL'API javax.print, qui fait partie de la bibliothèque standard Java, est à la base de l'intégration d'impression d'IronPDF. Pour la détection des imprimantes de bas niveau et la configuration des attributs, consultez la documentation Java SE javax.print sur le site web d'Oracle.

Quelles pratiques de journalisation et de surveillance devez-vous suivre ?

Lors de la mise en œuvre de flux de travail d'impression en production, envisagez ces pratiques :

  1. Surveillance des imprimantes : Vérifiez le statut des imprimantes avant d'envoyer des travaux pour éviter de faire la file sur un appareil hors ligne
  2. Gestion des files d'attente : Surveillez la file d'attente d'impression pour éviter de surcharger une seule imprimante
  3. Journalisation des audits : Enregistrez chaque travail d'impression (horodatage, nom du document, imprimante et résultat) à des fins de conformité
  4. Options de secours : Configurez des imprimantes alternatives ou une solution de sauvegarde d'enregistrement sur fichier si l'imprimante principale est indisponible

Pour des exigences d'impression complexes, explorez les fonctionnalités de IronPDF pour la création de formulaires PDF en Java ou la génération de documents à partir d'modèles HTML avant l'impression. Le projet Apache PDFBox est également une référence utile pour comprendre comment Java interagit avec la spécification PDF sous-jacente.

Comment structurer la mise en file d'attente des travaux d'impression ?

Pour les systèmes à haut débit, découpler la soumission des travaux d'impression de leur exécution protège contre la saturation de l'imprimante. Un modèle producteur-consommateur, dans lequel votre application met en file d'attente des objets PdfDocument et où un thread PRINT dédié les retire de la file et les distribue, permet à l'application principale de rester réactive même sous une charge importante. Le BlockingQueue de Java, tiré de java.util.concurrent, fonctionne bien ici : le thread PRINT appelle queue.take() en boucle, imprimant chaque document à mesure qu'il arrive et enregistrant le résultat. Ce modèle rend également simple l'ajout de niveaux de priorité, de limitation de taux ou d'une file d'attente de messages morts pour les travaux qui épuisent leur budget de réessai.


Quelles sont les prochaines étapes pour imprimer des PDF en Java ?

Ce guide a abordé deux approches : l'impression interactive via print() pour les applications de bureau où les utilisateurs ont besoin de contrôle, et l'impression silencieuse via printWithoutDialog() pour les workflows automatisés par lots. Les deux méthodes s'intègrent à l'infrastructure d'impression standard de Java et fonctionne avec n'importe quelle imprimante installée sur le système d'exploitation.

Pour ajouter IronPDF à votre projet et commencer à imprimer, commencez votre essai gratuit. Aucune carte de crédit n'est requise. Lorsque vous êtes prêt à déployer, consultez les options de licence pour votre équipe ou organisation.

Prêt à voir ce qu'IronPDF peut faire d'autre ? Consultez la page complète du tutoriel ici : Tutoriel d'impression PDF Java

Questions Fréquemment Posées

Comment imprimer un fichier PDF en Java avec une boîte de dialogue d'impression ?

Chargez votre PDF avec PdfDocument.fromFile() ou créez-en un avec renderHtmlAsPdf(), puis appelez pdf.print(). Cela ouvre le dialogue d'impression du système standard où les utilisateurs peuvent sélectionner les imprimantes, les plages de pages, le nombre d'exemplaires, et d'autres paramètres avant que le travail soit envoyé.

Comment imprimer un PDF en Java sans afficher un dialogue?

Utilisez la méthode printWithoutDialog() d'IronPDF. Elle envoie le PDF directement à l'imprimante par défaut sans interaction utilisateur requise, ce qui le rend adapté au traitement par lots, aux services côté serveur, et aux travaux d'impression planifiés.

Quels sont les prérequis pour imprimer des PDF en Java avec IronPDF?

Ajoutez IronPDF en tant que dépendance à votre projet Java via Maven ou Gradle, puis appelez License.setLicenseKey() avant d'imprimer. La bibliothèque s'intègre à l'infrastructure javax.print de Java et fonctionne avec toutes les imprimantes installées sur votre système d'exploitation.

Comment créer un PDF à partir d'HTML avant de l'imprimer?

Appelez PdfDocument.renderHtmlAsPdf() avec une chaîne HTML ou une URL. La méthode renvoie un PdfDocument que vous pouvez passer immédiatement à print() ou printWithoutDialog() sans le sauvegarder d'abord sur le disque.

Quelle est la différence entre print() et printWithoutDialog() dans IronPDF for Java?

print() ouvre un dialogue système interactif permettant aux utilisateurs de choisir leur imprimante et de configurer les paramètres avant que le travail ne s'exécute. printWithoutDialog() ignore tous les dialogues et route le travail directement à l'imprimante par défaut. Utilisez print() dans les applications de bureau et printWithoutDialog() dans les flux de travail automatisés ou côté serveur.

Puis-je charger un fichier PDF existant et l'imprimer avec IronPDF?

Oui. Utilisez PdfDocument.fromFile(Paths.get("yourfile.pdf")) pour charger n'importe quel PDF standard, puis appelez l'une des méthodes d'impression. IronPDF prend en charge le chargement de PDF à partir de chemins de fichiers, de tableaux d'octets, et de flux d'entrée.

Comment gérer les erreurs d'impression et les tentatives en Java dans un flux de travail par lot?

Encapsulez printWithoutDialog() dans un bloc try-catch. En cas d'échec, enregistrez l'erreur et réessayez après une courte pause en utilisant Thread.sleep(). Suivez un compteur de tentatives et enregistrez un message de niveau sévère lorsque le nombre maximum de tentatives est atteint pour que votre système de surveillance puisse alerter sur les échecs persistants.

IronPDF for Java fonctionne-t-il sur des serveurs Linux sans interface graphique?

Oui. Sur les serveurs sans interface graphique, configurez une imprimante virtuelle telle que CUPS avec une destination PDF ou impression vers fichier. La méthode printWithoutDialog() d'IronPDF envoie les travaux à l'imprimante par défaut définie sur le système d'exploitation, donc toute cible d'imprimante gérée par CUPS est prise en charge.

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.