HTML do PDF w Java
IronPDF for Java konwertuje treść HTML na dokumenty PDF uruchamiając pełny silnik renderowania Chromium — ten sam silnik, który zasila nowoczesne przeglądarki. Każda właściwość CSS, czcionka, obraz i układ generowany przez JavaScript jest renderowany dokładnie tak, jak byłby w oknie przeglądarki, a następnie ląduje na stronie jako precyzyjny pikselowo PDF.
Ten samouczek przeprowadza przez trzy podstawowe metody konwersji: HTML string do PDF, live URL do PDF i lokalny plik HTML do PDF. Obejmuje również instalację, konfigurację licencji i opcje renderowania, po które programiści sięgają najczęściej.
Biblioteka Java odzwierciedla kształt API IronPDF for .NET, więc zespoły pracujące w obu środowiskach uznają przejście za proste. Kod źródłowy dla wszystkich przykładów w tym samouczku jest dostępny na GitHub.
Szybki start: Konwersja HTML do PDF w Javie
Dodaj IronPDF do twojego pom.xml Maven, a następnie wywoła jedną metodę, aby wygenerować 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");
Rozpocznij używanie IronPDF w swoim projekcie już dziś dzięki darmowej wersji próbnej.
Spis treści
- Instalacja IronPDF for Java
- Jak zaimportować IronPDF i skonfigurować klucz licencyjny?
- Jak konwertować ciąg HTML do PDF?
- Jak przekonwertować URL do PDF w Javie?
- Jak przekonwertować lokalny plik HTML do PDF?
- Jak ustawić opcje generowania PDF?
- Jak dodać nagłówki i stopki?
- Jak ustawić marginesy stron i rozmiar papieru?
- Jak zastosować znak wodny do PDF?
- Jak scalić wiele plików PDF w jeden?
- Jak dodać lub usunąć strony z PDF?
- Jak zabezpieczyć hasłem PDF w Javie?
- Jak przekonwertować szablon HTML z dynamicznymi danymi?
- Jak wyodrębnić tekst z PDF w Javie?
- Jak skompresować plik PDF?
- Kolejne kroki
Instalacja IronPDF for Java
IronPDF for Java jest dostarczany przez Maven Central oraz jako samodzielny JAR. Trasa Maven jest zalecana dla większości projektów, ponieważ obsługuje zależności przechodnie i utrzymuje zgodność wersji biblioteki między komputerami programistycznymi i potokami CI.
Opcja 1: Dodaj IronPDF jako zależność Maven
Otwórz plik pom.xml projektu i dodaj następujące wpisy do bloku <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>
Pierwszy artefakt pobiera najświeższe wydanie IronPDF for Java. Drugi artefakt aktywuje logowanie SLF4J, aby silnik renderowania IronPDF mógł zapisywać wiadomości diagnostyczne podczas wykonywania. Programiści, którzy preferują Logback lub Log4J, mogą zamiast tego zastąpić tego dostawcę. Zależność logowania jest opcjonalna — pomiń ją, jeśli logi nie są potrzebne.
Po zapisaniu pliku uruchom mvn install z katalogu głównego projektu, aby pobrać obie biblioteki. Maven automatycznie rozwiązuje pełen graf zależności, w tym wszelkie przechodnie zależności, które wymaga IronPDF.
Dla projektów Gradle odpowiednia deklaracja zależności w build.gradle to:
: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]'
// }
Zamień [LATEST_VERSION] numerem wersji z changelog-u IronPDF lub ze strony Maven Central dla artefaktu.
Opcja 2: Dodaj plik JAR ręcznie
Pobierz bezpośrednio JAR IronPDF z Maven Central i dodaj go do ścieżki klasy projektu. To podejście działa bez narzędzia do budowy, ale wymaga ręcznego zarządzania wersjami, więc najlepiej nadaje się do projektów odziedziczonek, które nie używają Maven ani Gradle, lub dla środowisk, gdzie dostęp do sieci zewnętrznej jest ograniczony.
Po pobraniu dodaj JAR do ścieżki klasy projektu przez ustawienia projektu w IDE. W IntelliJ IDEA kliknij prawym przyciskiem myszy korzeń projektu, wybierz "Open Module Settings", przejdź do "Dependencies" i dodaj plik JAR. W Eclipse kliknij prawym przyciskiem myszy projekt, idź do "Properties > Java Build Path > Libraries", a następnie kliknij "Add External JARs".
Wymagania systemowe
IronPDF for Java działa na JDK 8 lub późniejszych. Obsługuje Windows, Linux i macOS na architekturach zarówno x86-64, jak i ARM64. Nie jest wymagana instalacja zewnętrznej przeglądarki — binarka Chromium jest wbudowana w JAR. Na systemach Linux upewnij się, że standardowe biblioteki współdzielone oczekiwane przez Chromium są obecne. Dokumentacja IronPDF for Java wymienia minimalnie wymagane pakiety dla popularnych dystrybucji Linux.
Jak zaimportować IronPDF i skonfigurować klucz licencyjny?
Każda klasa IronPDF znajduje się w pakiecie com.ironsoftware.ironpdf. Zaimportuj ją na górze dowolnego pliku źródłowego, który będzie tworzył lub manipulował dokumentami 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"));
Bez klucza licencyjnego IronPDF działa w trybie testowym i umieszcza na każdej stronie PDF znak wodny kafelkowany. Ustawienie klucza usuwa znak wodny i odblokowuje wszystkie funkcje. Rozpocznij bezpłatny okres próbny, aby natychmiast uzyskać klucz.
Znak wodny trybu próbnego IronPDF umieszczony na stronie PDF.
Klucz licencyjny jest ciągiem znaków, który Iron Software wydaje, gdy aktywowana jest licencja testowa lub komercyjna. Przechowuj go w zmiennej środowiskowej lub pliku konfiguracyjnym zamiast osadzać bezpośrednio w kodzie źródłowym. Popularnym wzorcem jest odczytanie go z zmiennej środowiskowej przy starcie:
: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);
}
To podejście chroni klucz przed kontrolą wersji i ułatwia używanie różnych kluczy w różnych środowiskach: rozwojowym, staging i produkcyjnym.
Wywołaj License.setLicenseKey i Settings.setLogPath przed wywołaniem jakiejkolwiek metody renderowania lub manipulacji. Umieść je przy starcie aplikacji — najlepiej w bloku inicjalizującym statycznie lub w punkcie wejścia main.
Jak przekonwertować ciąg HTML na PDF?
PdfDocument.renderHtmlAsPdf akceptuje ciąg znaczników HTML i zwraca obiekt PdfDocument, który można zapisać, połączyć lub zmodyfikować przed zapisaniem na dysk. To główna metoda dla programowo generowanego HTML — na przykład raporty budowane przez łączenie wartości z bazy danych z szablonem HTML zdefiniowanym jako ciąg znaków w Java lub załadowanym z pliku.
: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");
Silnik renderowania rozwiązuje względne ścieżki zasobów (obrazy, arkusze stylów, skrypty) względem opcjonalnego drugiego argumentu — ścieżki bazowej. Gdy podana jest ścieżka bazowa, silnik traktuje ją jako korzeń, z którego rozwiązywane są względne URL-e. To pozwala na poprawne renderowanie HTML, który odwołuje się do lokalnych plików CSS i obrazów, bez żadnych manipulacji ścieżkami w źródłowym markerze.
: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");
Metoda saveAs akceptuje ścieżkę absolutną lub względną. Biblioteka tworzy plik, jeśli jeszcze nie istnieje i nadpisuje go, jeśli istnieje. Podczas zapisywania w katalogu, który aplikacja mogła jeszcze nie utworzyć, najpierw utwórz katalog przy użyciu Files.createDirectories(Paths.get("output")) przed wywołaniem saveAs.
IronPDF obsługuje pełen zestaw funkcji HTML5 i CSS3, jak zaimplementowano w Chromium. Niestandardowe czcionki wczytywane za pomocą @font-face w CSS renderują się poprawnie, gdy pliki czcionek są dostępne w ścieżce bazowej. Elementy SVG oraz elementy <canvas> renderowane przez JavaScript również pojawiają się w wyjściu PDF.
Jak przekonwertować URL na PDF w Java?
PdfDocument.renderUrlAsPdf pobiera stronę pod podanym adresem URL, czeka na wykonanie JavaScript i załadowanie dynamicznych treści, a następnie konwertuje w pełni renderowany DOM do 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");
Silnik obsługuje nagłówki autoryzacji, ciasteczka i aplikacje jednostronicowe bogate w JavaScript. Dla stron wymagających logowania lub niestandardowych nagłówków żądań użyj klasy ChromePdfRenderOptions do skonfigurowania parametrów żądania przed wywołaniem renderUrlAsPdf.
Ta metoda konwersji jest przydatna do archiwizacji stron internetowych, generowania migawki zgodności i produkcji raportów dla klientów z wewnętrznych pulpitów. Strony generowane przez serwer, do których dostęp można uzyskać przez lokalną sieć, są w pełni obsługiwane — przekaż http://localhost:8080/report/123 w taki sam sposób, jak publiczny URL. IronPDF będzie czekać na pełne załadowanie strony przed renderowaniem, więc pulpity bazujące na asynchronicznych pobraniach danych zostaną wyrenderowane z wypełnionymi danymi zamiast z pustymi wykresami.
Dla stron za HTTP podstawowym uwierzytelnianiem przekazuj dane uwierzytelniające w URL używając formatu http://user:password@host/path. Dla stron chronionych przez ciasteczka sesji, skonfiguruj słoik ciasteczek na obiekcie ChromePdfRenderOptions przed przekazaniem go do renderUrlAsPdf. Zobacz dokumentację IronPDF for Java dla szczegółów dotyczących konfigurowania nagłówków żądań i zarządzania ciasteczkami dla uwierzytelnionych URL.
Jak przekonwertować lokalny plik HTML na PDF?
PdfDocument.renderHtmlFileAsPdf odczytuje plik HTML z systemu plików i renderuje go do PDF. Wszystkie powiązane zasoby (CSS, JavaScript, obrazy) odwoływane przez względne ścieżki w pliku są rozwiązywane względem katalogu własnego pliku 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");
To podejście jest najbardziej dokładne do konwersji złożonych dokumentów HTML. Ponieważ silnik renderowania operuje na ścieżce systemu plików, a nie na ciągu w pamięci, względne odwołania do wielopoziomowych katalogów zasobów rozwiązują się bez dodatkowej konfiguracji. Szablon, który polega na style.css i script.js w tym samym folderze, będzie się renderować prawidłowo bez żadnych dostosowań ścieżki.
Ta metoda jest szczególnie dobrze dostosowana do generowania faktur, produkcji umów i każdego przepływu pracy, gdzie projektant utrzymuje szablon HTML niezależnie od aplikacji Java. Zespół deweloperów traktuje szablon jako plik danych, przechowuje go obok aplikacji i wywołuje renderHtmlFileAsPdf z ścieżką. Gdy projektant zaktualizuje szablon, zmieniając branding lub układ, nie są wymagane żadne zmiany w kodzie Java.
Jak ustawić opcje generowania PDF?
ChromePdfRenderOptions kontroluje zachowanie renderowania: rozmiar papieru, marginesy, poziom przybliżenia, typ mediów do druku, czas oczekiwania JavaScript i więcej. Utwórz instancję, skonfiguruj pożądane właściwości i przekaż ją jako drugi argument do dowolnej metody 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");
Ustawienie CssMediaType.PRINT informuje silnik, aby zastosował reguły CSS @media print, które wiele szablonów HTML używa do ukrywania pasków nawigacyjnych oraz stosowania układów specyficznych dla druku. Metoda setJavaScriptTimeout jest ważna dla stron używających JavaScriptowych bibliotek do tworzenia diagramów (D3.js, Chart.js) lub do leniwego ładowania treści — jeśli czas oczekiwania jest zbyt krótki, PDF uchwyci stronę zanim JavaScript skończy renderować, co spowoduje puste wykresy lub brakujące sekcje. Zwiększ limit czasu, jeśli renderowany PDF nie zawiera oczekiwanych treści.
Metoda setDpi kontroluje rozdzielczość obrazu w wyjściu. Domyślnie (96 DPI) jest odpowiednie dla dokumentów ekranowych. Dla PDF-ów, które będą drukowane lub wyświetlane na ekranach o dużej gęstości DPI, użyj 150 lub 300 DPI. Wyższe wartości DPI zwiększają rozmiar pliku proporcjonalnie. Zobacz przykład kodu z ustawieniami generowania PDF, aby uzyskać pełną listę konfigurowalnych właściwości.
IronSuite odgrywa kluczową rolę w naszej działalności. Są to narzędzia zwiększające wydajność w całej firmie, w tym tworzenie planów pięter i poprawa zarządzania zapasami.
Jak dodać nagłówki i stopki?
IronPDF obsługuje zarówno oparte na tekście, jak i oparte na HTML nagłówki i stopki. Nagłówki tekstowe używają obiektu TextHeaderFooter z tokenami formatującymi ({page}, {total-pages}, {date}), które rozwiązują się automatycznie podczas renderowania.
: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");
Tokeny {page} i {total-pages} produkują wartości jak "3 z 12" w stopce i aktualizują się automatycznie przy zmianie liczby stron, więc nie ma potrzeby znać ostatecznej liczby stron przed renderowaniem. Token {date} wstawia bieżącą datę przy użyciu lokalizacji systemowej. Inne dostępne tokeny to {time}, {document-title} i {url}.
Nagłówki i stopki dodane z addTextHeaders i addTextFooters stosują się domyślnie do każdej strony w dokumencie. Przekaż opcjonalny parametr zakresu stron, aby ograniczyć je do określonych stron — na przykład, aby pominąć nagłówek na stronie tytułowej.
Dla stylizowanych nagłówków wymagających logotypów, kolorów marki lub niestandardowych układów używaj zamiast tego HtmlHeaderFooter – akceptuje pełen ciąg HTML i renderuje go tak samo, jak ciało strony. Zobacz przykład niestandardowych nagłówków i stopek dla pełnego wzorca nagłówka HTML.
Jak ustawić marginesy strony i rozmiar papieru?
Przekaż instancję ChromePdfRenderOptions z skonfigurowanymi wartościami marginesów i rozmiaru papieru przed wywołaniem jakiejkolwiek metody 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");
Wartości marginesu są podane w milimetrach. Enum PaperSize obejmuje standardowe rozmiary (A4, Letter, Legal, A3 i inne). Deweloperzy, którzy potrzebują niestandardowych wymiarów, mogą ustawić niestandardową szerokość i wysokość przy użyciu options.setCustomPaperWidth i options.setCustomPaperHeight. Przykład niestandardowego rozmiaru papieru i przykład niestandardowych marginesów pokazują pełne wzorce konfiguracji.
Jak nałożyć znak wodny na PDF?
Znak wodny w IronPDF to HTML nadrukowany na każdej stronie przy konfigurowalnej przezroczystości. To podejście daje deweloperom pełną kontrolę nad wyglądem znaku wodnego — każdy element HTML, obraz czy stylizowany tekst może służyć jako pieczątka.
: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");
Metoda applyStamp akceptuje parametr HtmlStampOptions dla precyzyjnego pozycjonowania — centrum, górny lewy, niestandardowe przesunięcia pikselowe i z-indeks (pierwszy plan lub tło). Umieszczenie pieczątki jako tła powoduje, że znajduje się za tekstem, dzięki czemu dokument pozostaje czytelny. Ustawienie jej jako pierwszego planu umieszcza ją na wierzchu, co jest trudniejsze do ukrycia podczas drukowania.
Zobacz poradnik o niestandardowych znakach wodnych z przykładami obejmującymi tła wodne, wzory kafelkowe i usuwanie znaków wodnych przez uaktualnienie licencji.
Jak połączyć wiele plików PDF w jeden?
PdfDocument.merge łączy dwa lub więcej obiektów PdfDocument w kolejności i zwraca jeden nowy dokument. Jest to preferowane podejście do składania raportów z sekcji składowych, dodawania okładek lub łączenia sekcji używanych przez użytkowników w pracy masowej.
: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");
Strony z każdego dokumentu źródłowego pojawiają się w wyniku połączenia w kolejności określonej przez listę źródeł. Scalony dokument nie dziedziczy żadnych metadanych z żadnego indywidualnego źródła — zaktualizuj meta.title i inne właściwości dokumentu za pomocą PdfDocument.getPdfMetaData() po scaleniu, jeśli te pola mają znaczenie dla odbiorcy końcowego.
Metoda merge ma również przeciążenie z dwoma argumentami, które akceptuje dokładnie dwie instancje PdfDocument. Dla masowych połączeń wielu dokumentów, użyj przeciążenia listy — jest bardziej wydajne niż łączenie wielu wywołań z dwoma argumentami, ponieważ przetwarza wszystkie źródła w jednym przejściu.
Każde źródło PdfDocument na liście scalania pozostaje ważne i niezmienione po wywołaniu. Instancja merged jest nowym, niezależnym dokumentem. Zwolnij dokumenty źródłowe ich metodą close(), gdy nie są już potrzebne, aby zwolnić powiązane zasoby natywne.
Jak dodać lub usunąć strony z PDF?
Poszczególne strony można skopiować z jednego dokumentu do innego lub usunąć całkowicie przy użyciu metod PdfDocument.copyPage, PdfDocument.copyPages i 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");
Indeksy stron w IronPDF są oparte na zerze. Podczas usuwania wielu stron, przekaż wszystkie indeksy w jednym wywołaniu removePages zamiast wywoływać ją wielokrotnie w pętli, ponieważ każde usunięcie przesuwa indeksy kolejnych stron. Przekazanie pełnej listy naraz unika przesunięcia indeksów. Na przykład, aby usunąć strony 2 i 4 z dokumentu pięciostronicowego, przekaż Arrays.asList(1, 3) — nie dwa oddzielne wywołania.
Aby wstawić strony z zewnętrznego PDF — na przykład, dołączyć prawne zastrzeżenie ze statycznego szablonu — użyj PdfDocument.insertPdf do wstawienia zewnętrznego dokumentu w określone miejsce. Liczba stron dokumentu odbiorczego aktualizuje się natychmiast po wstawieniu.
Właściwość CSS css page-break-after:always jest standardowym sposobem wymuszania przełączeń stron w HTML, który będzie renderowany do PDF. IronPDF obsługuje również nowszą właściwość CSS break-after: page. Oba podejścia zapewniają przewidywalne podziały stron bez potrzeby stosowania specjalnego kodu Java.
Jak zabezpieczyć hasłem PDF w Java?
IronPDF obsługuje dwa różne hasła na PDF: hasło właściciela, które kontroluje uprawnienia do edycji, drukowania i kopiowania oraz hasło użytkownika, które kontroluje otwieranie dokumentu. Obie są ustawiane za pośrednictwem klasy 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");
Ustawienie AllowUserPrinting akceptuje enum PrintOptions: FullPrintQuality, LowQualityPrint lub NoPrint. Gdy ustawione jest hasło właściciela, ale hasło użytkownika jest puste, dokument otwiera się bez hasła, ale edycja i inne operacje wymagają hasła właściciela w edytorze PDF.
Jak przekształcić szablon HTML z dynamicznymi danymi?
Generowanie PDF-ów z szablonu HTML napędzanego danymi jest jednym z najczęstszych przypadków użycia produkcji dla IronPDF. Standardowym podejściem jest budowanie ciągu HTML w Javie za pomocą biblioteki szablonów lub operacji na ciągach, a następnie przekazanie gotowego ciągu do 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");
W przypadku większych projektów rozważ użycie biblioteki szablonów Java, takiej jak Thymeleaf lub Freemarker, aby zarządzać szablonami HTML jako oddzielnymi plikami, wprowadzać dane za pomocą obiektu kontekstu i utrzymać czystość składni szablonu w porównaniu do łączenia ciągów. Obie biblioteki generują zwykły ciąg HTML, który jest przekazywany bezpośrednio do renderHtmlAsPdf.
Podczas generowania PDF-ów w zadaniu wsadowym — na przykład, jednego rachunku dla każdego klienta — utwórz instancję ChromePdfRenderOptions przed pętlą i użyj tej samej instancji dla każdego wywołania renderowania. Tworzenie nowego obiektu opcji na wywołanie dodaje niepotrzebny narzut związany z alokacją obiektu.)}]
Jak wyodrębnić tekst z PDF w Javie?
PdfDocument.extractAllText odczytuje całą treść tekstową z każdej strony w PDF i zwraca ją jako jeden ciąg. To jest przydatne do indeksowania wyszukiwania, ekstrakcji danych i weryfikacji zawartości po renderowaniu.
: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);
Zwrócony ciąg zachowuje kolejność odczytu tekstu na każdej stronie, ale nie zawiera formatowania. Spacje między kolumnami a komórkami tabel są reprezentowane jako spacje. Dla plików PDF zawierających wiele sekcji logicznych, extractTextFromPage(int pageIndex) izoluje tekst z pojedynczej strony, co jest bardziej wydajne przy przetwarzaniu dużych dokumentów po jednej stronie na raz.
Ekstrakcja tekstu działa tylko na PDF-ach, gdzie tekst jest przechowywany jako rzeczywiste obiekty tekstowe w strukturze PDF — PDF-y generowane przez renderHtmlAsPdf zawsze się kwalifikują. Skanowane dokumenty, gdzie strony to obrazy, wymagają OCR przed możliwością ekstrakcji tekstu. IronOCR jest uzupełniającą biblioteką Iron Software, która dodaje możliwości OCR do aplikacji Java i .NET.
Do ekstrakcji obrazów użyj pdf.extractAllImages(), która zwraca listę obiektów BufferedImage, po jednym na każdy znaleziony obraz w dokumencie. Zobacz przykład ekstrakcji tekstu z PDF i przykład ekstrakcji obrazów z PDF dla pełnych wzorców kodu.
Jak skompresować plik PDF?
PdfDocument.compressImages zmniejsza rozmiar pliku poprzez ponowne kodowanie osadzonych obrazów o niższej jakości. To jest szczególnie skuteczne dla PDF-ów, które zostały wygenerowane z stron internetowych zawierających duże zdjęcia lub obrazy banerowe.
: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");
Wartości jakości między 50 a 75 zwykle zmniejszają rozmiar pliku o 40–70% przy akceptowalnej wierności wizualnej dla czytania na ekranie. Wartości poniżej 40 mogą wprowadzać widoczne artefakty na zdjęciach, chociaż mogą być akceptowalne dla diagramów i zrzutów ekranu z dużymi obszarami jednokolorowymi.
Przeciążona metoda compressImages(int quality, boolean scaleExistingImages) akceptuje również wartość logiczną dla tego, czy skalować obrazy większe od ich wyświetlanego rozmiaru w PDF. Ustawienie tego na true dodatkowo zmniejsza rozmiar pliku, eliminując nadmiarową rozdzielczość, która występuje, gdy obraz o wysokiej rozdzielczości jest osadzony, ale wyświetlany w znacznie mniejszym rozmiarze na stronie. Jest to powszechne w konwersjach web-to-PDF, gdzie obrazy są serwowane przy rozdzielczości 2x dla wyświetlaczy retina.
Przykład kompresji PDF demonstruje kompresję masową w wielu stronach dokumentów, w tym sposób weryfikacji zmniejszenia rozmiaru po kompresji.
Kolejne kroki
Ten samouczek obejmował trzy metody konwersji HTML na PDF, instalację, konfigurację licencji, opcje renderowania, nagłówki i stopki, ustawienia układu strony, ekstrakcję tekstu i kompresję plików.
Aby pójść dalej, eksploruj te zasoby w dokumentacji IronPDF dla Javy:
- Ustawienia generowania PDF — Konfiguruj DPI, powiększenie, limit czasu i typ mediów CSS dla precyzyjnej kontroli renderowania.
- Nagłówki i stopki — Dodaj nagłówki i stopki w HTML z logotypami marki i niestandardowymi układami.
- Układ strony — ustaw niestandardowe marginesy i wymiary papieru dla gotowego do druku wyniku.
- Znaki wodne — stosuj tło i pierwszoplanowe znaki wodne dla bezpieczeństwa dokumentu.
- Ekstrakcja treści — Wyciągaj tekst z PDF i wyciągaj obrazy do przetwarzania na dalszych etapach.
- Kompresja plików — Zmniejsz rozmiar pliku PDF dla przechowywania i wysyłki e-mail.
- Dokumentacja API — przeglądaj pełne dokumentację API IronPDF dla Javy dla każdej klasy i metody.
Rozpocznij bezpłatną wersję próbną, aby zacząć konwertować HTML na PDF w twojej aplikacji Java już dziś. Kiedy będziesz gotów do wdrożenia, zobacz opcje licencjonowania, aby znaleźć plan pasujący do twojego projektu.
Często Zadawane Pytania
Jak przekonwertować ciąg HTML na PDF w Java?
Wywołaj PdfDocument.renderHtmlAsPdf z twoim ciągiem HTML. Przekaż opcjonalną bazową ścieżkę jako drugi argument tak, aby względne referencje CSS, obrazków i skryptów były poprawnie rozwiązane. Wywołaj saveAs na zwróconym PdfDocument, aby zapisać plik.
Jak przekonwertować URL na PDF w Java?
Wywołaj PdfDocument.renderUrlAsPdf z pełnym URL. IronPDF pobiera stronę, czeka na wykonanie JavaScript, i renderuje w pełni załadowany DOM jako PDF.
Jak przekonwertować lokalny plik HTML na PDF w Java?
Wywołaj PdfDocument.renderHtmlFileAsPdf z pełną ścieżką pliku. Wszystkie względne odwołania do zasobów w pliku HTML są automatycznie rozwiązywane względem katalogu tego pliku.
Jak zainstalować IronPDF w projekcie Java, używając Maven?
Dodaj zależność IronPDF do pom.xml z groupId com.ironsoftware i artifactId ironpdf, następnie uruchom mvn install z poziomu katalogu głównego projektu.
Jak usunąć znak wodny z plików PDF generowanych przez IronPDF?
Wywołaj License.setLicenseKey z ważnym kluczem licencyjnym przed jakimkolwiek wywołaniem renderowania. Bez klucza licencyjnego IronPDF nakłada kafelkowany znak wodny na każdą stronę.
Jak dodać nagłówki i stopki do PDF w Java?
Utwórz instancję TextHeaderFooter, ustaw jej właściwości tekstowe, używając tokenów formatu, takich jak {page} i {total-pages}, następnie wywołaj pdf.addTextHeaders i pdf.addTextFooters. Dla stylizowanych nagłówków z logotypami, użyj HtmlHeaderFooter zamiast tego.
Jak ustawić marginesy stron PDF i rozmiar papieru w Java?
Utwórz instancję ChromePdfRenderOptions i wywołaj setMarginTop, setMarginBottom, setMarginLeft, setMarginRight (w milimetrach) i setPaperSize z wartością wyliczeniową PaperSize. Przekaż opcje do dowolnej metody renderowania.
Jak połączyć wiele plików PDF w jeden w Java?
Utwórz List
Jak zabezpieczyć hasłem plik PDF w Java?
Utwórz instancję SecurityOptions, wywołaj setUserPassword i setOwnerPassword, następnie zastosuj to za pomocą PdfSecurityManager przed zapisaniem dokumentu.
Jak wyodrębnić tekst z pliku PDF w Javie?
Wywołaj pdf.extractAllText() aby pozyskać całą zawartość tekstową jako pojedynczy ciąg znaków. Użyj extractTextFromPage(int pageIndex) do wyodrębnienia tekstu z konkretnej strony.


