<?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 programming on File Format Blog</title>
    <link>https://blog.fileformat.com/es/tag/python-programming/</link>
    <description>Recent content in python programming on File Format Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>es</language>
    <lastBuildDate>Wed, 29 Jan 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.fileformat.com/es/tag/python-programming/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Trabajando con archivos PDF en Python</title>
      <link>https://blog.fileformat.com/es/programming/working-with-pdf-files-in-python/</link>
      <pubDate>Wed, 29 Jan 2025 00:00:00 +0000</pubDate>
      
      <guid>https://blog.fileformat.com/es/programming/working-with-pdf-files-in-python/</guid>
      <description>Aprenda a extraer texto de un PDF en Python, rotar páginas de PDF, fusionar múltiples PDFs, dividir PDFs y añadir marcas de agua a sus PDFs usando bibliotecas de Python y ejemplos de código simples.</description>
      <content:encoded><![CDATA[<p><strong>Última actualización</strong>: 29 de enero, 2025</p>
<figure class="align-center ">
    <img loading="lazy" src="images/working-with-pdf-files-in-python.png#center"
         alt="Título - Trabajando con archivos PDF en Python"/> 
</figure>

<p>En este artículo, le guiaremos sobre <strong>cómo trabajar con archivos PDF usando Python</strong>. Para esto, utilizaremos la biblioteca <a href="https://pypi.org/project/pypdf/"><strong>pypdf</strong></a>.</p>
<p>Usando la biblioteca <strong>pypdf</strong>, demostraremos cómo realizar las siguientes operaciones en Python:</p>
<ul>
<li>Extracción de texto de PDFs</li>
<li>Rotación de páginas de PDF</li>
<li>Fusión de múltiples PDFs</li>
<li>División de PDFs en archivos separados</li>
<li>Adición de marcas de agua a las páginas de PDF</li>
</ul>
<p><em><strong>Nota</strong>: Este artículo cubre muchos detalles valiosos, así que siéntase libre de saltar a las secciones que más le interesen. El contenido está organizado para una navegación fácil, para que pueda enfocarse rápidamente en lo más relevante para usted.</em></p>
<figure class="align-center ">
    <img loading="lazy" src="images/pdf-manipulation-with-pypdf.webp#center"
         alt="Ilustración - Trabajando con archivos PDF en Python"/> 
</figure>

<h2 id="códigos-de-ejemplo">Códigos de Ejemplo</h2>
<p>Puede descargar todo el código de ejemplo utilizado en este artículo desde el siguiente enlace. Incluye el código, los archivos de entrada y los archivos de salida.</p>
<ul>
<li><a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python">Ejemplos de Código y Archivos de Entrada para Trabajar con Archivos PDF en Python</a></li>
</ul>
<h2 id="instalación-de-pypdf">Instalación de pypdf</h2>
<p>Para instalar pypdf, simplemente ejecute el siguiente comando en su terminal o símbolo del sistema:</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> El comando anterior es sensible a mayúsculas y minúsculas.</p>
<h2 id="1-extrayendo-texto-de-un-archivo-pdf-usando-python">1. Extrayendo texto de un archivo 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="explicación-del-código"><strong>Explicación del Código</strong></h3>
<p><strong>1. Creando un Objeto Lector de 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> carga el archivo PDF en un <strong>objeto lector</strong>.</li>
<li>Este objeto permite acceder a las páginas y su contenido.</li>
</ul>
<p><strong>2. Recorriendo las Páginas</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> devuelve una lista de páginas en el PDF.</li>
<li><code>enumerate(..., start=1)</code> asigna un <strong>número de página comenzando desde 1</strong>.</li>
</ul>
<p><strong>3. Imprimiendo el Texto Extraído</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;Page </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"># Separador para mejor legibilidad</span>
</span></span></code></pre></div><ul>
<li><code>page.extract_text()</code> extrae el contenido de texto de la página actual.</li>
<li>El script imprime el texto extraído junto con el <strong>número de página</strong>.</li>
<li><code>&quot;-&quot; * 50</code> imprime una línea separadora (<code>--------------------------------------------------</code>) para una mejor legibilidad.</li>
</ul>
<h3 id="archivo-pdf-de-entrada-usado-en-el-código">Archivo PDF de Entrada Usado en el Código</h3>
<ul>
<li><strong>Archivo de Entrada:</strong> <a href="https://github.com/fileformat-blog-gists/code/blob/main/working-with-pdf-files-in-python/pdf-to-extract-text/">Enlace de Descarga</a></li>
</ul>
<h3 id="salida-del-código">Salida del Código</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-rotando-páginas-de-pdf-usando-python">2. Rotando Páginas de 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="explicación-del-código-1">Explicación del Código</h3>
<p>El código básicamente rota la <strong>primera página</strong> <strong>90° en sentido horario</strong> y guarda el PDF modificado sin afectar a otras páginas.</p>
<p><strong>1. Importar Clases Necesarias</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>: Lee el PDF de entrada.</li>
<li><code>PdfWriter</code>: Crea un nuevo PDF con modificaciones.</li>
</ul>
<p><strong>2. Definir Rutas de Archivos de Entrada y Salida</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>El script lee desde <code>input.pdf</code> y guarda el archivo modificado como <code>rotated_output.pdf</code>.</li>
</ul>
<p><strong>3. Leer el PDF y Crear un Objeto Escritor</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> carga el PDF existente.</li>
<li><code>writer</code> se usa para almacenar las páginas modificadas.</li>
</ul>
<p><strong>4. Rotar la Primera Página 90 Grados</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"># Rotar 90 grados en sentido horario</span>
</span></span><span style="display:flex;"><span>writer<span style="color:#f92672">.</span>add_page(page)
</span></span></code></pre></div><ul>
<li>Extrae la <strong>página 1</strong>, la rota <strong>90 grados</strong>, y la añade al nuevo PDF.</li>
</ul>
<p><strong>5. Añadir Páginas Restantes Sin Cambios</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>Recorre las páginas restantes y las añade tal como están.</li>
</ul>
<p><strong>6. Guardar el Nuevo 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>Abre <code>rotated_output.pdf</code> en modo de escritura binaria y guarda el nuevo PDF.</li>
</ul>
<p><strong>7. Imprimir Confirmación</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;Páginas rotadas guardadas en </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>Muestra un mensaje de éxito.</li>
</ul>
<h3 id="archivo-pdf-de-entrada-usado-en-el-código-y-su-salida-rotada">Archivo PDF de Entrada Usado en el Código y Su Salida Rotada</h3>
<ul>
<li><strong>Archivo PDF de Entrada:</strong> <a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python/pdf-to-rotate/">Enlace de Descarga</a></li>
<li><strong>Archivo PDF Salida Rotado:</strong> <a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python/pdf-to-rotate/rotated_output.pdf">Enlace de Descarga</a></li>
</ul>
<p><strong>Captura de Pantalla</strong>
<img loading="lazy" src="https://raw.githubusercontent.com/fileformat-blog-gists/content/main/working-with-pdf-files-in-python/rotated-pdf.png" alt="Captura de Pantalla de Página Rotada en PDF Usando Python"  />
</p>
<h2 id="3-fusionar-archivos-pdf-usando-python">3. Fusionar Archivos PDF usando Python</h2>
<p>Este script de Python demuestra cómo <strong>fusionar múltiples archivos PDF</strong> de un directorio en un solo PDF usando la biblioteca <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="explicación-del-código-2">Explicación del Código</h3>
<ul>
<li>Este script fusiona automáticamente todos los archivos PDF encontrados en el directorio especificado (<code>pdfs-to-merge</code>) en un solo archivo de salida (<code>merged_output.pdf</code>).</li>
<li>Asegura que el directorio de salida exista y añade las páginas de cada PDF en el orden en el que están listadas.</li>
<li>Produce el archivo final fusionado en el subdirectorio <code>output-dir</code>.</li>
</ul>
<p><strong>Desglose del Código</strong></p>
<p><strong>1. Importar Librerías</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>: Utilizado para interactuar con el sistema de archivos, como leer directorios y gestionar rutas de archivos.</li>
<li><code>PdfReader</code>: Lee el contenido de un archivo PDF.</li>
<li><code>PdfWriter</code>: Crea y escribe un nuevo archivo PDF.</li>
</ul>
<p><strong>2. Definir Directorio y Archivo de Salida</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>: Especifica la carpeta donde se almacenan los archivos PDF.</li>
<li><code>output_file</code>: Define el nombre y la ruta del archivo PDF fusionado.</li>
</ul>
<p><strong>3. Crear Directorio de Salida si No Existe</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>Esto asegura que el <strong>directorio de salida</strong> exista, y si no, lo crea.</li>
</ul>
<p><strong>4. Crear un Objeto 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> se usa para recolectar y combinar todas las páginas de los PDFs.</li>
</ul>
<p><strong>5. Iterar Sobre Todos los Archivos PDF en el Directorio</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;Añadiendo: </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>Este bucle recorre todos los archivos en el directorio especificado, comprobando archivos con extensión <code>.pdf</code>. Usa <code>sorted()</code> para procesarlos en orden alfabético.</li>
</ul>
<p><strong>6. Leer Cada PDF y Añadir Páginas 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>Para cada PDF, <code>PdfReader</code> lee el archivo, y luego todas las páginas de ese PDF se añaden a <code>writer</code>.</li>
</ul>
<p><strong>7. Escribir el PDF Fusionado en un Archivo de Salida</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>Después de recopilar todas las páginas, <code>writer.write()</code> escribe el PDF fusionado en la ruta de salida especificada.</li>
</ul>
<p><strong>8. Imprimir Confirmación</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 fusionado guardado como: </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>Imprime un mensaje de éxito confirmando la ubicación del archivo PDF fusionado guardado.</li>
</ul>
<h3 id="archivos-pdf-de-entrada-usados-en-el-código-y-el-pdf-de-salida-fusionado">Archivos PDF de Entrada Usados en el Código y el PDF de Salida Fusionado</h3>
<ul>
<li><strong>Archivos PDF de Entrada:</strong> <a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python/pdfs-to-merge">Enlace de Descarga</a></li>
<li><strong>PDF de Salida Fusionado:</strong> <a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python/pdfs-to-merge/output-dir">Enlace de Descarga</a></li>
</ul>
<h2 id="4-dividir-un-pdf-usando-python">4. Dividir 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="explicación-del-código-3">Explicación del Código</h3>
<p>El script de Python anterior divide un PDF en páginas separadas usando la biblioteca <strong>PyPDF</strong>. Primero asegura que el directorio de salida exista, luego lee el archivo PDF de entrada. El script recorre cada página, crea un nuevo objeto <strong>PdfWriter</strong>, y guarda cada página como un archivo PDF individual. Los archivos de salida se nombran secuencialmente (por ejemplo, <strong>page_1.pdf, page_2.pdf</strong>) y se almacenan en la carpeta <strong><code>output-dir</code></strong>. Finalmente, imprime un mensaje de confirmación para cada archivo creado y notifica cuando el proceso ha concluido.</p>
<h3 id="archivo-pdf-de-entrada-y-archivos-de-salida-divididos">Archivo PDF de Entrada y Archivos de Salida Divididos</h3>
<ul>
<li><strong>Archivo PDF de Entrada:</strong> <a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python/pdf-to-split">Enlace de Descarga</a></li>
<li><strong>Archivos de Salida Divididos:</strong> <a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python/pdf-to-split/output-dir">Enlace de Descarga</a></li>
</ul>
<h2 id="5-añadiendo-una-marca-de-agua-a-un-pdf-usando-python">5. Añadiendo una Marca de Agua a un PDF usando Python</h2>
<p>Puede añadir una marca de agua a un PDF usando la biblioteca PyPDF sobreponiendo un PDF de marca de agua sobre un PDF existente. Asegúrese de que el PDF de marca de agua tenga una sola página para que se aplique correctamente a cada página del PDF principal.</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="explicación-del-código-4">Explicación del Código</h3>
<p>El script de Python anterior lee un PDF de entrada, extrae un PDF de marca de agua de una sola página, superpone la marca de agua en cada página del PDF de entrada y guarda el PDF final con la marca de agua.</p>
<p><strong>Desglose del Código</strong></p>
<p>Aquí tiene una breve explicación de cada parte:</p>
<p><strong>1. Importar Clases Necesarias</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> se utiliza para leer PDFs existentes.</li>
<li><strong><code>PdfWriter</code></strong> se utiliza para crear y escribir un nuevo PDF.</li>
</ul>
<p><strong>2. Definir Rutas de Archivos</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>: El PDF original al que se añadirá la marca de agua.</li>
<li><code>watermark_pdf</code>: Un PDF de <strong>una sola página</strong> que sirve como marca de agua.</li>
<li><code>output_pdf</code>: El archivo de salida que contendrá las páginas con la marca de agua.</li>
</ul>
<p><strong>3. Leer PDFs</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>: Lee el PDF de entrada.</li>
<li><code>watermark</code>: Lee el PDF de marca de agua.</li>
</ul>
<p><strong>4. Crear un Objeto 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>Este se usará para crear el PDF final con marca de agua.</li>
</ul>
<p><strong>5. Extraer Página de Marca de Agua</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>Supone que el PDF de marca de agua tiene solo <strong>una página</strong>, que se usa para superponer en todas las páginas.</li>
</ul>
<p><strong>6. Recorrer Páginas del PDF de Entrada y Fusionar Marca de Agua</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"># Mezcla la marca de agua con la página actual</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"># Añade la página fusionada al escritor</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 a través de cada página de <code>input_pdf</code>.</li>
<li><strong><code>merge_page(watermark_page)</code></strong> superpone la marca de agua encima de la página actual.</li>
<li>Añade la página modificada al <code>writer</code>.</li>
</ul>
<p><strong>7. Guardar el PDF con Marca de Agua</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>Escribe las páginas modificadas en un nuevo archivo PDF.</li>
</ul>
<p><strong>8. Imprimir Confirmación</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 con marca de agua guardado como: </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>Imprime la ruta del archivo de salida para confirmación.</li>
</ul>
<h3 id="pdf-de-entrada-pdf-de-marca-de-agua-y-pdf-de-salida-con-marca-de-agua">PDF de Entrada, PDF de Marca de Agua y PDF de Salida con Marca de Agua</h3>
<ul>
<li><strong>Archivo PDF de Entrada:</strong> <a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python/pdf-to-watermark">Enlace de Descarga</a></li>
<li><strong>Archivo PDF de Marca de Agua:</strong> <a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python/pdf-to-watermark">Enlace de Descarga</a></li>
<li><strong>Archivo PDF de Salida con Marca de Agua:</strong> <a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python/pdf-to-watermark">Enlace de Descarga</a></li>
</ul>
<p><strong>Captura de Pantalla</strong>
<img loading="lazy" src="https://raw.githubusercontent.com/fileformat-blog-gists/content/main/working-with-pdf-files-in-python/watermark-pdf.png" alt="Captura de Pantalla de PDF con Marca de Agua Usando Python"  />
</p>
<h2 id="conclusión">Conclusión</h2>
<p>En esta guía, exploramos operaciones esenciales de PDF en Python, incluyendo la extracción de texto, rotación de páginas, fusión, división y adición de marcas de agua. Con estas habilidades, ahora puede construir su propio gestor de PDFs y automatizar varias tareas de PDF de manera eficiente.</p>
]]></content:encoded>
    </item>
    
  </channel>
</rss>
