# 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](/tutorials/html-to-pdf/), 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](https://github.com/iron-software/IronPdfJava.Examples/tree/main/tutorials/html-to-pdf).
*as-heading:2(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:
```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");
```
!!!--LIBRARY_START_TRIAL_BLOCK--!!!
*as-heading:2(Spis treści)*
- [Instalacja IronPDF for Java](#installing-ironpdf-for-java)
- [Jak zaimportować IronPDF i skonfigurować klucz licencyjny?](#how-do-i-import-ironpdf-and-configure-a-license-key)
- [Jak konwertować ciąg HTML do PDF?](#how-do-i-convert-an-html-string-to-pdf)
- [Jak przekonwertować URL do PDF w Javie?](#how-do-i-convert-a-url-to-pdf-in-java)
- [Jak przekonwertować lokalny plik HTML do PDF?](#how-do-i-convert-a-local-html-file-to-pdf)
- [Jak ustawić opcje generowania PDF?](#how-do-i-set-pdf-generation-options)
- [Jak dodać nagłówki i stopki?](#how-do-i-add-headers-and-footers)
- [Jak ustawić marginesy stron i rozmiar papieru?](#how-do-i-set-page-margins-and-paper-size)
- [Jak zastosować znak wodny do PDF?](#how-do-i-apply-a-watermark-to-a-pdf)
- [Jak scalić wiele plików PDF w jeden?](#how-do-i-merge-multiple-pdfs-into-one)
- [Jak dodać lub usunąć strony z PDF?](#how-do-i-add-or-remove-pages-from-a-pdf)
- [Jak zabezpieczyć hasłem PDF w Javie?](#how-do-i-password-protect-a-pdf-in-java)
- [Jak przekonwertować szablon HTML z dynamicznymi danymi?](#how-do-i-convert-an-html-template-with-dynamic-data)
- [Jak wyodrębnić tekst z PDF w Javie?](#how-do-i-extract-text-from-a-pdf-in-java)
- [Jak skompresować plik PDF?](#how-do-i-compress-a-pdf-file)
- [Kolejne kroki](#next-steps)
---
## Instalacja IronPDF for Java
IronPDF for Java jest dostarczany przez [Maven Central](https://central.sonatype.com/artifact/com.ironsoftware/ironpdf) 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>`:
```xml
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/maven-dependency.xml
<dependencies>
<!-- IronPDF for Java -->
<dependency>
<groupId>com.ironsoftware</groupId>
<artifactId>ironpdf</artifactId>
<version>[LATEST_VERSION]</version>
</dependency>
<!-- SLF4J logging provider (recommended) -->
<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](/java/product-updates/changelog/). Drugi artefakt aktywuje logowanie SLF4J, aby silnik renderowania IronPDF mógł zapisywać wiadomości diagnostyczne podczas wykonywania. Programiści, którzy preferują [Logback](https://logback.qos.ch/) 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:
```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](/java/product-updates/changelog/) lub ze strony Maven Central dla artefaktu.
### Opcja 2: Dodaj plik JAR ręcznie
Pobierz bezpośrednio JAR IronPDF z [Maven Central](https://central.sonatype.com/artifact/com.ironsoftware/ironpdf) 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".
[[i:(JAR IronPDF zawiera w sobie binarkę silnika Chromium. Pierwsze wywołanie renderowania na nowej maszynie wyeksploruje ją do katalogu tymczasowego, co zajmuje kilka sekund. Kolejne wywołania używają zbuforowanej binarki i uruchamiają się natychmiastowo. W środowiskach kontenerowych, zamontuj trwały wolumin w ścieżce ekstrakcji, aby uniknąć ponownej ekstrakcji przy każdym uruchomieniu kontenera.)]]
### 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](/java/docs/) 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.
```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](trial-license), 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:
```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.
```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.
```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.
[[t:(Przechowuj szablony HTML w dedykowanym katalogu i przekaż ten katalog jako ścieżkę bazową. Ten wzorzec pozwala projektantom aktualizować szablon bez dotykania jakiegokolwiek kodu w Java.)]]
---
## 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.
```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](/java/docs/) 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.
```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.
[[i:(IronPDF obsługuje wszystkie nowoczesne funkcje HTML i CSS, które obsługuje Chromium - Flexbox, CSS Grid, zmienne CSS, Web fonts i zapytania medialne są poprawnie renderowane w wyjściowym PDF.)]]
---
## 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`.
```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](/java/examples/pdf-generation-settings/), aby uzyskać pełną listę konfigurowalnych właściwości.
---
## 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.
```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](/java/examples/headers-and-footers/) 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`.
```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](/java/examples/custom-pdf-paper-size/) i [przykład niestandardowych marginesów](/java/examples/ironpdf-set-custom-margins/) 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.
```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.
[[t:(Aby uzyskać znak wodny w postaci powtarzającego się kafelka - taki, jaki IronPDF sam aplikuje w trybie próbnym - wygeneruj siatkę obróconych elementów tekstowych w ciągu pieczątki HTML i ustaw element tak, aby wypełniał całą stronę.)]]
Zobacz [poradnik o niestandardowych znakach wodnych](/java/how-to/custom-watermark/) 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.
```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`.
```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`.
```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.
[[w:(Zabezpieczenie hasłem PDF szyfruje plik, ale nie zastępuje prawidłowych systemów kontroli dostępu. Zdeterminowani użytkownicy z wyspecjalizowanymi narzędziami mogą próbować ataków siłowych na słabe hasła. Używaj silnych, losowo generowanych haseł w dokumentach, które wymagają rzeczywistego zabezpieczenia.)]]
---
## 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`.
```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](https://www.thymeleaf.org/) lub [Freemarker](https://freemarker.apache.org/), 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.
```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](https://ironsoftware.com/csharp/ocr/) 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](/java/examples/extract-text-from-pdf/) i [przykład ekstrakcji obrazów z PDF](/java/examples/extract-image-from-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.
```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](/java/examples/pdf-compression/) 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](/java/docs/):
1. **Ustawienia generowania PDF** - [Konfiguruj DPI, powiększenie, limit czasu i typ mediów CSS](/java/examples/pdf-generation-settings/) dla precyzyjnej kontroli renderowania.
2. **Nagłówki i stopki** - [Dodaj nagłówki i stopki w HTML](/java/examples/html-headers-and-footers/) z logotypami marki i niestandardowymi układami.
3. **Układ strony** - ustaw [niestandardowe marginesy](/java/examples/ironpdf-set-custom-margins/) i [wymiary papieru](/java/examples/custom-pdf-paper-size/) dla gotowego do druku wyniku.
4. **Znaki wodne** - stosuj [tło i pierwszoplanowe znaki wodne](/java/how-to/custom-watermark/) dla bezpieczeństwa dokumentu.
5. **Ekstrakcja treści** - [Wyciągaj tekst z PDF](/java/examples/extract-text-from-pdf/) i [wyciągaj obrazy](/java/examples/extract-image-from-pdf/) do przetwarzania na dalszych etapach.
6. **Kompresja plików** - [Zmniejsz rozmiar pliku PDF](/java/examples/pdf-compression/) dla przechowywania i wysyłki e-mail.
7. **Dokumentacja API** - przeglądaj pełne [dokumentację API IronPDF dla Javy](/object-reference/api/) dla każdej klasy i metody.
[Rozpocznij bezpłatną wersję próbną](trial-license), aby zacząć konwertować HTML na PDF w twojej aplikacji Java już dziś. Kiedy będziesz gotów do wdrożenia, [zobacz opcje licencjonowania](licensing), aby znaleźć plan pasujący do twojego projektu.
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:
import com.ironsoftware.ironpdf.*;// Set your license key before any rendering callsLicense.setLicenseKey("YOUR-LICENSE-KEY");// Convert an HTML string to a PDF and save itPdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Hello from IronPDF for Java!</h1>");pdf.saveAs("output.pdf");
import com.ironsoftware.ironpdf.*;
// Set your license key before any rendering calls
License.setLicenseKey("YOUR-LICENSE-KEY");
// Convert an HTML string to a PDF and save it
PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Hello from IronPDF for Java!</h1>");
pdf.saveAs("output.pdf");
Java
Start using IronPDF in your project today with a free trial.
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>:
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:
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".
Zwróć uwagę: JAR IronPDF zawiera w sobie binarkę silnika Chromium. Pierwsze wywołanie renderowania na nowej maszynie wyeksploruje ją do katalogu tymczasowego, co zajmuje kilka sekund. Kolejne wywołania używają zbuforowanej binarki i uruchamiają się natychmiastowo. W środowiskach kontenerowych, zamontuj trwały wolumin w ścieżce ekstrakcji, aby uniknąć ponownej ekstrakcji przy każdym uruchomieniu kontenera.
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.
import com.ironsoftware.ironpdf.*;import java.nio.file.Paths;// Apply your license key before any other IronPDF callsLicense.setLicenseKey("YOUR-LICENSE-KEY");// Optional: set a custom log file pathSettings.setLogPath(Paths.get("IronPdfEngine.log"));
import com.ironsoftware.ironpdf.*;
import java.nio.file.Paths;
// Apply your license key before any other IronPDF calls
License.setLicenseKey("YOUR-LICENSE-KEY");
// Optional: set a custom log file path
Settings.setLogPath(Paths.get("IronPdfEngine.log"));
Java
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:
import com.ironsoftware.ironpdf.*;// Read the license key from an environment variableString licenseKey = System.getenv("IRONPDF_LICENSE_KEY");if (licenseKey != null && !licenseKey.isEmpty()) {License.setLicenseKey(licenseKey);}
import com.ironsoftware.ironpdf.*;
// Read the license key from an environment variable
String licenseKey = System.getenv("IRONPDF_LICENSE_KEY");
if (licenseKey != null && !licenseKey.isEmpty()) {
License.setLicenseKey(licenseKey);
}
Java
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.
import com.ironsoftware.ironpdf.*;// Simple one-liner: convert an HTML string to a PDFPdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Hello from IronPDF!</h1>");pdf.saveAs("htmlstring_to_pdf.pdf");
import com.ironsoftware.ironpdf.*;
// Simple one-liner: convert an HTML string to a PDF
PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Hello from IronPDF!</h1>");
pdf.saveAs("htmlstring_to_pdf.pdf");
Java
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.
import com.ironsoftware.ironpdf.*;// HTML references assets in a local "assets" subfolderString 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 URLsPdfDocument pdf = PdfDocument.renderHtmlAsPdf(html, "C:/my-project/templates");pdf.saveAs("invoice.pdf");
import com.ironsoftware.ironpdf.*;
// HTML references assets in a local "assets" subfolder
String html = "<html>" +
"<head><link rel='stylesheet' href='assets/style.css'></head>" +
"<body><h1>Invoice</h1><img src='assets/logo.png' /></body>" +
"</html>";
// Pass the base path so IronPDF resolves relative asset URLs
PdfDocument pdf = PdfDocument.renderHtmlAsPdf(html, "C:/my-project/templates");
pdf.saveAs("invoice.pdf");
Java
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.
Porady: Przechowuj szablony HTML w dedykowanym katalogu i przekaż ten katalog jako ścieżkę bazową. Ten wzorzec pozwala projektantom aktualizować szablon bez dotykania jakiegokolwiek kodu w Java.
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.
import com.ironsoftware.ironpdf.*;// Convert a live web page to PDFPdfDocument pdf = PdfDocument.renderUrlAsPdf("https://en.wikipedia.org/wiki/PDF");pdf.saveAs("wikipedia_pdf_article.pdf");
import com.ironsoftware.ironpdf.*;
// Convert a live web page to PDF
PdfDocument pdf = PdfDocument.renderUrlAsPdf("https://en.wikipedia.org/wiki/PDF");
pdf.saveAs("wikipedia_pdf_article.pdf");
Java
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.
import com.ironsoftware.ironpdf.*;// Convert a local HTML file — assets resolve relative to its directoryPdfDocument pdf = PdfDocument.renderHtmlFileAsPdf("C:/invoices/TestInvoice1.html");pdf.saveAs("htmlfile_to_pdf.pdf");
import com.ironsoftware.ironpdf.*;
// Convert a local HTML file — assets resolve relative to its directory
PdfDocument pdf = PdfDocument.renderHtmlFileAsPdf("C:/invoices/TestInvoice1.html");
pdf.saveAs("htmlfile_to_pdf.pdf");
Java
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.
Zwróć uwagę: IronPDF obsługuje wszystkie nowoczesne funkcje HTML i CSS, które obsługuje Chromium - Flexbox, CSS Grid, zmienne CSS, Web fonts i zapytania medialne są poprawnie renderowane w wyjściowym PDF.
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.
import com.ironsoftware.ironpdf.*;import com.ironsoftware.ironpdf.render.*;ChromePdfRenderOptions options = newChromePdfRenderOptions();// 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 executingoptions.setJavascriptTimeout(5000);// Apply a 1.5x zoom level to scale content to fit the pageoptions.setZoom(150);// Render at 150 DPI for sharper images in print outputoptions.setDpi(150);PdfDocument pdf = PdfDocument.renderHtmlAsPdf( "<h1>Styled Report</h1>", options);pdf.saveAs("styled_report.pdf");
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.render.*;
ChromePdfRenderOptions options = new ChromePdfRenderOptions();
// Render the page using the print media type (uses @media print CSS rules)
options.setCssMediaType(CssMediaType.PRINT);
// Wait up to 5 seconds for JavaScript to finish executing
options.setJavascriptTimeout(5000);
// Apply a 1.5x zoom level to scale content to fit the page
options.setZoom(150);
// Render at 150 DPI for sharper images in print output
options.setDpi(150);
PdfDocument pdf = PdfDocument.renderHtmlAsPdf(
"<h1>Styled Report</h1>",
options
);
pdf.saveAs("styled_report.pdf");
Java
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.
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.
import com.ironsoftware.ironpdf.*;import com.ironsoftware.ironpdf.headerfooter.*;// Create a text-based header and footerTextHeaderFooter header = newTextHeaderFooter();header.setCenterText("Confidential — {date}");header.setFontSize(10);TextHeaderFooter footer = newTextHeaderFooter();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");
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.headerfooter.*;
// Create a text-based header and footer
TextHeaderFooter header = new TextHeaderFooter();
header.setCenterText("Confidential — {date}");
header.setFontSize(10);
TextHeaderFooter footer = new TextHeaderFooter();
footer.setLeftText("My Company, Inc.");
footer.setRightText("Page {page} of {total-pages}");
footer.setFontSize(9);
PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Annual Report</h1>");
pdf.addTextHeaders(header);
pdf.addTextFooters(footer);
pdf.saveAs("report_with_headers.pdf");
Java
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.
import com.ironsoftware.ironpdf.*;import com.ironsoftware.ironpdf.render.*;import com.ironsoftware.ironpdf.page.*;ChromePdfRenderOptions options = newChromePdfRenderOptions();// Set uniform margins in millimetersoptions.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");
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.render.*;
import com.ironsoftware.ironpdf.page.*;
ChromePdfRenderOptions options = new ChromePdfRenderOptions();
// Set uniform margins in millimeters
options.setMarginTop(20);
options.setMarginBottom(20);
options.setMarginLeft(15);
options.setMarginRight(15);
// Use A4 paper (default is Letter)
options.setPaperSize(PaperSize.A4);
PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<p>Page content here.</p>", options);
pdf.saveAs("a4_with_margins.pdf");
Java
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.
import com.ironsoftware.ironpdf.*;PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Confidential Report</h1><p>Internal use only.</p>");// Define the watermark using an HTML stringString watermarkHtml = "<h1 style='color:rgba(200,0,0,0.3); transform:rotate(-45deg);'>DRAFT</h1>";// Stamp the watermark on all pages at 50% opacitypdf.applyStamp(watermarkHtml);pdf.saveAs("draft_watermark.pdf");
import com.ironsoftware.ironpdf.*;
PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Confidential Report</h1><p>Internal use only.</p>");
// Define the watermark using an HTML string
String watermarkHtml = "<h1 style='color:rgba(200,0,0,0.3); transform:rotate(-45deg);'>DRAFT</h1>";
// Stamp the watermark on all pages at 50% opacity
pdf.applyStamp(watermarkHtml);
pdf.saveAs("draft_watermark.pdf");
Java
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.
Porady: Aby uzyskać znak wodny w postaci powtarzającego się kafelka - taki, jaki IronPDF sam aplikuje w trybie próbnym - wygeneruj siatkę obróconych elementów tekstowych w ciągu pieczątki HTML i ustaw element tak, aby wypełniał całą stronę.
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.
import com.ironsoftware.ironpdf.*;import java.util.Arrays;import java.util.List;// Render two separate HTML documents into PDFsPdfDocument 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 orderList<PdfDocument> parts = Arrays.asList(cover, body, appendix);PdfDocument merged = PdfDocument.merge(parts);merged.saveAs("full_report.pdf");
import com.ironsoftware.ironpdf.*;
import java.util.Arrays;
import java.util.List;
// Render two separate HTML documents into PDFs
PdfDocument cover = PdfDocument.renderHtmlAsPdf("<h1>Cover Page</h1>");
PdfDocument body = PdfDocument.renderHtmlAsPdf("<h1>Report Body</h1><p>Section one...</p>");
PdfDocument appendix = PdfDocument.renderHtmlAsPdf("<h2>Appendix A</h2>");
// Merge all three into a single PDF in the specified order
List<PdfDocument> parts = Arrays.asList(cover, body, appendix);
PdfDocument merged = PdfDocument.merge(parts);
merged.saveAs("full_report.pdf");
Java
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.
import com.ironsoftware.ironpdf.*;import java.util.Arrays;// Generate a multi-page document using CSS page breaksPdfDocument 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 resultreport.saveAs("two_page_report.pdf");
import com.ironsoftware.ironpdf.*;
import java.util.Arrays;
// Generate a multi-page document using CSS page breaks
PdfDocument report = PdfDocument.renderHtmlAsPdf(
"<p>Page 1 content</p>" +
"<div style='page-break-after:always;'></div>" +
"<p>Page 2 content</p>" +
"<div style='page-break-after:always;'></div>" +
"<p>Page 3 content</p>"
);
// Remove page 2 (zero-indexed — page index 1)
report.removePages(Arrays.asList(1));
// Save the two-page result
report.saveAs("two_page_report.pdf");
Java
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.
import com.ironsoftware.ironpdf.*;import com.ironsoftware.ironpdf.security.*;PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Secure Document</h1>");SecurityOptions security = newSecurityOptions();// Require a password to open the documentsecurity.setUserPassword("user123");// Require a separate password to edit, print, or copy contentsecurity.setOwnerPassword("owner456");// Restrict printing to prevent unauthorized reproductionsecurity.setAllowUserPrinting(PrintOptions.FullPrintQuality);PdfSecurityManager securityManager = newPdfSecurityManager(pdf);securityManager.setSecurityOptions(security);pdf.saveAs("secure_document.pdf");
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.security.*;
PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Secure Document</h1>");
SecurityOptions security = new SecurityOptions();
// Require a password to open the document
security.setUserPassword("user123");
// Require a separate password to edit, print, or copy content
security.setOwnerPassword("owner456");
// Restrict printing to prevent unauthorized reproduction
security.setAllowUserPrinting(PrintOptions.FullPrintQuality);
PdfSecurityManager securityManager = new PdfSecurityManager(pdf);
securityManager.setSecurityOptions(security);
pdf.saveAs("secure_document.pdf");
Java
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.
Ostrzeżenie: Zabezpieczenie hasłem PDF szyfruje plik, ale nie zastępuje prawidłowych systemów kontroli dostępu. Zdeterminowani użytkownicy z wyspecjalizowanymi narzędziami mogą próbować ataków siłowych na słabe hasła. Używaj silnych, losowo generowanych haseł w dokumentach, które wymagają rzeczywistego zabezpieczenia.
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.
import com.ironsoftware.ironpdf.*;// Simulate data from a database or service layerString customerName = "Acme Corp";String invoiceNumber = "INV-20240501";String totalAmount = "$1,250.00";String dueDate = "2024-06-01";// Build the HTML template with real data injectedString 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");
import com.ironsoftware.ironpdf.*;
// Simulate data from a database or service layer
String customerName = "Acme Corp";
String invoiceNumber = "INV-20240501";
String totalAmount = "$1,250.00";
String dueDate = "2024-06-01";
// Build the HTML template with real data injected
String html = "<!DOCTYPE html><html><head>" +
"<style>body{font-family:Arial,sans-serif;margin:40px;}" +
"table{width:100%;border-collapse:collapse;}" +
"th,td{border:1px solid #ccc;padding:8px;text-align:left;}" +
"th{background:#f4f4f4;}</style></head><body>" +
"<h1>Invoice</h1>" +
"<p><strong>Customer:</strong> " + customerName + "</p>" +
"<p><strong>Invoice #:</strong> " + invoiceNumber + "</p>" +
"<table><tr><th>Description</th><th>Amount</th></tr>" +
"<tr><td>Professional Services</td><td>" + totalAmount + "</td></tr>" +
"</table>" +
"<p><strong>Due Date:</strong> " + dueDate + "</p>" +
"</body></html>";
PdfDocument pdf = PdfDocument.renderHtmlAsPdf(html);
pdf.saveAs(invoiceNumber + ".pdf");
Java
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.
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 stringString text = pdf.extractAllText();System.out.println(text);
import com.ironsoftware.ironpdf.*;
import java.nio.file.Paths;
// Open an existing PDF (or use the result of a render call)
PdfDocument pdf = PdfDocument.fromFile(Paths.get("output.pdf"));
// Extract all text content as a plain string
String text = pdf.extractAllText();
System.out.println(text);
Java
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.
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.
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");
import com.ironsoftware.ironpdf.*;
import java.nio.file.Paths;
PdfDocument pdf = PdfDocument.fromFile(Paths.get("large_report.pdf"));
// Compress embedded images to 60% quality (0–100 scale)
pdf.compressImages(60);
pdf.saveAs("compressed_report.pdf");
Java
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.
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 z dokumentami w pożądanej kolejności i przekaż ją do PdfDocument.merge. Metoda zwraca nowy PdfDocument zawierający wszystkie strony ze wszystkich źródeł.
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.
Jacob Mellor jest Chief Technology Officer w Iron Software i wizjonerskim inżynierem, pionierem technologii C# PDF. Jako pierwotny deweloper głównej bazy kodowej Iron Software, kształtuje architekturę produktów firmy od jej początku, przekształcając ją wspólnie z CEO Cameron Rimington w firmę liczącą ponad 50 osób, obsługującą NASA, Teslę i światowe agencje rządowe.