Jak połączyć dwa pliki PDF za pomocą Javy

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

Łączenie dokumentów PDF w jeden plik jest częstym wymaganiem w przepływach pracy zarządzania dokumentami. Konsolidacja miesięcznych raportów, kompletowanie wieloskładnikowych formularzy oraz pakowanie faktur to częste scenariusze. IronPDF dla Java redukuje tę operację do jednego wywołania metody: PdfDocument.merge(). Przekaż dwoma lub więcej załadowanymi dokumentami, a otrzymasz jeden złączony PDF z zachowaną wszystkimi formatowaniem, czcionkami i osadzonymi obrazami dokładnie takimi jak były.

Ten przewodnik przechodzi przez cztery najbardziej praktyczne scenariusze łączenia: łączenie dynamicznie generowanych plików PDF, łaczenie istniejących plików z dysku, obsługę większych partii za pomocą podejścia opartego na listach oraz kontrolowanie kolejności stron w końcowym dokumencie.

Szybki start: Łączenie plików PDF w Javie

  1. Dodaj zaleznosc IronPDF do swojego pliku pom.xml Maven
  2. Importuj com.ironsoftware.ironpdf.PdfDocument
  3. Zaladuj pliki zrodlowe, uzywajac PdfDocument.fromFile()
  4. Wywolaj PdfDocument.merge(pdf1, pdf2), aby wyprodukowac zintegrowany dokument
  5. Zapisz wynik za pomocá merged.saveAs()

```java {title="Szybki start: Podstawowe scalanie PDF"} //:path=/static-assets/pdf/content-code-examples/how-to/how-to-merge-two-pdf-files-java-tutorial/quickstart-merge.java import com.ironsoftware.ironpdf.PdfDocument; import java.nio.file.Paths;

// Załaduj dwa istniejące dokumenty PDF z dysku PdfDocument pdf1 = PdfDocument.fromFile(Paths.get("document1.pdf")); PdfDocument pdf2 = PdfDocument.fromFile(Paths.get("document2.pdf"));

// Łącz w jeden dokument; formatowanie i obrazy sa zachowane PdfDocument merged = PdfDocument.merge(pdf1, pdf2);

// Zapisz połączony plik PDF na dysk merged.saveAs(Paths.get("merged-output.PDF"));


<div class="hsg-featured-snippet">
<h3>Minimalny proces (5 kroków)</h3>

1. Dodaj IronPDF jako zależność Maven lub Gradle
2. Importuj `com.ironsoftware.ironpdf.PdfDocument`
3. Zaladuj kazdy PDF, uzywajac `PdfDocument.fromFile(Paths.get("file.pdf"))`
4. Wywolaj `PdfDocument.merge(pdf1, pdf2)`, lub przekaz array `PdfDocument[]` dla wsadow
5. Zapisz scalony wynik za pomocą `merged.saveAs(Paths.get("output.pdf"))`
</div>

## Jakie są wymagania dotyczące scałania plików PDF w Javie?

Przed napisaniem jakiegokolwiek kodu, upewnij się, że spełnione są te cztery wymagania:

1. **Java 8 lub nowsza** zainstalowana z ustawiona zmienną srodowiskową `JAVA_HOME`. Zobacz [przewodnik pobierania i instalacji Java](https://www.java.com/en/download/help/download_options.html#windows) dla instrukcji specyficznych dla platformy.
2. **Java IDE** (ten przewodnik używa [JetBrains IntelliJ IDEA](https://www.jetbrains.com/idea/download/#section=windows), choć [Eclipse](https://www.eclipse.org/downloads/) działa równie dobrze).
3. **Maven lub Gradle** skonfigurowany w twoim IDE. Jeśli jesteś nowy w Maven, [przewodnik instalacyjny Maven JetBrains](https://www.jetbrains.com/idea/guide/tutorials/marco-codes-maven/installing-maven/) pokrywa konfigurację w IntelliJ.
4. **Biblioteka IronPDF** dodana jako zależność projektu. [Przewodnik instalacji IronPDF for Java](https://ironpdf.com/java/docs/) wyjaśnia zarówno podejście Maven, jak i Gradle.

Zwróć uwagęIronPDF for Java obsługuje Java 8 i późniejsze. Nie ma potrzeby aktualizowania istniejących projektów do nowszego JDK, aby zacząć go używać.
## Jak zainstalować IronPDF for Java? IronPDF for Java dystrybuowany jest przez [Maven Central](https://search.maven.org), więc dodanie go do projektu zajmuje tylko kilka linii konfiguracji. Nie są potrzebne ręczne pobierania JAR. Otwórz IntelliJ IDEA i utwórz nowy projekt Maven z **Plik -> Nowy -> Projekt**, wybierając Maven jako system budowania. ![Dialog Nowy Projekt IntelliJ IDEA z wybraną opcją Maven, pokazujący opcje archetypu dla tworzenia projektu Java](/static-assets/ironpdf-java/howto/how-to-merge-two-pdf-files-java-tutorial/how-to-merge-two-pdf-files-java-tutorial-1.webp) Nazwij projekt i kliknij **Zakończ**. IntelliJ otwiera `pom.xml` automatycznie, gdy tylko struktura projektu zostanie wygenerowana. ![Dialog Nowy Projekt w IDE z nazwą projektu IronPDF i skonfigurowaną ścieżką lokalizacji na pulpicie](/static-assets/ironpdf-java/howto/how-to-merge-two-pdf-files-java-tutorial/how-to-merge-two-pdf-files-java-tutorial-2.webp) Dodaj blok zalezności poniżej wewnątrz sekcji `<dependencies>` pliku `pom.xml`. Zawsze sprawdzaj [Maven Central dla najnowszej wersji IronPDF](https://central.sonatype.com/artifact/com.ironsoftware/ironpdf) i zastępuj ciąg wersji na bieżący. ```xml {title="pom.xml: Zaleznosc IronPDF"} //:path=/static-assets/pdf/content-code-examples/how-to/how-to-merge-two-pdf-files-java-tutorial/pom-dependency.xml <dependency> <groupId>com.ironsoftware</groupId> <artifactId>ironpdf</artifactId> <version>2024.9.1</version> </dependency>

