Jak połączyć dwa pliki PDF za pomocą Javy
Łą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
- Dodaj zaleznosc IronPDF do swojego pliku
pom.xmlMaven - Importuj
com.ironsoftware.ironpdf.PdfDocument - Zaladuj pliki zrodlowe, uzywajac
PdfDocument.fromFile() - Wywolaj
PdfDocument.merge(pdf1, pdf2), aby wyprodukowac zintegrowany dokument - 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.

Nazwij projekt i kliknij **Zakończ**. IntelliJ otwiera `pom.xml` automatycznie, gdy tylko struktura projektu zostanie wygenerowana.

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>

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.

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/).

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.

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().
fromFile() moga byc absolutne lub wzgledne wobec katalogu roboczego. Uzywanie Paths.get() (z java.nio.file) jest zalecanym podejsciem dla kompatybilnosci miedzyplatformowej.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 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
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.
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.


