Das Drucken von PDF-Dateien in Java

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

IronPDF for Java ermöglicht es Ihnen, PDF-Dateien programmgesteuert mit oder ohne Benutzerinteraktion zu drucken. Sie können PDFs direkt an physische Drucker senden, Druckeinstellungen wie Anzahl der Kopien und Seitenbereiche steuern und Druck-Workflows für Dokumente in Java-Anwendungen automatisieren. Egal, ob Sie Unternehmens-Dokumentenmanagementsysteme erstellen oder die Rechnungsstellung automatisieren, IronPDF bietet Druckfunktionen, die sich problemlos in die Java-Druckinfrastruktur integrieren. Sie können es auch zusammen mit anderen PDF-Aufgaben verwenden, wie dem digitalen Signieren von PDFs oder dem Konvertieren von Bildern in PDF als Teil einer umfassenderen Dokumentenverarbeitungspipeline.

IronPDF for Java-Druckworkflow, der zeigt, wie ein PDF-Dokument programmgesteuert an einen Drucker gesendet wird

Schnellstart: Drucken einer PDF-Datei in Java

  1. Fügen Sie die IronPDF-Abhängigkeit zu Ihrem Projekt hinzu
  2. Legen Sie Ihren Lizenzschlüssel mit License.setLicenseKey() fest
  3. Laden Sie eine PDF-Datei, oder erstellen Sie eine mit PdfDocument
  4. Rufen Sie pdf.print() für dialogbasiertes PRINTen oder pdf.printWithoutDialog() für direktes PRINTen auf
  5. Das PDF wird an Ihren ausgewählten oder Standarddrucker gesendet

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

public class PrintPDFQuickstart { public static void main(String[] args) { // Lizenzschlüssel anwenden License.setLicenseKey("IHR-LIZENZSCHLÜSSEL");

    // PDF aus HTML erstellen
    PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Invoice #12345</h1><p>Total: $100.00</p>");

    // Drucken mit Dialog (interaktiv)
    pdf.PRINT();

    // Oder drucken ohne Dialog (automatisiert)
    // PDF.printWithoutDialog();
}

}


<div class="hsg-featured-snippet">
    <h3>Wie man PDF-Dateien in Java druckt</h3>
    <ol>
        <li><a class="js-modal-open" data-modal-id="download-modal" href="#download-modal">Installieren Sie die Java-Bibliothek zum Drucken von PDF-Dateien</a></li>
        <li>Laden Sie ein bestehendes PDF oder rendern Sie ein neues</li>
        <li>Verwenden Sie die Methode <code>print</code>, um mit einem Dialog zu drucken</li>
        <li>Verwenden Sie die Methode <code>printWithoutDialog</code>, um ohne einen Dialog zu drucken</li>
        <li>Überprüfen Sie das gedruckte PDF-Dokument</li>
    </ol>
</div>

<hr>

## Wie kann ich PDFs mit Benutzerinteraktion drucken?

Laden Sie das PDF-Dokument, das Sie drucken möchten, und rufen Sie dann `pdf.print()` auf. Die Methode öffnet den Standarddruck-Dialog, der es Benutzern ermöglicht, den Drucker, den Seitenbereich und andere Optionen auszuwählen, bevor der Job gesendet wird. Dies integriert sich mit der nativen Druckfunktionalität des Betriebssystems, sodass jeder auf der Maschine installierte Drucker (einschließlich Netzwerk- und virtueller Drucker) automatisch im Dialog erscheint.