IntelliJ IDEA pokazująca Maven pom.xml z konfiguracją projektu IronPDF i ustawieniami kompilatora Java 10

Po zapisaniu pom.xml pojawi sie mala ikona synchronizacji w prawym gornym rogu edytora. Kliknij na nią, aby uruchomić pobieranie zależności Maven. Zależnie od szybkości połączenia, potrwa to od 15 sekund do kilku minut i pobierze IronPDF wraz ze wszystkimi wymaganymi zależnościami tranzytywnymi.

Plik Maven pom.xml pokazujący konfigurację zależności IronPDF dla Java z tagami groupId, artifactId i version

PoradyUzytkownicy Gradle moga dodac implementation 'com.ironsoftware:ironpdf:2024.9.1' do swojego bloku zależności build.gradle, zamiast tego. Ten sam artyfakt Maven Central działa w obu systemach budowania.

Jak Tworzyć i Łączyć Nowe Dokumenty PDF?

Gdy zawartosc zrodlowa jest generowana w czasie rzeczywistym (z szablonow HTML, rekordow baz danych lub wejsciowych uzytkownika), workflow polega na wyrenderowaniu kazdego kawalka jako PdfDocument, nastepnie ich scaleniu.

PdfDocument.renderHtmlAsPdf() konwertuje lancuch HTML na PDF w pamieci. Kazde wywolanie generuje niezalezny obiekt dokumentu, ktory mozna bezposrednio przekazac do merge() bez pisania posrednich plików na dysk.

Renderowanie Sekcji HTML Przed Łączeniem

Poniższy przykład renderuje dwa oddzielne ciągi znaków HTML do pamięci i łączy je w jedną całość. Ten wzór działa dobrze dla generatorów raportów, budowniczych faktur, i każdego systemu, w którym zawartość jest programowo łączona z szablonów lub wierszy baz danych.

