Jak drukować pliki PDF w Javie

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

IronPDF for Java umożliwia programowe drukowanie plików PDF z interakcją użytkownika lub bez niej. Możesz wysyłać pliki PDF bezpośrednio do drukarek, kontrolować ustawienia drukowania, takie jak liczba kopii i zakres stron, oraz automatyzować procesy drukowania dokumentów w swoich aplikacjach Java. Niezależnie od tego, czy tworzysz systemy zarządzania dokumentami dla przedsiębiorstw, czy automatyzujesz generowanie faktur, IronPDF zapewnia funkcje drukowania, które integrują się z infrastrukturą drukowania Javy.

Szybki start: Drukowanie plików PDF w Javie

  1. Dodaj zależność IronPDF do swojego projektu
  2. Ustaw swoj klucz licencyjny za pomoca License.setLicenseKey()
  3. Zaladuj lub utworz PDF korzystajac z PdfDocument
  4. Wywolaj pdf.print() aby uzyskac drukowanie w oparciu o dialog, lub pdf.printWithoutDialog() dla bezposredniego drukowania
  5. Plik PDF jest wysyłany do wybranej lub domyślnej drukarki

```java :title=Quickstart import com.ironsoftware.IronPDF.*;

public class PrintPDFQuickstart { public static void main(String[] args) { // Zastosuj swój klucz licencyjny License.setLicenseKey("YOUR-LICENSE-KEY");

    // Utwórz plik PDF z HTML
    PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Invoice #12345</h1><p>Total: $100.00</p>");

    // Drukowanie z oknem dialogowym (interaktywne)
    PDF.PRINT();

    // Lub drukuj bez okna dialogowego (automatycznie)
    // PDF.printWithoutDialog();
}

}


## Jak drukować pliki PDF z interakcją użytkownika?

Najpierw załaduj dokument PDF, który chcesz wydrukować. Metoda `print` otwiera standardowy dialog drukowania, pozwalajac na wybranie drukarki, zakresu stron i innych opcji przed drukowaniem. To podejście integruje się z natywną funkcją drukowania systemu operacyjnego, zapewniając kompatybilność ze wszystkimi zainstalowanymi drukarkami. Oto kompletny przykład:

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

            // The print dialog handles printer selection, copies, page range, etc.
            System.out.println("Print job sent to selected printer");

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

Pojawi się okno dialogowe drukowania, w którym można wybrać drukarkę i opcje, jak pokazano poniżej.

Dialog drukowania z zaznaczona drukarka Adobe PDF oraz opcjami zakresu drukowania i kopiowania

Dlaczego warto korzystać z drukowania opartego na oknach dialogowych?

Drukowanie oparte na oknach dialogowych zapewnia użytkownikom kontrolę nad ustawieniami drukowania, takimi jak wybór drukarki, zakres stron, liczba kopii i orientacja papieru. Takie podejście sprawdza się dobrze w przypadku aplikacji, w których użytkownicy potrzebują elastyczności w zakresie opcji drukowania. Okno dialogowe drukowania zapewnia również dostęp do funkcji specyficznych dla drukarki, takich jak drukowanie dwustronne, ustawienia kolorów i wybór podajnika papieru. W przypadku bardziej zaawansowanych scenariuszy drukowania należy połączyć to z ustawieniami generowania plików PDF w IronPDF, aby zapewnić optymalną jakość wydruku.

Kiedy warto wybrać druk interaktywny?

Uzyj metody print() przy budowaniu aplikacji desktopowych, systemow zarzadzania dokumentami, lub w jakimkolwiek scenariuszu, gdzie uzytkownicy musza przejrzec i dostosowac ustawienia drukowania przed wyslaniem dokumentow do drukarki. Ta metoda sprawdza się szczególnie dobrze w:

  • Aplikacje desktopowe z funkcją podglądu wydruku
  • Systemy obiegu dokumentów, w których użytkownicy wybierają konkretne strony
  • Środowiska biurowe, w których różne drukarki służą do różnych celów
  • Aplikacje wymagające potwierdzenia użytkownika przed wydrukowaniem poufnych dokumentów

Drukowanie interaktywne pozwala również użytkownikom na zapisywanie plików w formacie PDF za pomocą drukarek wirtualnych, co sprawia, że jest ono wszechstronne zarówno w przypadku potrzeb związanych z wydrukiem fizycznym, jak i cyfrowym. W przypadku aplikacji, które wymagają połączenia wielu plików PDF przed drukowaniem, należy najpierw połączyć dokumenty, a następnie przedstawić użytkownikom ujednolicony wynik za pośrednictwem okna dialogowego PRINT.


Jak mogę drukować pliki PDF bez monitów użytkownika?

Metoda printWithoutDialog omija dialog drukowania i wysyla dokument bezposrednio do domyslnej drukarki. To podejscie dziala w scenariuszach automatyzacji, gdzie nie jest potrzebna interakcja uzytkownika. Ta zdolnosc do cichego drukowania jest niezbedna dla aplikacji serwerowych, systemow przetwarzania wsadowego i zautomatyzowanych przeplywow pracy, gdzie wymagana jest stala produkcja.

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

                // Log the action
                System.out.println("Printed invoice #" + i);

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

        } catch (IOException e) {
            System.err.println("Printing error: " + e.getMessage());
        }
    }
}
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();

                // Log the action
                System.out.println("Printed invoice #" + i);

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

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

Jakie są korzyści z cichego drukowania?

Ciche drukowanie eliminuje monity uzytkownika, umozliwiajac calkowicie zautomatyzowane przeplywy pracy. Ta metoda dziala w przypadku przetwarzania wsadowego, drukowania serwerowego, lub aplikacji kioskowych, gdzie wymagana jest stala produkcja na okreslonej drukarce. Najwazniejsze zalety to:

  • Predkosc: Brak interakcji uzytkownika oznacza szybsze przetwarzanie duzych partii
  • Spójnosc: Te same ustawienia drukowania zastosowane za kazdym razem
  • Automatyzacja: Dziala dla zaplanowanych zadan i uslug w tle
  • Integracja: Bezproblemowa integracja z istniejacymi zautomatyzowanymi przeplywami pracy

Podczas wdrazania cichego drukowania, wartoby rozwazyc uzycie funkcji kompresji IronPDF do optymalizacji rozmiarow plikow przed wyslaniem duzych dokumentow do drukarek, co zmniejsza czas drukowania i zuzycie zasobow.

When Is Direct Printing Most Effective?

Wykorzystaj printWithoutDialog() w zautomatyzowanych przeplywach dokumentow, zaplanowanych zadaniach drukowania lub uslugach backendowych, gdzie drukowanie musi odbywac sie bez manualnej interwencji. To podejscie zapewnia stalą, bezobslugową prace. Typowe przypadki uzycia obejmuja:

  • Systemy punktu sprzedazy: Automatyczne drukowanie paragonow po transakcjach
  • Generowanie raportow: Harmonogram i drukowanie dziennych/tygodniowych raportow
  • Drukowanie etykiet: Drukowanie etykiet wysylkowych w systemach zarzadzania magazynem
  • Przetwarzanie dokumentow: Wsadowe drukowanie dokumentow prawnych lub umow

Dla aplikacji, które potrzebuja dodania znakow wodnych lub cyfrowych podpisow przed drukowaniem, najpierw przetwórz PDF-y, a nastepnie wyslij je bezposrednio do drukarki.

Jak sobie radzic z bledami drukowania w przypadku zautomatyzowanego drukowania?

Podczas drukowania bez dialogow, zaimplementuj odpowiednie obsluge błędów, aby wykryc problemy z dostepnoscia drukarki, zaciecia papieru lub problemy z polaczeniem. Owiń wywolania drukowania w bloki try-catch, aby odpowiednio obslugiwac wyjatki. Oto przyklad solidnego obslugi bledow:

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 retry
                        Thread.sleep(2000);
                    } catch (InterruptedException ie) {
                        Thread.currentThread().interrupt();
                    }
                } else {
                    // Max retries reached, handle failure
                    logger.severe("Print failed after " + maxRetries + " attempts");
                    // Implement fallback strategy (save to file, notify admin, etc.)
                }
            }
        }
    }
}
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 retry
                        Thread.sleep(2000);
                    } catch (InterruptedException ie) {
                        Thread.currentThread().interrupt();
                    }
                } else {
                    // Max retries reached, handle failure
                    logger.severe("Print failed after " + maxRetries + " attempts");
                    // Implement fallback strategy (save to file, notify admin, etc.)
                }
            }
        }
    }
}
JAVA

Zaawansowane rozważania na temat drukowania

Podczas implementacji zautomatyzowanych rozwiazan drukowania, rozwaz te najlepsze praktyki:

  1. Monitorowanie drukarki: Sprawdzanie stanu drukarki przed wyslaniem zadania
  2. Zarzadzanie kolejka: Monitorowanie kolejki drukowania, aby uniknac przeciazenia
  3. Logowanie: Sledzenie wszystkich zadan drukowania do celow audytu
  4. Opcje awaryjne: Posiadanie alternatywnych drukarek lub opcji zapisu do pliku

Dla zlozonych wymagan dotyczacych drukowania, zapoznaj sie z umiejetnosciami IronPDF dotyczacymi tworzenia form PDF lub wyodrebniania okreslonych stron przed drukowaniem, co pozwoli na drukowanie tylko niezbednej zawartosci i oszczedzanie zasobow.

Często Zadawane Pytania

How do I print a PDF file in Java with a print dialog?

To print a PDF with a dialog in Java, use IronPDF's print() method. First load your PDF using PdfDocument.fromFile() or create one with renderHtmlAsPdf(), then call pdf.print(). This opens the standard print dialog where users can select printers, page ranges, and other settings before printing.

Can I print PDFs automatically without user interaction?

Yes, IronPDF provides the printWithoutDialog() method for automated printing. This sends PDFs directly to the default printer without displaying any dialogs, perfect for batch processing or server-side applications where user interaction isn't possible.

What are the prerequisites for printing PDFs in Java?

You need to add IronPDF as a dependency to your Java project and set a valid license key using License.setLicenseKey(). The library integrates with Java's printing infrastructure and works with all printers installed on your operating system.

How do I create a PDF from HTML before printing?

Use IronPDF's PdfDocument.renderHtmlAsPdf() method to convert HTML content into a PDF document. You can pass HTML strings directly, like renderHtmlAsPdf("

Invoice

Total: $100

"), then immediately print the generated PDF.

What's the difference between print() and printWithoutDialog() methods?

The print() method opens an interactive print dialog allowing users to configure settings, while printWithoutDialog() sends PDFs directly to the default printer without any user interface. Choose print() for desktop applications and printWithoutDialog() for automated workflows.

Can I load existing PDF files for printing?

Yes, use PdfDocument.fromFile(Paths.get("yourfile.pdf")) to load existing PDF documents. IronPDF can open any standard PDF file and send it to your printer using either the interactive or automated printing methods.

Darrius Serrant
Full Stack Software Engineer (WebOps)

Darrius Serrant posiada tytuł licencjata z informatyki z Uniwersytetu Miami i pracuje jako Full Stack WebOps Marketing Engineer w Iron Software. Już od młodych lat zainteresował się kodowaniem, postrzegając informatykę jako zarówno tajemniczą, jak i dostępną, co czyni ją doskonałym medium dla kreatywności ...

Czytaj więcej
Gotowy, aby rozpocząć?
Wersja: 2026.4 just released
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu?
Uruchom przykład i zobacz, jak Twój kod HTML zamienia się w plik PDF.