<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>python pdf reader example on File Format Blog</title>
    <link>https://blog.fileformat.com/de/tag/python-pdf-reader-example/</link>
    <description>Recent content in python pdf reader example on File Format Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>de</language>
    <lastBuildDate>Wed, 29 Jan 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.fileformat.com/de/tag/python-pdf-reader-example/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Arbeiten mit PDF-Dateien in Python</title>
      <link>https://blog.fileformat.com/de/programming/working-with-pdf-files-in-python/</link>
      <pubDate>Wed, 29 Jan 2025 00:00:00 +0000</pubDate>
      
      <guid>https://blog.fileformat.com/de/programming/working-with-pdf-files-in-python/</guid>
      <description>Erfahren Sie, wie Sie Text aus einer PDF-Datei mit Python extrahieren, PDF-Seiten drehen, mehrere PDFs zusammenführen, PDFs teilen und Wasserzeichen zu Ihren PDFs hinzufügen können, indem Sie Python-Bibliotheken und einfache Codebeispiele verwenden.</description>
      <content:encoded><![CDATA[<p><strong>Zuletzt aktualisiert</strong>: 29 Jan, 2025</p>
<figure class="align-center ">
    <img loading="lazy" src="images/working-with-pdf-files-in-python.png#center"
         alt="Titel - Arbeiten mit PDF-Dateien in Python"/> 
</figure>

<p>In diesem Artikel führen wir Sie durch das <strong>Arbeiten mit PDF-Dateien mithilfe von Python</strong>. Wir verwenden hierfür die <a href="https://pypi.org/project/pypdf/"><strong>pypdf</strong></a> Bibliothek.</p>
<p>Mit der <strong>pypdf</strong>-Bibliothek zeigen wir, wie man die folgenden Operationen in Python durchführt:</p>
<ul>
<li>Extrahieren von Text aus PDFs</li>
<li>Drehen von PDF-Seiten</li>
<li>Zusammenführen mehrerer PDFs</li>
<li>Teilen von PDFs in separate Dateien</li>
<li>Hinzufügen von Wasserzeichen zu PDF-Seiten</li>
</ul>
<p><em><strong>Hinweis</strong>: Dieser Artikel enthält viele wertvolle Informationen, daher können Sie jederzeit direkt zu den für Sie interessantesten Abschnitten springen! Der Inhalt ist so strukturiert, dass er eine einfache Navigation ermöglicht, sodass Sie sich schnell auf das für Sie Relevanteste konzentrieren können.</em></p>
<figure class="align-center ">
    <img loading="lazy" src="images/pdf-manipulation-with-pypdf.webp#center"
         alt="Illustration - Arbeiten mit PDF-Dateien in Python"/> 
</figure>

<h2 id="beispielcodes">Beispielcodes</h2>
<p>Sie können alle im Artikel verwendeten Beispielcodes unter folgendem Link herunterladen. Es beinhaltet den Code, Eingabedateien und Ausgabedateien.</p>
<ul>
<li><a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python">Code-Beispiele und Eingabedateien für die Arbeit mit PDF-Dateien in Python</a></li>
</ul>
<h2 id="pypdf-installieren">pypdf installieren</h2>
<p>Um pypdf zu installieren, führen Sie einfach den folgenden Befehl in Ihrem Terminal oder in der Kommandozeile aus:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>pip install pypdf
</span></span></code></pre></div><p><strong>Hinweis:</strong> Der obige Befehl ist case-sensitive.</p>
<h2 id="1-text-aus-einer-pdf-datei-mit-python-extrahieren">1. Text aus einer PDF-Datei mit Python extrahieren</h2>
<script type="application/javascript" src="https://gist.github.com/fileformat-blog-gists/e2b43a49dbad9e89745f8f9777817acb.js?file=extract-text-from-pdf-using-pypdf-in-python.py"></script>

<h3 id="codeerklärung"><strong>Codeerklärung</strong></h3>
<p><strong>1. Erstellen eines PDF-Lesers</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>reader <span style="color:#f92672">=</span> PdfReader(pdf_file)
</span></span></code></pre></div><ul>
<li><code>PdfReader(pdf_file)</code> lädt die PDF-Datei in ein <strong>Leserobjekt</strong>.</li>
<li>Dieses Objekt ermöglicht den Zugriff auf die Seiten und deren Inhalte.</li>
</ul>
<p><strong>2. Durchlaufen der Seiten</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#66d9ef">for</span> page_number, page <span style="color:#f92672">in</span> enumerate(reader<span style="color:#f92672">.</span>pages, start<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>):
</span></span></code></pre></div><ul>
<li><code>reader.pages</code> gibt eine Liste der Seiten im PDF zurück.</li>
<li><code>enumerate(..., start=1)</code> weist eine <strong>Seitennummer ab 1</strong> zu.</li>
</ul>
<p><strong>3. Ausdruck des extrahierten Textes</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>    print(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;Seite </span><span style="color:#e6db74">{</span>page_number<span style="color:#e6db74">}</span><span style="color:#e6db74">:&#34;</span>)
</span></span><span style="display:flex;"><span>    print(page<span style="color:#f92672">.</span>extract_text())
</span></span><span style="display:flex;"><span>    print(<span style="color:#e6db74">&#34;-&#34;</span> <span style="color:#f92672">*</span> <span style="color:#ae81ff">50</span>)  <span style="color:#75715e"># Separator für bessere Lesbarkeit</span>
</span></span></code></pre></div><ul>
<li><code>page.extract_text()</code> extrahiert den Textinhalt der aktuellen Seite.</li>
<li>Das Skript druckt den extrahierten Text zusammen mit der <strong>Seitennummer</strong> aus.</li>
<li><code>&quot;-&quot; * 50</code> druckt eine Trennlinie (<code>--------------------------------------------------</code>) für bessere Lesbarkeit.</li>
</ul>
<h3 id="eingabepdf-datei-die-im-code-verwendet-wird">Eingabepdf-Datei, die im Code verwendet wird</h3>
<ul>
<li><strong>Eingabedatei:</strong> <a href="https://github.com/fileformat-blog-gists/code/blob/main/working-with-pdf-files-in-python/pdf-to-extract-text/">Download-Link</a></li>
</ul>
<h3 id="ausgabe-des-codes">Ausgabe des Codes</h3>
<script type="application/javascript" src="https://gist.github.com/fileformat-blog-gists/ab6976aa3a0fc2999093f5f9320a9e20.js?file=Ausgabe%20-%20extract-text-from-pdf-using-pypdf-in-python.txt"></script>

<h2 id="2-pdf-seiten-mit-python-drehen">2. PDF-Seiten mit Python drehen</h2>
<script type="application/javascript" src="https://gist.github.com/fileformat-blog-gists/760d480cfede4178296c353d60662e1a.js?file=rotate-pdf-page-using-pypdf-in-python.py"></script>

<h3 id="code-erklärung">Code-Erklärung</h3>
<p>Der Code dreht im Wesentlichen die <strong>erste Seite</strong> um <strong>90° im Uhrzeigersinn</strong> und speichert das modifizierte PDF, ohne andere Seiten zu beeinflussen.</p>
<p><strong>1. Import der benötigten Klassen</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">from</span> pypdf <span style="color:#f92672">import</span> PdfReader, PdfWriter
</span></span></code></pre></div><ul>
<li><code>PdfReader</code>: Liest das Eingabepdf.</li>
<li><code>PdfWriter</code>: Erstellt ein neues PDF mit den Modifikationen.</li>
</ul>
<p><strong>2. Eingangs- und Ausgangsdateipfade definieren</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>input_pdf <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;pdf-to-rotate/input.pdf&#34;</span>
</span></span><span style="display:flex;"><span>output_pdf <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;pdf-to-rotate/rotated_output.pdf&#34;</span>
</span></span></code></pre></div><ul>
<li>Das Skript liest aus <code>input.pdf</code> und speichert die modifizierte Datei als <code>rotated_output.pdf</code>.</li>
</ul>
<p><strong>3. Lesen der PDF und Erstellen eines Writer-Objekts</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>reader <span style="color:#f92672">=</span> PdfReader(input_pdf)
</span></span><span style="display:flex;"><span>writer <span style="color:#f92672">=</span> PdfWriter()
</span></span></code></pre></div><ul>
<li><code>reader</code> lädt die bestehende PDF.</li>
<li><code>writer</code> wird verwendet, um die modifizierten Seiten zu speichern.</li>
</ul>
<p><strong>4. Erste Seite um 90 Grad drehen</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>page <span style="color:#f92672">=</span> reader<span style="color:#f92672">.</span>pages[<span style="color:#ae81ff">0</span>]
</span></span><span style="display:flex;"><span>page<span style="color:#f92672">.</span>rotate(<span style="color:#ae81ff">90</span>)  <span style="color:#75715e"># 90 Grad im Uhrzeigersinn drehen</span>
</span></span><span style="display:flex;"><span>writer<span style="color:#f92672">.</span>add_page(page)
</span></span></code></pre></div><ul>
<li>Extrahiert <strong>Seite 1</strong>, dreht sie um <strong>90 Grad</strong> und fügt sie dem neuen PDF hinzu.</li>
</ul>
<p><strong>5. Hinzufügen der restlichen Seiten unverändert</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#66d9ef">for</span> i <span style="color:#f92672">in</span> range(<span style="color:#ae81ff">1</span>, len(reader<span style="color:#f92672">.</span>pages)):
</span></span><span style="display:flex;"><span>    writer<span style="color:#f92672">.</span>add_page(reader<span style="color:#f92672">.</span>pages[i])
</span></span></code></pre></div><ul>
<li>Durchläuft die restlichen Seiten und fügt sie unverändert hinzu.</li>
</ul>
<p><strong>6. Neues PDF speichern</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#66d9ef">with</span> open(output_pdf, <span style="color:#e6db74">&#34;wb&#34;</span>) <span style="color:#66d9ef">as</span> file:
</span></span><span style="display:flex;"><span>    writer<span style="color:#f92672">.</span>write(file)
</span></span></code></pre></div><ul>
<li>Öffnet <code>rotated_output.pdf</code> im schreib-binären Modus und speichert das neue PDF.</li>
</ul>
<p><strong>7. Erfolgsnachricht drucken</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>print(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;Rotierte Seite gespeichert in </span><span style="color:#e6db74">{</span>output_pdf<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>)
</span></span></code></pre></div><ul>
<li>Zeigt eine Erfolgsnachricht an.</li>
</ul>
<h3 id="eingangs-pdf-verwendet-im-code-und-seine-gedrehte-ausgabe">Eingangs-PDF verwendet im Code und seine gedrehte Ausgabe</h3>
<ul>
<li><strong>Eingabepdf-Datei:</strong> <a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python/pdf-to-rotate/">Download-Link</a></li>
<li><strong>Ausgabedatei des gedrehten PDFs:</strong> <a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python/pdf-to-rotate/rotated_output.pdf">Download-Link</a></li>
</ul>
<p><strong>Screenshot</strong>
<img loading="lazy" src="https://raw.githubusercontent.com/fileformat-blog-gists/content/main/working-with-pdf-files-in-python/rotated-pdf.png" alt="Screenshot der gedrehten Seite in PDF mit Python"  />
</p>
<h2 id="3-zusammenführen-von-pdf-dateien-mit-python">3. Zusammenführen von PDF-Dateien mit Python</h2>
<p>Dieses Python-Skript zeigt, wie man <strong>mehrere PDF-Dateien</strong> aus einem Verzeichnis zu einem einzigen PDF mithilfe der <strong>PyPDF</strong>-Bibliothek zusammenführt.</p>
<script type="application/javascript" src="https://gist.github.com/fileformat-blog-gists/a1a571783e0f5e699678d1094bf1afa5.js?file=merge_pdf_files_using_pypdf_in_python.py"></script>

<h3 id="code-erklärung-1">Code-Erklärung</h3>
<ul>
<li>Dieses Skript führt automatisch alle PDF-Dateien im angegebenen Verzeichnis (<code>pdfs-to-merge</code>) zu einer einzigen Ausgabedatei (<code>merged_output.pdf</code>) zusammen.</li>
<li>Es stellt sicher, dass das Ausgabeverzeichnis vorhanden ist, und fügt die Seiten jeder PDF in der Reihenfolge hinzu, in der sie aufgelistet sind.</li>
<li>Sie gibt die endgültige zusammengeführte Datei im Unterverzeichnis <code>output-dir</code> aus.</li>
</ul>
<p><strong>Code-Zusammenfassung</strong></p>
<p><strong>1. Bibliotheken importieren</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">import</span> os
</span></span><span style="display:flex;"><span><span style="color:#f92672">from</span> pypdf <span style="color:#f92672">import</span> PdfReader, PdfWriter
</span></span></code></pre></div><ul>
<li><code>os</code>: Wird verwendet, um mit dem Dateisystem zu interagieren, wie das Lesen von Verzeichnissen und das Verwenden von Datei-Pfaden.</li>
<li><code>PdfReader</code>: Liest den Inhalt einer PDF-Datei.</li>
<li><code>PdfWriter</code>: Erstellt und schreibt eine neue PDF-Datei.</li>
</ul>
<p><strong>2. Verzeichnis und Ausgabedatei definieren</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>directory <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;pdfs-to-merge&#34;</span>
</span></span><span style="display:flex;"><span>output_file <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;output-dir/merged_output.pdf&#34;</span>
</span></span></code></pre></div><ul>
<li><code>directory</code>: Gibt den Ordner an, in dem die PDF-Dateien gespeichert sind.</li>
<li><code>output_file</code>: Definiert den Ausgabepfad und den Namen des zusammengeführten PDFs.</li>
</ul>
<p><strong>3. Erstellen Sie das Ausgabeverzeichnis, falls es nicht existiert</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>os<span style="color:#f92672">.</span>makedirs(os<span style="color:#f92672">.</span>path<span style="color:#f92672">.</span>join(directory, <span style="color:#e6db74">&#34;output-dir&#34;</span>), exist_ok<span style="color:#f92672">=</span><span style="color:#66d9ef">True</span>)
</span></span></code></pre></div><ul>
<li>Dies stellt sicher, dass das <strong>Ausgabeverzeichnis</strong> existiert, und falls nicht, wird es erstellt.</li>
</ul>
<p><strong>4. Erstellen eines PdfWriter-Objekts</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>writer <span style="color:#f92672">=</span> PdfWriter()
</span></span></code></pre></div><ul>
<li><code>writer</code> wird verwendet, um alle Seiten der PDFs zu sammeln und zu kombinieren.</li>
</ul>
<p><strong>5. Iterieren über alle PDF-Dateien im Verzeichnis</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#66d9ef">for</span> file_name <span style="color:#f92672">in</span> sorted(os<span style="color:#f92672">.</span>listdir(directory)):
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span> file_name<span style="color:#f92672">.</span>endswith(<span style="color:#e6db74">&#34;.pdf&#34;</span>):
</span></span><span style="display:flex;"><span>        file_path <span style="color:#f92672">=</span> os<span style="color:#f92672">.</span>path<span style="color:#f92672">.</span>join(directory, file_name)
</span></span><span style="display:flex;"><span>        print(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;Angehängt: </span><span style="color:#e6db74">{</span>file_name<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>)
</span></span></code></pre></div><ul>
<li>Diese Schleife geht durch alle Dateien im angegebenen Verzeichnis, sucht nach Dateien mit der <code>.pdf</code>-Erweiterung. Sie verwendet <code>sorted()</code>, um diese in alphabetischer Reihenfolge zu verarbeiten.</li>
</ul>
<p><strong>6. Lesen und Anhängen jeder PDF-Seite in den Writer</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>reader <span style="color:#f92672">=</span> PdfReader(file_path)
</span></span><span style="display:flex;"><span>writer<span style="color:#f92672">.</span>append(reader)
</span></span></code></pre></div><ul>
<li>Für jede PDF liest <code>PdfReader</code> die Datei und dann werden alle Seiten dieser PDF an <code>writer</code> angehängt.</li>
</ul>
<p><strong>7. Schreiben des zusammengefügten PDFs an eine Ausgabedatei</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>output_path <span style="color:#f92672">=</span> os<span style="color:#f92672">.</span>path<span style="color:#f92672">.</span>join(directory, output_file)
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">with</span> open(output_path, <span style="color:#e6db74">&#34;wb&#34;</span>) <span style="color:#66d9ef">as</span> output_pdf:
</span></span><span style="display:flex;"><span>    writer<span style="color:#f92672">.</span>write(output_pdf)
</span></span></code></pre></div><ul>
<li>Nachdem alle Seiten gesammelt wurden, schreibt <code>writer.write()</code> das zusammengeführte PDF an den angegebenen Ausgabepfad.</li>
</ul>
<p><strong>8. Erfolgsnachricht drucken</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>print(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;Zusammengeführtes PDF gespeichert als: </span><span style="color:#e6db74">{</span>output_path<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>)
</span></span></code></pre></div><ul>
<li>Eine Erfolgsnachricht, die den Speicherort des gespeicherten zusammengeführten PDFs bestätigt, wird gedruckt.</li>
</ul>
<h3 id="eingabepdf-dateien-die-im-code-und-der-zusammengeführten-pdf-ausgabe-verwendet-werden">Eingabepdf-Dateien, die im Code und der zusammengeführten PDF-Ausgabe verwendet werden</h3>
<ul>
<li><strong>Eingabepdf-Dateien:</strong> <a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python/pdfs-to-merge">Download-Link</a></li>
<li><strong>Zusammengeführtes Ausgabepdf:</strong> <a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python/pdfs-to-merge/output-dir">Download-Link</a></li>
</ul>
<h2 id="4-aufteilen-einer-pdf-mit-python">4. Aufteilen einer PDF mit Python</h2>
<script type="application/javascript" src="https://gist.github.com/fileformat-blog-gists/0dee64422ac0dcf44cf027d90567bbf8.js?file=split-pdf-using-pypdf-in-python.py"></script>

<h3 id="code-erklärung-2">Code-Erklärung</h3>
<p>Das obige Python-Skript teilt eine PDF in einzelne Seiten mit der <strong>PyPDF</strong>-Bibliothek auf. Es stellt zuerst sicher, dass das Ausgabeverzeichnis existiert, dann liest es die Eingabepdf-Datei. Das Skript durchläuft jede Seite, erstellt ein neues <strong>PdfWriter</strong>-Objekt und speichert jede Seite als individuelle PDF-Datei. Die Ausgabedateien werden sequenziell benannt (z.B. <strong>page_1.pdf, page_2.pdf</strong>) und im <strong><code>output-dir</code></strong>-Ordner gespeichert. Schließlich druckt es eine Bestätigungsnachricht für jede erstellte Datei und benachrichtigt, wenn der Vorgang abgeschlossen ist.</p>
<h3 id="eingabepdf-und-aufgeteilte-ausgabedateien">Eingabepdf und aufgeteilte Ausgabedateien</h3>
<ul>
<li><strong>Eingabepdf-Datei:</strong> <a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python/pdf-to-split">Download-Link</a></li>
<li><strong>Aufgeteilte Ausgabedateien:</strong> <a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python/pdf-to-split/output-dir">Download-Link</a></li>
</ul>
<h2 id="5-hinzufügen-eines-wasserzeichens-zu-einem-pdf-mit-python">5. Hinzufügen eines Wasserzeichens zu einem PDF mit Python</h2>
<p>Sie können ein Wasserzeichen zu einem PDF mit der PyPDF-Bibliothek hinzufügen, indem Sie ein Wasserzeichen-PDF auf ein bestehendes PDF legen. Stellen Sie sicher, dass das Wasserzeichen-PDF nur eine Seite hat, damit es korrekt auf jede Seite des Haupt-PDFs angewendet wird.</p>
<script type="application/javascript" src="https://gist.github.com/fileformat-blog-gists/af057943580e2fcde6a635df34d7e39a.js?file=watermark-pdf-using-pypdf-in-python.py"></script>

<h3 id="code-erklärung-3">Code-Erklärung</h3>
<p>Das obige Python-Skript liest eine Eingabepdf, extrahiert ein einseitiges Wasserzeichen-PDF, legt das Wasserzeichen auf jede Seite der Eingabepdf und speichert das finale wasserzeichenbeladene PDF.</p>
<p><strong>Code-Zusammenfassung</strong></p>
<p>Hier ist eine kurze Erklärung zu jedem Teil</p>
<p><strong>1. Erforderliche Klassen importieren</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">from</span> pypdf <span style="color:#f92672">import</span> PdfReader, PdfWriter
</span></span></code></pre></div><ul>
<li><strong><code>PdfReader</code></strong> wird verwendet, um bestehende PDFs zu lesen.</li>
<li><strong><code>PdfWriter</code></strong> wird verwendet, um ein neues PDF zu erstellen und zu schreiben.</li>
</ul>
<p><strong>2. Datei-Pfade definieren</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>input_pdf <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;pdf-to-watermark/input.pdf&#34;</span>
</span></span><span style="display:flex;"><span>watermark_pdf <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;pdf-to-watermark/watermark.pdf&#34;</span>
</span></span><span style="display:flex;"><span>output_pdf <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;pdf-to-watermark/output_with_watermark.pdf&#34;</span>
</span></span></code></pre></div><ul>
<li><code>input_pdf</code>: Das Original-PDF, dem das Wasserzeichen hinzugefügt wird.</li>
<li><code>watermark_pdf</code>: Ein separates <strong>einseitiges</strong> PDF, das als Wasserzeichen dient.</li>
<li><code>output_pdf</code>: Die Ausgabedatei, die die wasserzeichenbeladenen Seiten enthalten wird.</li>
</ul>
<p><strong>3. PDFs lesen</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>reader <span style="color:#f92672">=</span> PdfReader(input_pdf)
</span></span><span style="display:flex;"><span>watermark <span style="color:#f92672">=</span> PdfReader(watermark_pdf)
</span></span></code></pre></div><ul>
<li><code>reader</code>: Liest die Eingabepdf.</li>
<li><code>watermark</code>: Liest die Wasserzeichen-PDF.</li>
</ul>
<p><strong>4. Erstellen eines Writer-Objekts</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>writer <span style="color:#f92672">=</span> PdfWriter()
</span></span></code></pre></div><ul>
<li>Dies wird verwendet, um das finale wasserzeichenbeladene PDF zu erstellen.</li>
</ul>
<p><strong>5. Wasserzeichenseite extrahieren</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>watermark_page <span style="color:#f92672">=</span> watermark<span style="color:#f92672">.</span>pages[<span style="color:#ae81ff">0</span>]
</span></span></code></pre></div><ul>
<li>Geht davon aus, dass die Wasserzeichen-PDF nur <strong>eine Seite</strong> hat, die auf alle Seiten gelegt wird.</li>
</ul>
<p><strong>6. Iterieren über Eingabepdf-Seiten &amp; Überlagern des Wasserzeichens</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#66d9ef">for</span> page <span style="color:#f92672">in</span> reader<span style="color:#f92672">.</span>pages:
</span></span><span style="display:flex;"><span>    <span style="color:#75715e"># Mischen das Wasserzeichen mit der aktuellen Seite</span>
</span></span><span style="display:flex;"><span>    page<span style="color:#f92672">.</span>merge_page(watermark_page)
</span></span><span style="display:flex;"><span>    
</span></span><span style="display:flex;"><span>    <span style="color:#75715e"># Hinzufügen der gemischten Seite zum Writer</span>
</span></span><span style="display:flex;"><span>    writer<span style="color:#f92672">.</span>add_page(page)
</span></span></code></pre></div><ul>
<li>Durchläuft jede Seite von <code>input_pdf</code>.</li>
<li><strong><code>merge_page(watermark_page)</code></strong> überlagert das Wasserzeichen über die aktuelle Seite.</li>
<li>Fügt die modifizierte Seite dem <code>writer</code> hinzu.</li>
</ul>
<p><strong>7. Wasserzeichenbefrachtetes PDF speichern</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#66d9ef">with</span> open(output_pdf, <span style="color:#e6db74">&#34;wb&#34;</span>) <span style="color:#66d9ef">as</span> output_file:
</span></span><span style="display:flex;"><span>    writer<span style="color:#f92672">.</span>write(output_file)
</span></span></code></pre></div><ul>
<li>Schreibt die modifizierten Seiten in eine neue PDF-Datei.</li>
</ul>
<p><strong>8. Bestätigungsnachricht drucken</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>print(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;Wasserzeichen PDF gespeichert als: </span><span style="color:#e6db74">{</span>output_pdf<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>)
</span></span></code></pre></div><ul>
<li>Druckt den Ausgabepfad zur Bestätigung.</li>
</ul>
<h3 id="eingabepdf-wasserzeichen-pdf-und-ausgabepdf-mit-wasserzeichen">Eingabepdf, Wasserzeichen-PDF und Ausgabepdf mit Wasserzeichen</h3>
<ul>
<li><strong>Eingabepdf-Datei:</strong> <a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python/pdf-to-watermark">Download-Link</a></li>
<li><strong>Wasserzeichen-PDF-Datei:</strong> <a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python/pdf-to-watermark">Download-Link</a></li>
<li><strong>Ausgabepdf-Datei mit Wasserzeichen:</strong> <a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python/pdf-to-watermark">Download-Link</a></li>
</ul>
<p><strong>Screenshot</strong>
<img loading="lazy" src="https://raw.githubusercontent.com/fileformat-blog-gists/content/main/working-with-pdf-files-in-python/watermark-pdf.png" alt="Screenshot der wasserzeichenbeladenen PDF mit Python"  />
</p>
<h2 id="fazit">Fazit</h2>
<p>In diesem Leitfaden haben wir grundlegende PDF-Operationen in Python untersucht, einschließlich des Extrahierens von Text, des Drehens von Seiten, des Zusammenführens, Aufteilens und Hinzufügens von Wasserzeichen. Mit diesen Fähigkeiten können Sie nun Ihren eigenen PDF-Manager erstellen und verschiedene PDF-Aufgaben effizient automatisieren.</p>
]]></content:encoded>
    </item>
    
  </channel>
</rss>
