Ya hemos trabajado anteriormente con Python para muchas cosas. Hoy veremos cómo poner un pie de página a cualquier documento PDF.
Veremos cómo poner un texto, número o cualquier mensaje que queramos.
Esto funciona cuando queremos poner nuestro nombre a algún documento, o modificar un documento PDF que no podemos editar.
El proceso es realmente sencillo, sólo necesitamos Python y algunas librerías que instalaremos con Pip. Recuerda que si no tienes instalado pip o Python, aquí hay un excelente tutorial.
Como siempre, necesitamos Python y pip. Aquí un tutorial.
Una vez que tengamos todo instalado, necesitamos 2 librerías más: PyPDF2 y ReportLab. Más abajo veremos cómo instalarlas.
Ejecutamos lo siguiente en la línea de comandos:
pip install PyPDF2
Ejecutamos lo siguiente:
pip install reportlab
Ahora sí estamos listos.
Para ejemplificar lo que aquí se verá, se utilizará un PDF normal que es de uno de mis posts:
Para mí, esta opción es la más útil. Podría servir para poner nuestra “marca de agua” en los documentos que generemos. En fin, podemos poner cualquier mensaje deseado.
from PyPDF2 import PdfFileWriter, PdfFileReader
import io
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter
nombre_pdf_original = "post.pdf" # Cambia aquí el nombre de tu documento original
nombre_pdf_salida = "post_con_mensaje.pdf" # Cambia aquí el nombre del PDF de salida
mensaje = "Este es un pie de página :)"
packet = io.BytesIO()
mi_canvas = canvas.Canvas(packet, pagesize=letter)
"""
También podemos cambiar las coordenadas del mensaje.
La posición (0, 0) es la esquina inferior izquierda
por eso es que nuestro mensaje sale tan cerca a
dicho lugar
"""
mi_canvas.drawString(5, 5, mensaje)
mi_canvas.save()
packet.seek(0)
pdf_con_pie = PdfFileReader(packet)
pdf_existente = PdfFileReader(open(nombre_pdf_original, "rb"))
output = PdfFileWriter()
# Iterar desde 0 hasta el número de páginas de nuestro documento
numero_de_paginas = pdf_existente.getNumPages()
for numero in range(0, numero_de_paginas):
page = pdf_existente.getPage(numero)
page.mergePage(pdf_con_pie.getPage(0))
print("Agregando mensaje \"{}\" a la página {} de {}".format(mensaje, numero + 1, numero_de_paginas))
output.addPage(page)
outputStream = open(nombre_pdf_salida, "wb")
output.write(outputStream)
outputStream.close()
El código se explica por sí mismo. Simplemente creamos un documento PDF temporal, con el mensaje que pusimos y luego lo “combinamos” con el original.
Así vamos haciendo por cada página y al final escribimos el contenido del stream en el archivo de salida.
Si ejecutamos el código se verá algo así:
El resultado es este:
Sencillo pero muy útil. Tal vez más tarde podríamos agregar una interfaz gráfica para facilitar el uso de este programa. Incluso podríamos empaquetar esto.
Te recomiendo leer la documentación oficial de ReportLab aquí, así como la de PyPDF2 aquí. Igualmente te invito a leer otros tutoriales de Python.
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Esta web usa cookies.
Ver comentarios
Estimado, tu código me parece muy interesante, me puedes comentar como hago para agregar ademas del pie de página el numero de la página.
Hola. Gracias por sus comentarios. Si tiene alguna consulta, solicitud de creación de un programa o solicitud de cambio de software estoy para servirle en https://parzibyte.me/#contacto
Saludos!
Me puedes explicar con manzanas porfavor
donde escribo o copio la ubicación del archivo pdf en el pc?
o tiene que estar en la misma carpeta?
Hola. Puede ser la ruta absoluta o relativa. Si el PDF está en el mismo directorio que el script, basta con escribir el nombre completo incluyendo la extensión.
Si el PDF está en otra ubicación entonces su ruta podría ser (podría ser; solo es un ejemplo) algo como C:\\su_usuario\\Documents\\documento.pdf
Saludos