```java {title="scalaj Dynamicznie Generowane PDF-y"} //:path=/static-assets/pdf/content-code-examples/how-to/how-to-merge-two-pdf-files-java-tutorial/merge-html-pdfs.java import com.ironsoftware.ironpdf.PdfDocument; import java.io.IOException; import java.nio.file.Paths;

public class Main { public static void main(String[] args) throws IOException { // Zawartość HTML dla każdej sekcji dokumentu String htmlA = "

Pierwsza część raportu.

"; String htmlB = "

Druga część raportu.

";

// Renderuj każdy ciąg znaków HTML do PDF w pamięci -- niepotrzebne są zapisy na dysk PdfDocument pdfA = PdfDocument.renderHtmlAsPdf(htmlA); PdfDocument pdfB = PdfDocument.renderHtmlAsPdf(htmlB);

// Połącz oba dokumenty w jeden połączony plik PDF PdfDocument merged = PdfDocument.merge(pdfA, pdfB);

// Zapisz scalony wynik merged.saveAs(Paths.get("assets/merged.pdf")); } }


Scalony wynik konkatenuje strony w kolejnosci argumentow: strony `pdfA` pojawiaja sie przed stronami `pdfB`. Pełny przegląd silnika renderującego HTML znajdziesz w [tutorialu IronPDF HTML to PDF dla Java](https://ironpdf.com/java/tutorials/html-to-pdf/).

![Przeglądarka PDF pokazująca pomyślnie połączone dokumenty - pierwszy PDF po lewej, drugi PDF po prawej z kontrolkami nawigacji](/static-assets/ironpdf-java/howto/how-to-merge-two-pdf-files-java-tutorial/how-to-merge-two-pdf-files-java-tutorial-5.webp)

WażneWywolanie `renderHtmlAsPdf()` uzywa silnika renderujacego opartego na Chromium. Pelne CSS, czcionki webowe i obrazy w lini są wszystkie obsługiwane - wynik pasuje do tego, co przeglądarka by wyswietlila.
## Jak połączyć istniejące pliki PDF? Zaladownie PDF-ow z dysku i ich scalanie przebiega wedlug tego samego wzorca, uzywajac `PdfDocument.fromFile()` do odczytu kazdego pliku w pamiec przed przekazaniem obiektow do `merge()`. To podejście pasuje do każdego przepływu pracy, gdzie dokumenty źródłowe już istnieją - zeskanowane faktury, wyeksportowane raporty lub pliki otrzymane z zewnętrznego systemu. IronPDF odczytuje strukturę PDF i łączy strony bez zmiany oryginalnych plików źródłowych. ### Ładowanie i łączenie plików z dysku ```java {title="Scalanie Istniejacych Plikow PDF z Dysku"} //:path=/static-assets/pdf/content-code-examples/how-to/how-to-merge-two-pdf-files-java-tutorial/merge-existing-files.java import com.ironsoftware.ironpdf.PdfDocument; import java.io.IOException; import java.nio.file.Paths; public class Main { public static void main(String[] args) throws IOException { // Załaduj dwa istniejące pliki PDF z dysku PdfDocument pdfA = PdfDocument.fromFile(Paths.get("assets/invoice-january.pdf")); PdfDocument pdfB = PdfDocument.fromFile(Paths.get("assets/invoice-february.pdf")); // Połącz w jeden dokument PdfDocument merged = PdfDocument.merge(pdfA, pdfB); // Zapisz scalony wynik -- oryginały zostają nietknięte merged.saveAs(Paths.get("assets/invoices-q1.pdf")); } }

Wywolanie merge() generuje nowy obiekt PdfDocument; ani pdfA, ani pdfB nie sa modyfikowane. Aby odwrócić operację -- wyodrębnić strony z powrotem -- zobacz przykład podziału PDF dla Java.

Przeglądarka PDF pokazująca scalony dokument z funkcją strony nagrodowej i stroną główną Wikipedii demonstracje udanego scalenia PDF

Jakie formaty plików akceptuje fromFile()?

PdfDocument.fromFile() akceptuje standardowe pliki .pdf. Dla dokumentow, które musza zostac skonwertowane przed scaleniem - takich jak pliki HTML, pliki obrazow czy inne formaty - uzyj najodowiedniej metody renderowania (renderHtmlAsPdf(), renderUrlAsPdf()), aby wyprodukowac PdfDocument, nastepnie przekaz ten obiekt do merge().

PoradySciezki przekazywane do fromFile() moga byc absolutne lub wzgledne wobec katalogu roboczego. Uzywanie Paths.get() (z java.nio.file) jest zalecanym podejsciem dla kompatybilnosci miedzyplatformowej.

Icon Quote related to Jakie formaty plików akceptuje fromFile()?

Moją ulubioną biblioteką tego typu jest IronPDF. Umożliwia ona szybkie i efektywne manipulowanie plikami PDF. Posiada także wiele cennych funkcji, takich jak eksport do formatu PDF/A i cyfrowe podpisywanie dokumentów PDF.

Milan Jovanovic related to Jakie formaty plików akceptuje fromFile()?

Milan Jovanovic

Microsoft MVP

Zobacz studium przypadku
Icon Quote related to Jakie formaty plików akceptuje fromFile()?

IronOCR pozwala nam oszczędzić 40 000 USD rocznie na ręcznym przetwarzaniu, jednocześnie zwiększając produktywność i uwalniając zasoby do zadań o wysokim wpływie. Gorąco polecam.

Brent Matzelle related to Jakie formaty plików akceptuje fromFile()?

Brent Matzelle

Dyrektor technologiczny, OPYN