```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());
        }
    }
}

Der Druck-Dialog akzeptiert benutzerausgewählte Einstellungen, bevor der Job an den Drucker gesendet wird.

Druckdialog, der die IronPDF-Java-Integration in den Systemdruckdialog zeigt, mit Optionen zur Druckerauswahl, Seitenbereich und Kopienanzahl

Wann sollten Sie dialogbasierte Druckausgabe verwenden?

Dialogbasierte Druckausgabe gibt Benutzern die Kontrolle über Einstellungen wie Druckerauswahl, Seitenbereich, Anzahl der Kopien und Papierausrichtung. Dieser Ansatz passt zu Desktop-Anwendungen, Dokumentenmanagementsystemen oder jedem Szenario, in dem Benutzer Einstellungen überprüfen und anpassen müssen, bevor der Job gesendet wird.

Häufige Situationen, in denen print() erforderlich ist:

  • Desktop-Anwendungen mit Druckvorschaufunktionalität
  • Dokumenten-Workflow-Systeme, in denen Benutzer bestimmte Seitenbereiche auswählen
  • Büroumgebungen, in denen verschiedene Drucker unterschiedlichen Zwecken dienen
  • Anwendungen, die eine Benutzerbestätigung erfordern, bevor sensible Dokumente gedruckt werden

Für Anwendungen, die mehrere PDFs vor dem Drucken zusammenführen müssen, kombinieren Sie die Dokumente zuerst, dann übergeben Sie das einheitliche Ergebnis dem Druck-Dialog. Überprüfen Sie IronPDFs HTML zu PDF Tutorial for Java für Anleitungen zum Erstellen druckfertiger PDFs aus Webinhalten.

Welche Konfigurationen stellt der Druck-Dialog dar?

Der Standard-Java-Druck-Dialog bietet die vollständige Auswahl an OS-Level-Druckattributen, einschließlich Seitenausrichtung, Mediensize, Druckqualität und Sortierreihenfolge. IronPDF greift für die Attributverhandlung auf die zugrunde liegende javax.print-API zurück, sodass die verfügbaren Optionen von den gemeldeten Fähigkeiten des jeweiligen Druckers abhängen. Unter Windows erscheint der native Win32-Druck-Dialog; unter Linux und macOS wird der GTK- oder Cocoa-Dialog stattdessen verwendet. Ihre Java-Anwendung erfordert keinen benutzerdefinierten UI-Code, da das Betriebssystem die Präsentation automatisch handhabt.


Wie kann ich PDFs ohne Benutzereingabeaufforderung drucken?

Die printWithoutDialog()-Methode umgeht den PRINT-Dialog und sendet das Dokument direkt an den Standarddrucker. Keine Benutzerinteraktion ist zu irgendeinem Zeitpunkt im Ablauf erforderlich. Dies macht es zur richtigen Wahl für serverseitige Anwendungen, Batch-Verarbeitungssysteme und geplante Workflows, bei denen konsistente, unbeaufsichtigte Ergebnisse das Ziel sind.

//: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

Die obige Schleife rendert jede Rechnung aus einer HTML-Vorlage und sendet sie sofort an den Standarddrucker. Da kein Dialog die Schleife blockiert, wird das gesamte Batch ohne Unterbrechung abgeschlossen.

TippsBevor automatisiertes Drucken auf einen Server bereitgestellt wird, verifizieren Sie, dass ein Standarddrucker auf der Zielmaschine konfiguriert ist. Auf kopflosen Linux-Servern funktioniert ein virtueller Drucker wie CUPS oder ein PDF-Print-to-File Ziel gut.

Was sind die Vorteile von Silent Printing?

Durch das stille Drucken werden Benutzereingaben überflüssig, was vollautomatische Arbeitsabläufe ermöglicht. Die wichtigsten Vorteile sind:

  • Geschwindigkeit: Keine Benutzerinteraktion bedeutet schnellere Verarbeitung für große Batches
  • Konsistenz: Die gleichen Druckeinstellungen gelten jedes Mal
  • Automatisierung: Funktioniert für geplante Aufgaben und Hintergrunddienste
  • Integration: Passt in bestehende automatisierte Workflows ohne Modifikation

Wenn Sie große Dokumente verarbeiten, wenden Sie zuerst die PDF-Komprimierung for Java von IronPDF an, um Dateigrößen zu reduzieren, bevor Sie sie an den Drucker senden, was sowohl die Druckzeit als auch den Ressourcenverbrauch senkt.

Wann ist der Direktdruck am effektivsten?

Verwenden Sie printWithoutDialog() für automatisierte Dokumenten-Workflows, geplante Druckaufträge oder Backend-Dienste, bei denen der Druck ohne manuelles Eingreifen erfolgen muss. Häufige Anwendungsfälle umfassen:

  • Kassensysteme: Drucken Sie Belege automatisch nach Transaktionen
  • Berichterstellung: Planen und drucken Sie tägliche oder wöchentliche Berichte
  • Etikettendruck: Drucken Sie Versandetiketten in Lagerverwaltungssystemen
  • Dokumentenverarbeitung: Batch-drucken Sie Vertrags- oder Rechtsdokumente

Für Anwendungen, die Wasserzeichen in Java hinzufügen oder Inhalte vor dem Drucken stempeln müssen, verarbeiten Sie die PDFs zuerst, dann senden Sie sie direkt an den Drucker.


Wie gehe ich mit Druckfehlern in automatisierten Workflows um?

Beim Drucken ohne Dialoge ist eine ordnungsgemäße Fehlerbehandlung unerlässlich. Druckerverfügbarkeitsprobleme, Papierstaus und Verbindungsprobleme können alle eine Charge unterbrechen. Das Einpacken von Druckaufrufen in try-catch-Blöcke und die Implementierung einer Wiederholungsstrategie hält Workflows am Laufen, wenn vorübergehende Fehler auftreten.

//: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

Die safePrint-Methode führt bis zu maxRetries Wiederholungsversuche mit einer Pause von zwei Sekunden zwischen den Versuchen durch. Jeder Versuch wird protokolliert, sodass Sie Fehler auf bestimmte Aufträge zurückverfolgen können. Sobald das Wiederholungslimit erreicht ist, protokolliert die Methode eine schwerwiegende Nachricht. Von dort aus kann Ihre Anwendung das Dokument auf der Festplatte speichern, es für später in die Warteschlange stellen oder einen Administrator benachrichtigen.

WichtigDie javax.print-API, Teil der Java-Standardbibliothek, bildet die Grundlage für die Druckintegration von IronPDF. Informationen zur Low-Level-Druckersuche und Attributkonfiguration finden Sie in der Java SE javax.print-Dokumentation auf der Oracle-Website.

Welche Protokollierungs- und Überwachungspraktiken sollten Sie befolgen?

Wenn Sie Produktionsdruck-Workflows implementieren, berücksichtigen Sie diese Praktiken:

  1. Druckerüberwachung: Überprüfen Sie den Druckerstatus, bevor Sie Jobs senden, um eine Warteschlange gegen ein offline Gerät zu vermeiden
  2. Warteschlangenmanagement: Überwachen Sie die Druckwarteschlange, um zu verhindern, dass ein einziger Drucker überlastet wird
  3. Audit-Protokollierung: Protokollieren Sie jeden Druckauftrag (Zeitstempel, Dokumentname, Drucker und Ergebnis) für Compliance-Zwecke
  4. Fallback-Optionen: Konfigurieren Sie alternative Drucker oder ein Speicherziel für den Fall, dass der primäre Drucker nicht verfügbar ist

Für komplexe Druckanforderungen erforschen Sie die Funktionen von IronPDF zum Erstellen von PDF-Formularen in Java oder zum Generieren von Dokumenten aus HTML-Vorlagen vor dem Druck. Das Apache PDFBox-Projekt ist ebenfalls eine nützliche Referenz, um zu verstehen, wie Java mit der zugrunde liegenden PDF-Spezifikation interagiert.

Wie sollten Sie die Warteschlange für Druckaufträge strukturieren?

Für Hochleistungssysteme schützt das Entkoppeln der Druckauftragseinreichung von der Ausführung vor Druckersättigung. Ein Produzenten-Konsumenten-Muster, bei dem Ihre Anwendung PdfDocument-Objekte in eine Warteschlange stellt und ein dedizierter PRINT-Thread diese aus der Warteschlange entnimmt und weiterleitet, sorgt dafür, dass die Hauptanwendung auch unter hoher Last reaktionsfähig bleibt. Javas BlockingQueue aus java.util.concurrent funktioniert hier gut: Der PRINT-Thread ruft queue.take() in einer Schleife auf, druckt jedes Dokument beim Eintreffen und protokolliert das Ergebnis. Dieses Muster erleichtert es auch, Prioritätslevel, Geschwindigkeitsbegrenzung oder eine Dead-Letter-Warteschlange für Jobs hinzuzufügen, die ihre Wiederholungsbedingungen erschöpfen.


Was sind die nächsten Schritte für das Drucken von PDFs in Java?

Dieser Leitfaden behandelte zwei Ansätze: interaktives Drucken über print() für Desktop-Anwendungen, bei denen Benutzer die Kontrolle benötigen, und stilles Drucken über printWithoutDialog() für automatisierte Batch-Workflows. Beide Methoden integrieren sich in die standardmäßige Java-Druckinfrastruktur und arbeiten mit jedem auf dem Betriebssystem installierten Drucker.

Um IronPDF zu Ihrem Projekt hinzuzufügen und mit dem Drucken zu beginnen, starten Sie Ihre kostenlose Testversion. Keine Kreditkarte erforderlich. Wenn Sie bereit sind, zu deployen, sehen Sie sich die Lizenzierungsoptionen für Ihr Team oder Ihre Organisation an.

Bereit zu sehen, was IronPDF sonst noch kann? Sehen Sie sich die vollständige Tutorial-Seite hier an: Java Print PDF Tutorial

Häufig gestellte Fragen

Wie drucke ich eine PDF-Datei in Java mit einem Druckdialog?

Laden Sie Ihr PDF mit PdfDocument.fromFile() oder erstellen Sie eines mit renderHtmlAsPdf(), und rufen Sie dann pdf.print() auf. Dies öffnet den standardmäßigen Systemdruckdialog, in dem Benutzer Drucker, Seitenbereiche, Anzahl der Kopien und andere Einstellungen auswählen können, bevor der Job ausgeführt wird.

Wie drucke ich ein PDF in Java, ohne einen Dialog anzuzeigen?

Verwenden Sie die printWithoutDialog()-Methode von IronPDF. Sie sendet das PDF direkt an den Standarddrucker, ohne dass eine Benutzerinteraktion erforderlich ist, was es geeignet für Batch-Verarbeitung, serverseitigen Dienste und geplante Druckaufträge macht.

Was sind die Voraussetzungen für das Drucken von PDFs in Java mit IronPDF?

Fügen Sie IronPDF als Abhängigkeit zu Ihrem Java-Projekt über Maven oder Gradle hinzu und rufen dann License.setLicenseKey() auf, bevor Sie drucken. Die Bibliothek integriert sich in die javax.print-Infrastruktur von Java und arbeitet mit allen Druckern, die auf Ihrem Betriebssystem installiert sind.

Wie erstelle ich ein PDF aus HTML, bevor ich es drucke?

Rufen Sie PdfDocument.renderHtmlAsPdf() mit einem HTML-String oder einer URL auf. Die Methode gibt ein PdfDocument zurück, das Sie sofort an print() oder printWithoutDialog() übergeben können, ohne es vorher auf die Festplatte zu speichern.

Was ist der Unterschied zwischen print() und printWithoutDialog() in IronPDF for Java?

print() öffnet einen interaktiven Systemdialog, sodass Benutzer ihren Drucker auswählen und Einstellungen vornehmen können, bevor der Job ausgeführt wird. printWithoutDialog() überspringt alle Dialoge und leitet den Job direkt an den Standarddrucker weiter. Verwenden Sie print() in Desktop-Anwendungen und printWithoutDialog() in automatisierten oder serverseitigen Workflows.

Kann ich eine vorhandene PDF-Datei laden und mit IronPDF drucken?

Ja. Verwenden Sie PdfDocument.fromFile(Paths.get("yourfile.pdf")), um ein standardmäßiges PDF zu laden, und rufen Sie dann eine der Druckmethoden auf. IronPDF unterstützt das Laden von PDFs von Dateipfaden, Bytearrays und Eingabestreams.

Wie gehe ich in einem Java-Batch-Workflow mit Druckfehlern um und wie wiederhole ich Fehlversuche?

Wickeln Sie printWithoutDialog() in einen try-catch-Block. Bei einem Fehler protokollieren Sie diesen und wiederholen den Versuch nach einer kurzen Pause mit Thread.sleep(). Verfolgen Sie einen Versuchsindex und protokollieren Sie eine schwerwiegende Mitteilung, wenn die maximale Anzahl von Wiederholungsversuchen erreicht ist, damit Ihr Überwachungssystem auf anhaltende Fehler aufmerksam machen kann.

Funktioniert IronPDF for Java auch auf headless Linux-Servern?

Ja. Auf headless-Servern konfigurieren Sie einen virtuellen Drucker wie CUPS mit einem PDF- oder Print-to-File-Ziel. IronPDFs printWithoutDialog() sendet Jobs an den Standarddrucker, der im Betriebssystem definiert ist, sodass jedes CUPS-verwaltete Druckerziel unterstützt wird.

Darrius Serrant
Full-Stack-Software-Ingenieur (WebOps)

Darrius Serrant hat einen Bachelor-Abschluss in Informatik von der University of Miami und arbeitet als Full-Stack-WebOps-Marketing-Ingenieur bei Iron Software. Seit seiner Jugend vom Programmieren angezogen, sah er die Informatik als sowohl mysteriös als auch zugänglich, was es zum perfekten Medium für Kreativität und Problemlösung ...

Weiterlesen
Bereit anzufangen?
Version: 2026.5 just released
Still Scrolling Icon

Scrollst du immer noch?

Sie brauchen schnell einen Beweis?
Führen Sie eine Probe aus Sehen Sie zu, wie Ihr HTML-Code in eine PDF-Datei umgewandelt wird.