<?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/it/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>it</language>
    <lastBuildDate>Wed, 29 Jan 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.fileformat.com/it/tag/python-pdf-reader-example/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Lavorare con file PDF in Python</title>
      <link>https://blog.fileformat.com/it/programming/working-with-pdf-files-in-python/</link>
      <pubDate>Wed, 29 Jan 2025 00:00:00 +0000</pubDate>
      
      <guid>https://blog.fileformat.com/it/programming/working-with-pdf-files-in-python/</guid>
      <description>Impara come estrarre testo da un PDF in Python, ruotare pagine PDF, unire più PDF, dividere PDF e aggiungere filigrane ai tuoi PDF utilizzando librerie Python ed esempi di codice semplici.</description>
      <content:encoded><![CDATA[<p><strong>Ultimo aggiornamento</strong>: 29 Gen, 2025</p>
<figure class="align-center ">
    <img loading="lazy" src="images/working-with-pdf-files-in-python.png#center"
         alt="Titolo - Lavorare con file PDF in Python"/> 
</figure>

<p>In questo articolo, ti guideremo su <strong>come lavorare con file PDF usando Python</strong>. Per questo utilizzeremo la libreria <a href="https://pypi.org/project/pypdf/"><strong>pypdf</strong></a>.</p>
<p>Utilizzando la libreria <strong>pypdf</strong>, dimostreremo come eseguire le seguenti operazioni in Python:</p>
<ul>
<li>Estrarre testo dai PDF</li>
<li>Ruotare le pagine dei PDF</li>
<li>Unire più PDF</li>
<li>Dividere i PDF in file separati</li>
<li>Aggiungere filigrane alle pagine dei PDF</li>
</ul>
<p><em><strong>Nota</strong>: Questo articolo copre molti dettagli preziosi, quindi sentiti libero di saltare alle sezioni che più ti interessano! Il contenuto è organizzato per una facile navigazione, così puoi rapidamente concentrarti su ciò che è più rilevante per te.</em></p>
<figure class="align-center ">
    <img loading="lazy" src="images/pdf-manipulation-with-pypdf.webp#center"
         alt="Illustrazione - Lavorare con file PDF in Python"/> 
</figure>

<h2 id="codici-di-esempio">Codici di esempio</h2>
<p>Puoi scaricare tutto il codice di esempio utilizzato in questo articolo dal seguente link. Include il codice, i file di input e i file di output.</p>
<ul>
<li><a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python">Esempi di codice e file di input per lavorare con file PDF in Python</a></li>
</ul>
<h2 id="installare-pypdf">Installare pypdf</h2>
<p>Per installare pypdf, basta eseguire il seguente comando nel terminale o prompt dei comandi:</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>Nota:</strong> Il comando sopra è sensibile al maiuscolo/minuscolo.</p>
<h2 id="1-estrarre-testo-da-un-file-pdf-usando-python">1. Estrarre testo da un file PDF usando Python</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="spiegazione-del-codice"><strong>Spiegazione del codice</strong></h3>
<p><strong>1. Creazione di un oggetto Lettore PDF</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> carica il file PDF in un <strong>oggetto lettore</strong>.</li>
<li>Questo oggetto permette l&rsquo;accesso alle pagine e al loro contenuto.</li>
</ul>
<p><strong>2. Scorrere le pagine</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> restituisce un elenco di pagine nel PDF.</li>
<li><code>enumerate(..., start=1)</code> assegna un <strong>numero di pagina partendo da 1</strong>.</li>
</ul>
<p><strong>3. Stampa del testo estratto</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;Pagina </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"># Separatore per la leggibilità</span>
</span></span></code></pre></div><ul>
<li><code>page.extract_text()</code> estrae il contenuto di testo dalla pagina corrente.</li>
<li>Lo script stampa il testo estratto insieme al <strong>numero di pagina</strong>.</li>
<li><code>&quot;-&quot; * 50</code> stampa una linea separatrice (<code>--------------------------------------------------</code>) per una migliore leggibilità.</li>
</ul>
<h3 id="file-pdf-di-input-utilizzato-nel-codice">File PDF di input utilizzato nel codice</h3>
<ul>
<li><strong>File di input:</strong> <a href="https://github.com/fileformat-blog-gists/code/blob/main/working-with-pdf-files-in-python/pdf-to-extract-text/">Link per il download</a></li>
</ul>
<h3 id="output-del-codice">Output del codice</h3>
<script type="application/javascript" src="https://gist.github.com/fileformat-blog-gists/ab6976aa3a0fc2999093f5f9320a9e20.js?file=Output%20-%20extract-text-from-pdf-using-pypdf-in-python.txt"></script>

<h2 id="2-ruotare-le-pagine-di-un-pdf-usando-python">2. Ruotare le pagine di un PDF usando Python</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="spiegazione-del-codice-1">Spiegazione del codice</h3>
<p>Il codice ruota essenzialmente la <strong>prima pagina</strong> di <strong>90° in senso orario</strong> e salva il PDF modificato senza alterare le altre pagine.</p>
<p><strong>1. Importare le classi richieste</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>: Legge il PDF di input.</li>
<li><code>PdfWriter</code>: Crea un nuovo PDF con le modifiche.</li>
</ul>
<p><strong>2. Definire i percorsi dei file di input e output</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>Lo script legge da <code>input.pdf</code> e salva il file modificato come <code>rotated_output.pdf</code>.</li>
</ul>
<p><strong>3. Leggere il PDF e creare un oggetto 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(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> carica il PDF esistente.</li>
<li><code>writer</code> è utilizzato per memorizzare le pagine modificate.</li>
</ul>
<p><strong>4. Ruotare la prima pagina di 90 gradi</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"># Ruota di 90 gradi in senso orario</span>
</span></span><span style="display:flex;"><span>writer<span style="color:#f92672">.</span>add_page(page)
</span></span></code></pre></div><ul>
<li>Estrae la <strong>pagina 1</strong>, la ruota di <strong>90 gradi</strong> e la aggiunge al nuovo PDF.</li>
</ul>
<p><strong>5. Aggiungere le rimanenti pagine senza modifiche</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>Scorre attraverso le restanti pagine e le aggiunge così come sono.</li>
</ul>
<p><strong>6. Salvare il nuovo PDF</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>Apre <code>rotated_output.pdf</code> in modalità scrittura binaria e salva il nuovo PDF.</li>
</ul>
<p><strong>7. Stampa di conferma</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;Pagina ruotata salvata 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>Visualizza un messaggio di successo.</li>
</ul>
<h3 id="file-pdf-di-input-utilizzato-nel-codice-e-relativo-output-ruotato">File PDF di input utilizzato nel codice e relativo output ruotato</h3>
<ul>
<li><strong>File PDF di input:</strong> <a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python/pdf-to-rotate/">Link per il download</a></li>
<li><strong>File PDF ruotato di output:</strong> <a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python/pdf-to-rotate/rotated_output.pdf">Link per il download</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 di pagina ruotata nel PDF usando Python"  />
</p>
<h2 id="3-unire-file-pdf-usando-python">3. Unire file PDF usando Python</h2>
<p>Questo script Python dimostra come <strong>unire più file PDF</strong> da una directory in un singolo PDF usando la libreria <strong>PyPDF</strong>.</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="spiegazione-del-codice-2">Spiegazione del codice</h3>
<ul>
<li>Questo script unisce automaticamente tutti i file PDF trovati nella directory specificata (<code>pdfs-to-merge</code>) in un unico file di output (<code>merged_output.pdf</code>).</li>
<li>Si assicura che la directory di output esista e aggiunge le pagine di ciascun PDF nell&rsquo;ordine in cui sono elencati.</li>
<li>Fornisce il file unito finale nella sottodirectory <code>output-dir</code>.</li>
</ul>
<p><strong>Descrizione del codice</strong></p>
<p><strong>1. Importare le librerie</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>: Utilizzato per interagire con il sistema di file, come la lettura delle directory e la gestione dei percorsi dei file.</li>
<li><code>PdfReader</code>: Legge il contenuto di un file PDF.</li>
<li><code>PdfWriter</code>: Crea e scrive un nuovo file PDF.</li>
</ul>
<p><strong>2. Definire la directory e il file di output</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>: Specifica la cartella dove sono memorizzati i file PDF.</li>
<li><code>output_file</code>: Definisce il percorso e il nome del file PDF unito di output.</li>
</ul>
<p><strong>3. Creare la directory di output se non esiste</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>Questo assicura che la <strong>directory di output</strong> esista, e se non esiste, la crea.</li>
</ul>
<p><strong>4. Creare un oggetto PdfWriter</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> è utilizzato per raccogliere e combinare tutte le pagine dai PDF.</li>
</ul>
<p><strong>5. Iterare su tutti i file PDF nella directory</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;Aggiungendo: </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>Questo ciclo va attraverso tutti i file nella directory specificata, controllando per i file con l&rsquo;estensione <code>.pdf</code>. Usa <code>sorted()</code> per elaborarli in ordine alfabetico.</li>
</ul>
<p><strong>6. Leggere ciascun PDF e aggiungere pagine al 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>Per ciascun PDF, <code>PdfReader</code> legge il file, e poi tutte le pagine di quel PDF sono aggiunte a <code>writer</code>.</li>
</ul>
<p><strong>7. Scrivere il PDF unito in un file di output</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>Dopo aver raccolto tutte le pagine, <code>writer.write()</code> scrive il PDF unito nel percorso specificato di output.</li>
</ul>
<p><strong>8. Stampa di conferma</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;PDF unito salvato come: </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>Stampa un messaggio di successo confermando la posizione del file PDF unito salvato.</li>
</ul>
<h3 id="file-pdf-di-input-utilizzati-nel-codice-e-pdf-unito-di-output">File PDF di input utilizzati nel codice e PDF unito di output</h3>
<ul>
<li><strong>File PDF di input:</strong> <a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python/pdfs-to-merge">Link per il download</a></li>
<li><strong>PDF unito di output:</strong> <a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python/pdfs-to-merge/output-dir">Link per il download</a></li>
</ul>
<h2 id="4-dividere-un-pdf-usando-python">4. Dividere un PDF usando 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="spiegazione-del-codice-3">Spiegazione del codice</h3>
<p>Lo script Python sopra divide un PDF in pagine separate utilizzando la libreria <strong>PyPDF</strong>. Prima si assicura che la directory di output esista, poi legge il file PDF di input. Lo script scorre attraverso ciascuna pagina, crea un nuovo oggetto <strong>PdfWriter</strong> e salva ciascuna pagina come un singolo file PDF. I file di output sono nominati in sequenza (es. <strong>page_1.pdf, page_2.pdf</strong>) e memorizzati nella cartella <strong><code>output-dir</code></strong>. Infine, stampa un messaggio di conferma per ciascun file creato e notifica quando il processo è completato.</p>
<h3 id="file-pdf-di-input-e-file-di-output-divisi">File PDF di input e file di output divisi</h3>
<ul>
<li><strong>File PDF di input:</strong> <a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python/pdf-to-split">Link per il download</a></li>
<li><strong>File di output divisi:</strong> <a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python/pdf-to-split/output-dir">Link per il download</a></li>
</ul>
<h2 id="5-aggiungere-una-filigrana-a-un-pdf-usando-python">5. Aggiungere una filigrana a un PDF usando Python</h2>
<p>Puoi aggiungere una filigrana a un PDF usando la libreria PyPDF sovrapponendo un PDF di filigrana a un PDF esistente. Assicurati che il PDF di filigrana abbia solo una pagina in modo che si applichi correttamente a ciascuna pagina del PDF principale.</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="spiegazione-del-codice-4">Spiegazione del codice</h3>
<p>Lo script Python sopra legge un PDF di input, estrae un PDF di filigrana di una pagina, sovrappone la filigrana su ciascuna pagina del PDF di input e salva il PDF filigranato finale.</p>
<p><strong>Descrizione del codice</strong></p>
<p>Ecco una breve spiegazione di ciascuna parte:</p>
<p><strong>1. Importare le classi richieste</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> è usato per leggere i PDF esistenti.</li>
<li><strong><code>PdfWriter</code></strong> è usato per creare e scrivere un nuovo PDF.</li>
</ul>
<p><strong>2. Definire i percorsi dei file</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>: Il PDF originale al quale sarà aggiunta la filigrana.</li>
<li><code>watermark_pdf</code>: Un PDF separato di <strong>una sola pagina</strong> che serve da filigrana.</li>
<li><code>output_pdf</code>: Il file di output che conterrà le pagine filigranate.</li>
</ul>
<p><strong>3. Leggere i PDF</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>: Legge il PDF di input.</li>
<li><code>watermark</code>: Legge il PDF di filigrana.</li>
</ul>
<p><strong>4. Creare un oggetto 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>writer <span style="color:#f92672">=</span> PdfWriter()
</span></span></code></pre></div><ul>
<li>Questo sarà usato per creare il PDF filigranato finale.</li>
</ul>
<p><strong>5. Estrarre la pagina della filigrana</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>Si presume che il PDF di filigrana abbia solo <strong>una pagina</strong>, che viene utilizzata per sovrapporsi su tutte le pagine.</li>
</ul>
<p><strong>6. Scorrere le pagine del PDF di input e unire la filigrana</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"># Unire la filigrana con la pagina corrente</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"># Aggiungere la pagina unita al 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>Itera attraverso ciascuna pagina di <code>input_pdf</code>.</li>
<li><strong><code>merge_page(watermark_page)</code></strong> sovrappone la filigrana sopra la pagina corrente.</li>
<li>Aggiunge la pagina modificata al <code>writer</code>.</li>
</ul>
<p><strong>7. Salvare il PDF filigranato</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>Scrive le pagine modificate in un nuovo file PDF.</li>
</ul>
<p><strong>8. Stampa di conferma</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;PDF filigranato salvato come: </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>Stampa il percorso del file di output per conferma.</li>
</ul>
<h3 id="file-pdf-di-input-pdf-di-filigrana-e-pdf-di-output-filigranato">File PDF di input, PDF di filigrana e PDF di output filigranato</h3>
<ul>
<li><strong>File PDF di input:</strong> <a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python/pdf-to-watermark">Link per il download</a></li>
<li><strong>File PDF di filigrana:</strong> <a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python/pdf-to-watermark">Link per il download</a></li>
<li><strong>File PDF di output filigranato:</strong> <a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python/pdf-to-watermark">Link per il download</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 del PDF filigranato usando Python"  />
</p>
<h2 id="conclusione">Conclusione</h2>
<p>In questa guida, abbiamo esplorato le operazioni essenziali sui PDF in Python, inclusa l&rsquo;estrazione di testo, la rotazione delle pagine, l&rsquo;unione, la divisione e l&rsquo;aggiunta di filigrane. Con queste competenze, ora puoi costruire il tuo gestore di file PDF e automatizzare vari compiti sui PDF in modo efficiente.</p>
]]></content:encoded>
    </item>
    
  </channel>
</rss>