Zobacz studium przypadku
Icon Quote related to Jakie formaty plików akceptuje fromFile()?

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.

David Jones related to Jakie formaty plików akceptuje fromFile()?

David Jones

Główny inżynier oprogramowania, Agorus Build

Zobacz studium przypadku

Jak połączyć więcej niż dwa pliki PDF?

PdfDocument.merge() przyjmuje liste argumentow o zmiennej dlugosci, wiec laczenie trzech lub czterech dokumentow nie rozni sie skladniowo od laczenia dwoch. Dla dynamicznie rozmiarowanych kolekcji - gdzie liczba PDF-ow jest okreslana w czasie dzialania - przekazanie array PdfDocument[] jest czystsze.

Varargs i wzorce oparte na listach

Dwa poniższe wzorce dają identyczne wyniki. Wybierz bezpośrednie wywołanie varargs, gdy liczba plików jest ustalona, a wzorzec listy-to-tablica, gdy tworzysz kolekcję programowo:

```java {title="Scalanie Czterech PDF-ów -- Podejscia Varargs i List"} //:path=/static-assets/pdf/content-code-examples/how-to/how-to-merge-two-pdf-files-java-tutorial/merge-multiple-files.java import com.ironsoftware.ironpdf.PdfDocument; import java.io.IOException; import java.nio.file.Paths; import java.util.ArrayList; import java.util.List;

public class Main { public static void main(String[] args) throws IOException { // Załaduj cztery istniejące pliki PDF PdfDocument pdfA = PdfDocument.fromFile(Paths.get("assets/chapter-1.pdf")); PdfDocument pdfB = PdfDocument.fromFile(Paths.get("assets/chapter-2.pdf")); PdfDocument pdfC = PdfDocument.fromFile(Paths.get("assets/chapter-3.pdf")); PdfDocument pdfD = PdfDocument.fromFile(Paths.get("assets/chapter-4.pdf"));

// Wzorzec 1: bezpośrednie wywołanie varargs -- dobrze sprawdza się przy stałej liczbie plików PdfDocument merged = PdfDocument.merge(pdfA, pdfB, pdfC, pdfD); merged.saveAs(Paths.get("assets/full-document.pdf"));

// Wzorzec 2: najpierw zbuduj listę -- preferowane, gdy liczba plików jest dynamiczna List pdfList = new ArrayList<>(); pdfList.add(pdfA); pdfList.add(pdfB); pdfList.add(pdfC); pdfList.add(pdfD);

PdfDocument mergedFromList = PdfDocument.merge( pdfList.toArray(new PdfDocument[0]) ); mergedFromList.saveAs(Paths.get("assets/full-document-v2.pdf")); } }


WażneKolejność stron w wyniku odpowiada dokładnie kolejności argumentów. Jesli kolejnosc dokumentow ma znaczenie - na przyklad, rozdzialy ksiazki lub uporzadkowane sekcje formularzy - posortuj swoja liste przed wywolaniem `merge()`.
### Jak przeskanować katalog i scalić wszystkie PDF? Gdy zestaw plików wejściowych nie jest znany w czasie kompilacji, naturalnym rozszerzeniem wzorca listy jest czytanie ścieżek plików z katalogu. Fragment poniżej zbiera wszystkie pliki `.pdf` z folderu, sortuje je według nazwy pliku i scala w kolejności. ```java {title="Przeskanuj katalog i scal wszystkie pliki PDF"} //:path=/static-assets/pdf/content-code-examples/how-to/how-to-merge-two-pdf-files-java-tutorial/merge-directory-pdfs.java import com.ironsoftware.ironpdf.PdfDocument; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; public class Main { public static void main(String[] args) throws IOException { Path inputDir = Paths.get("assets/monthly-reports"); // Zbierz wszystkie pliki PDF z katalogu, posortowane według nazwy pliku List<Path> pdfPaths = Files.list(inputDir) .filter(p -> p.toString().endsWith(".pdf")) .sorted(Comparator.comparing(Path::getFileName)) .collect(Collectors.toList()); // Załaduj każdy plik do PdfDocument List<PdfDocument> documents = new ArrayList<>(); for (Path path : pdfPaths) { documents.add(PdfDocument.fromFile(path)); } // Scali wszystkie dokumenty i zapisz wynik PdfDocument combined = PdfDocument.merge( documents.toArray(new PdfDocument[0]) ); combined.saveAs(Paths.get("assets/annual-report.pdf")); } }

Wzorzec ten obsługuje dowolną wielkość folderu. Dla dużych partii (ponad 50 plików) rozważ ładowanie i scalanie w partiach, aby ograniczyć szczytowe użycie pamięci, zamiast ładować wszystkie pliki jednocześnie.

