{"id":344,"date":"2024-04-16T20:17:46","date_gmt":"2024-04-16T19:17:46","guid":{"rendered":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=344"},"modified":"2024-06-01T20:19:45","modified_gmt":"2024-06-01T19:19:45","slug":"mehrere-pdf-dateien-zusammenfuegen-mit-itext-und-java","status":"publish","type":"post","link":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=344","title":{"rendered":"Mehrere PDF-Dateien zusammenf\u00fcgen mit iText und Java"},"content":{"rendered":"\n<p>In der heutigen digitalen Welt ist das Verwalten von PDF-Dokumenten eine grundlegende Aufgabe, die in vielen Bereichen erforderlich ist. Ob im B\u00fcroalltag, in der Schule oder bei privaten Projekten \u2013 oft m\u00fcssen mehrere PDF-Dokumente zu einem einzigen Dokument zusammengef\u00fchrt werden. Eine der leistungsf\u00e4higsten und flexibelsten Bibliotheken zur Manipulation von PDF-Dateien in Java ist iText. Dieser Artikel bietet eine detaillierte Anleitung zur Verwendung von iText, um mehrere PDF-Dateien zu einer einzigen zusammenzuf\u00fchren.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Einf\u00fchrung in iText<\/h2>\n\n\n\n<p>iText ist eine Open-Source-Bibliothek f\u00fcr die Erstellung und Bearbeitung von PDF-Dokumenten. Sie ist besonders n\u00fctzlich f\u00fcr Entwickler, die automatisierte L\u00f6sungen zur Verarbeitung von PDF-Dokumenten ben\u00f6tigen. Die Bibliothek bietet eine Vielzahl von Funktionen, einschlie\u00dflich der Erstellung, Modifikation, Analyse und Validierung von PDF-Dateien.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Installation von iText<\/h3>\n\n\n\n<p>Um iText in einem Java-Projekt zu verwenden, m\u00fcssen Sie die Bibliothek zuerst in Ihr Projekt integrieren. Dies kann durch Hinzuf\u00fcgen der entsprechenden Maven-Abh\u00e4ngigkeit zu Ihrer <code>pom.xml<\/code>-Datei erfolgen:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dependency<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>com.itextpdf<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>itext7-core<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">version<\/span>&gt;<\/span>7.1.15<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">version<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">dependency<\/span>&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Alternativ k\u00f6nnen Sie iText als JAR-Datei herunterladen und manuell in Ihr Projekt einbinden.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Zusammenf\u00fcgen von PDF-Dateien<\/h2>\n\n\n\n<p>Der Prozess des Zusammenf\u00fcgens von PDF-Dateien mit iText umfasst mehrere Schritte: Das Erstellen eines <code>PdfDocument<\/code>-Objekts f\u00fcr die Ausgabe, das \u00d6ffnen der Eingabedokumente und das Kopieren der Seiten von den Eingabedokumenten in das Ausgabedokument.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Schritt-f\u00fcr-Schritt Anleitung<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Erstellen Sie ein <code>PdfDocument<\/code>-Objekt f\u00fcr die Ausgabe:<\/strong> Zun\u00e4chst m\u00fcssen wir ein <code>PdfDocument<\/code>-Objekt erstellen, das das zusammengef\u00fchrte PDF-Dokument repr\u00e4sentiert.<\/li>\n<\/ol>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">   <span class=\"hljs-built_in\">String<\/span> outputFilePath = <span class=\"hljs-string\">\"output\/merged.pdf\"<\/span>;\n   PdfWriter writer = <span class=\"hljs-keyword\">new<\/span> PdfWriter(outputFilePath);\n   PdfDocument pdfDoc = <span class=\"hljs-keyword\">new<\/span> PdfDocument(writer);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li><strong>\u00d6ffnen Sie die Eingabedokumente:<\/strong> Wir \u00f6ffnen die Eingabedokumente, die zusammengef\u00fchrt werden sollen, als <code>PdfDocument<\/code>-Objekte.<\/li>\n<\/ol>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">   <span class=\"hljs-built_in\">String<\/span>&#91;] inputFiles = {<span class=\"hljs-string\">\"input\/file1.pdf\"<\/span>, <span class=\"hljs-string\">\"input\/file2.pdf\"<\/span>, <span class=\"hljs-string\">\"input\/file3.pdf\"<\/span>};\n   PdfDocument&#91;] pdfDocuments = <span class=\"hljs-keyword\">new<\/span> PdfDocument&#91;inputFiles.length];\n   <span class=\"hljs-keyword\">for<\/span> (int i = <span class=\"hljs-number\">0<\/span>; i &lt; inputFiles.length; i++) {\n       PdfReader reader = <span class=\"hljs-keyword\">new<\/span> PdfReader(inputFiles&#91;i]);\n       pdfDocuments&#91;i] = <span class=\"hljs-keyword\">new<\/span> PdfDocument(reader);\n   }<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li><strong>Kopieren Sie die Seiten der Eingabedokumente in das Ausgabedokument:<\/strong> Jetzt kopieren wir die Seiten der Eingabedokumente in das Ausgabedokument.<\/li>\n<\/ol>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">   PdfMerger merger = <span class=\"hljs-keyword\">new<\/span> PdfMerger(pdfDoc);\n   <span class=\"hljs-keyword\">for<\/span> (PdfDocument pdfDocument : pdfDocuments) {\n       merger.merge(pdfDocument, <span class=\"hljs-number\">1<\/span>, pdfDocument.getNumberOfPages());\n       pdfDocument.close();\n   }<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li><strong>Schlie\u00dfen Sie das Ausgabedokument:<\/strong> Schlie\u00dflich m\u00fcssen wir das Ausgabedokument schlie\u00dfen, um alle \u00c4nderungen zu speichern.<\/li>\n<\/ol>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\">   <span class=\"hljs-selector-tag\">pdfDoc<\/span><span class=\"hljs-selector-class\">.close<\/span>();<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Vollst\u00e4ndiges Beispiel<\/h3>\n\n\n\n<p>Hier ist ein vollst\u00e4ndiges Java-Programm, das zeigt, wie man mehrere PDF-Dateien mit iText zusammenf\u00fchrt:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-keyword\">import<\/span> com.itextpdf.kernel.pdf.PdfDocument;\n<span class=\"hljs-keyword\">import<\/span> com.itextpdf.kernel.pdf.PdfReader;\n<span class=\"hljs-keyword\">import<\/span> com.itextpdf.kernel.pdf.PdfWriter;\n<span class=\"hljs-keyword\">import<\/span> com.itextpdf.kernel.utils.PdfMerger;\n\npublic <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">MergePDFs<\/span> <\/span>{\n    public <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> main(<span class=\"hljs-built_in\">String<\/span>&#91;] args) {\n        <span class=\"hljs-keyword\">try<\/span> {\n            <span class=\"hljs-comment\">\/\/ Ausgabe-PDF-Dokument erstellen<\/span>\n            <span class=\"hljs-built_in\">String<\/span> outputFilePath = <span class=\"hljs-string\">\"output\/merged.pdf\"<\/span>;\n            PdfWriter writer = <span class=\"hljs-keyword\">new<\/span> PdfWriter(outputFilePath);\n            PdfDocument pdfDoc = <span class=\"hljs-keyword\">new<\/span> PdfDocument(writer);\n\n            <span class=\"hljs-comment\">\/\/ Eingabedokumente \u00f6ffnen<\/span>\n            <span class=\"hljs-built_in\">String<\/span>&#91;] inputFiles = {<span class=\"hljs-string\">\"input\/file1.pdf\"<\/span>, <span class=\"hljs-string\">\"input\/file2.pdf\"<\/span>, <span class=\"hljs-string\">\"input\/file3.pdf\"<\/span>};\n            PdfDocument&#91;] pdfDocuments = <span class=\"hljs-keyword\">new<\/span> PdfDocument&#91;inputFiles.length];\n            <span class=\"hljs-keyword\">for<\/span> (int i = <span class=\"hljs-number\">0<\/span>; i &lt; inputFiles.length; i++) {\n                PdfReader reader = <span class=\"hljs-keyword\">new<\/span> PdfReader(inputFiles&#91;i]);\n                pdfDocuments&#91;i] = <span class=\"hljs-keyword\">new<\/span> PdfDocument(reader);\n            }\n\n            <span class=\"hljs-comment\">\/\/ Seiten der Eingabedokumente in das Ausgabedokument kopieren<\/span>\n            PdfMerger merger = <span class=\"hljs-keyword\">new<\/span> PdfMerger(pdfDoc);\n            <span class=\"hljs-keyword\">for<\/span> (PdfDocument pdfDocument : pdfDocuments) {\n                merger.merge(pdfDocument, <span class=\"hljs-number\">1<\/span>, pdfDocument.getNumberOfPages());\n                pdfDocument.close();\n            }\n\n            <span class=\"hljs-comment\">\/\/ Ausgabedokument schlie\u00dfen<\/span>\n            pdfDoc.close();\n\n            System.out.println(<span class=\"hljs-string\">\"PDF-Dateien erfolgreich zusammengef\u00fchrt!\"<\/span>);\n        } <span class=\"hljs-keyword\">catch<\/span> (Exception e) {\n            e.printStackTrace();\n        }\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Erweiterte Funktionen<\/h2>\n\n\n\n<p>Neben dem einfachen Zusammenf\u00fcgen von PDF-Dateien bietet iText auch viele erweiterte Funktionen, die in bestimmten Szenarien n\u00fctzlich sein k\u00f6nnen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Seitenbereich kopieren<\/h3>\n\n\n\n<p>Statt alle Seiten eines Dokuments zu kopieren, k\u00f6nnen Sie auch nur einen bestimmten Seitenbereich angeben. Zum Beispiel, um nur die ersten drei Seiten zu kopieren:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">merger<\/span><span class=\"hljs-selector-class\">.merge<\/span>(<span class=\"hljs-selector-tag\">pdfDocument<\/span>, 1, 3);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Seiten drehen und skalieren<\/h3>\n\n\n\n<p>Sie k\u00f6nnen Seiten auch drehen und skalieren, w\u00e4hrend Sie sie in das Ausgabedokument einf\u00fcgen. Dies kann durch die Verwendung von <code>PdfPage<\/code>-Methoden erreicht werden.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">PdfPage page = pdfDocument.getPage(<span class=\"hljs-number\">1<\/span>);\npage.setRotation(<span class=\"hljs-number\">90<\/span>);\npage.setCropBox(<span class=\"hljs-keyword\">new<\/span> Rectangle(<span class=\"hljs-number\">100<\/span>, <span class=\"hljs-number\">100<\/span>, <span class=\"hljs-number\">400<\/span>, <span class=\"hljs-number\">400<\/span>));\npdfDoc.addPage(page);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Metadaten und Lesezeichen beibehalten<\/h3>\n\n\n\n<p>Wenn Sie Metadaten und Lesezeichen von den Eingabedokumenten in das Ausgabedokument \u00fcbernehmen m\u00f6chten, m\u00fcssen Sie diese explizit kopieren. Hier ist ein einfaches Beispiel, wie Sie die Dokumentinformationen kopieren:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">pdfDoc<\/span><span class=\"hljs-selector-class\">.getDocumentInfo<\/span>()<span class=\"hljs-selector-class\">.setMoreInfo<\/span>(<span class=\"hljs-selector-tag\">pdfDocuments<\/span><span class=\"hljs-selector-attr\">&#91;0]<\/span><span class=\"hljs-selector-class\">.getDocumentInfo<\/span>()<span class=\"hljs-selector-class\">.getMoreInfo<\/span>());<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Fazit<\/h2>\n\n\n\n<p>Das Zusammenf\u00fcgen mehrerer PDF-Dateien ist eine h\u00e4ufige Anforderung, die mit iText einfach und effizient umgesetzt werden kann. Durch die Verwendung von iText k\u00f6nnen Entwickler nicht nur PDF-Dateien zusammenf\u00fchren, sondern auch zahlreiche andere PDF-bezogene Aufgaben ausf\u00fchren, wie das Bearbeiten, Erstellen und Analysieren von PDF-Dokumenten. Diese Anleitung hat die grundlegenden Schritte zur Verwendung von iText zum Zusammenf\u00fcgen von PDF-Dateien vorgestellt. Mit iText und ein wenig Java-Kenntnissen k\u00f6nnen Sie Ihre PDF-Verwaltungsaufgaben automatisieren und vereinfachen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In der heutigen digitalen Welt ist das Verwalten von PDF-Dokumenten eine grundlegende Aufgabe, die in vielen Bereichen erforderlich ist. Ob im B\u00fcroalltag, in der Schule oder bei privaten Projekten \u2013 oft m\u00fcssen mehrere PDF-Dokumente zu einem einzigen Dokument zusammengef\u00fchrt werden. Eine der leistungsf\u00e4higsten und flexibelsten Bibliotheken zur Manipulation von PDF-Dateien in Java ist iText. Dieser [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-344","post","type-post","status-publish","format-standard","hentry","category-plain_java"],"_links":{"self":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/344","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=344"}],"version-history":[{"count":1,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/344\/revisions"}],"predecessor-version":[{"id":345,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/344\/revisions\/345"}],"wp:attachment":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=344"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=344"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=344"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}