PoradySortuj pdfPaths z niestandardowym Comparator, jeśli twoje pliki mają schemat nazewnictwa oparty na dacie (np. 2024-01.pdf, 2024-02.pdf). Sortowanie alfabetyczne działa naturalnie dla zerem wyjustowanych numerów miesięcy.

Po scaleniu możesz chcieć dalej udoskonalić połączony dokument. IronPDF for Java obsługuje dodawanie niestandardowych nagłówków i stopek, stosowanie znaków wodnych i kompresję końcowego wyniku w celu zmniejszenia rozmiaru pliku przed dostarczeniem.

Jakie są kolejne kroki dla scalania PDF w Java?

Ten przewodnik omówił cztery wzorce scalania z IronPDF for Java: renderowanie treści HTML do PDF przed scaleniem, ładowanie i łączenie istniejących plików z dysku, obsługę partii dokumentów o zmiennej długości za pomocą listy oraz skanowanie katalogu w celu automatycznego scalania wszystkich PDF. W każdym przypadku PdfDocument.merge() zachowuje formatowanie źródła -- czcionki, obrazy i układ strony przechodzą do wyjściowego PDF bez żadnej dodatkowej konfiguracji.

Aby nadal eksplorować możliwości IronPDF for Java, zobacz Java merge PDF tutorial dla dodatkowych wzorców lub przejrzyj jak cyfrowo podpisać PDF w Java, aby dodać podpisy do połączonego wyniku. Dla operacji na poziomie strony -- zmiany kolejności, usuwania lub wyodrębniania pojedynczych stron -- zobacz przykład usuwania określonych stron.

Gotowy, aby spróbować tego w swoim własnym projekcie? Rozpocznij bezpłatny okres próbny -- nie jest wymagana karta kredytowa. Kiedy jesteś gotowy do wdrożenia, zobacz opcje licencjonowania dla zespołów i użytkowania enterprise.

Często Zadawane Pytania

Jaki jest najprostszy sposób na scałanie plików PDF w Javie?

Najprostszym sposobem jest PdfDocument.merge(pdf1, pdf2) z IronPDF for Java. Wczytaj każdy plik za pomocą PdfDocument.fromFile(Paths.get("file.pdf")), przekaż oba do merge(), a wynik zapisz za pomocą merged.saveAs().

Jakie są wymagania wstępne do scalania plików PDF za pomocą IronPDF w Java?

Potrzebujesz Java 8 lub nowszej z ustawionym JAVA_HOME, IDE Java, takiego jak IntelliJ IDEA lub Eclipse, skonfigurowanego Maven lub Gradle i dodanej zależności IronPDF do pliku pom.xml lub build.gradle projektu.

Czy mogę scalić więcej niż dwa pliki PDF na raz w Java?

Tak. PdfDocument.merge() akceptuje listę argumentów o zmiennej długości, więc możesz bezpośrednio przekazać trzy lub więcej obiektów PdfDocument. Dla dynamicznej kolekcji, przekonwertuj List<PdfDocument> na tablicę za pomocą list.toArray(new PdfDocument[0]) i przekaż to do merge().

Jak kontrolować kolejność stron przy scalaniu plików PDF w Java?

Strony pojawiają się w wyniku w tej samej kolejności, co argumenty przekazane do merge(). Jeśli budujesz listę dynamicznie, posortuj ją przed wywołaniem merge() -- na przykład posortuj według nazwy pliku lub pola daty w metadanych dokumentu.

Jak scalić pliki PDF wygenerowane z HTML w Java?

Wywołaj PdfDocument.renderHtmlAsPdf(htmlString) dla każdej sekcji HTML, aby uzyskać PdfDocument w pamięci, a następnie przekaż te obiekty do PdfDocument.merge(). Nie zapisuje się żadnych plików pośrednich na dysku.

Jakie dodatkowe operacje na PDF mogę wykonać po scaleniu w Java?

Po scaleniu, IronPDF for Java umożliwia dodawanie nagłówków i stopek, stosowanie niestandardowych znaków wodnych, kompresowanie wyjścia do zmniejszenia rozmiaru pliku, dodawanie podpisów cyfrowych, wyodrębnianie lub usuwanie pojedynczych stron oraz wypełnianie pól formularzy.

Darrius Serrant
Inżynier oprogramowania Full Stack (WebOps)

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

Czytaj więcej
Gotowy, aby rozpocząć?
Wersja: 2026.6 właśnie wydany
Still Scrolling Icon

Wciąż przewijasz?

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