Cómo añadir marca de agua a una carpeta de PDFs en lote
Añadir una marca de agua a documentos PDF es una práctica común para proteger la autoría, indicar el estado del documento (BORRADOR, CONFIDENCIAL, APROBADO), identificar la versión de un documento compartido con distintos destinatarios, o simplemente como branding corporativo. El problema surge cuando necesitas aplicar esta marca de agua no a un solo documento, sino a decenas o cientos de archivos. Imagina que tienes un catálogo de 200 páginas de productos, cada producto en un PDF separado, y necesitas añadir el logo de tu empresa en cada uno antes de enviárselos a tus distribuidores. O que tienes 50 contratos generados automáticamente que necesitan marcarse como 'BORRADOR' antes de enviarlos a revisión. Hacer esto manualmente sería extremadamente tedioso y propenso a errores. La solución es automatizar la aplicación de marcas de agua. En esta guía veremos cómo usar LazyPDF para aplicar marcas de agua a archivos individuales, y cómo escalar esta operación a carpetas enteras usando Python o herramientas de línea de comandos.
Añadir marca de agua a PDFs individuales con LazyPDF
Para añadir marcas de agua a PDFs de forma individual, LazyPDF ofrece una herramienta intuitiva que no requiere registro ni instalación.
- 1Abre LazyPDF y selecciona la herramienta 'Marca de agua'.
- 2Carga el PDF al que quieres añadir la marca de agua.
- 3Escribe el texto de la marca de agua (ej: 'CONFIDENCIAL', 'BORRADOR', tu empresa) o sube una imagen de tu logo.
- 4Configura la posición, opacidad, tamaño y ángulo de la marca de agua.
- 5Previsualiza el resultado y ajusta hasta que quede correcto.
- 6Descarga el PDF con la marca de agua aplicada.
Añadir marca de agua en lote con Python y pypdf
Para procesar carpetas enteras de PDFs, Python con pypdf es la solución más flexible. El siguiente script añade una marca de agua de texto a todos los PDFs de una carpeta: ```python import glob import os from pypdf import PdfReader, PdfWriter from pypdf.generic import NameObject, ArrayObject, FloatObject # Para marcas de agua de imagen, necesitas reportlab # pip install pypdf reportlab from reportlab.pdfgen import canvas from reportlab.lib.colors import Color import io def crear_marca_agua(texto, ancho=595, alto=842): buffer = io.BytesIO() c = canvas.Canvas(buffer, pagesize=(ancho, alto)) c.setFont('Helvetica-Bold', 60) c.setFillColor(Color(0.7, 0.7, 0.7, alpha=0.3)) # gris semitransparente c.translate(ancho/2, alto/2) c.rotate(45) c.drawCentredString(0, 0, texto) c.save() buffer.seek(0) return PdfReader(buffer).pages[0] def aplicar_marca_agua_lote(carpeta, texto_marca): marca = crear_marca_agua(texto_marca) for pdf_path in glob.glob(f'{carpeta}/*.pdf'): if 'marcado_' in pdf_path: continue reader = PdfReader(pdf_path) writer = PdfWriter() for pagina in reader.pages: pagina.merge_page(marca) writer.add_page(pagina) salida = pdf_path.replace('.pdf', '_marcado.pdf') with open(salida, 'wb') as f: writer.write(f) print(f'Procesado: {os.path.basename(pdf_path)}') aplicar_marca_agua_lote('/ruta/a/tus/pdfs', 'BORRADOR') ```
Marca de agua con imagen de logo en lote
Si necesitas añadir el logo de tu empresa como marca de agua (una imagen PNG con transparencia) en lugar de texto, el proceso es ligeramente diferente pero igualmente automatizable: ```python from reportlab.pdfgen import canvas from reportlab.lib.units import cm import io from pypdf import PdfReader, PdfWriter def crear_marca_agua_imagen(ruta_logo, posicion_x=200, posicion_y=300, ancho=200, alto=100): buffer = io.BytesIO() c = canvas.Canvas(buffer, pagesize=(595, 842)) # A4 c.setFillAlpha(0.3) # transparencia c.drawImage(ruta_logo, posicion_x, posicion_y, width=ancho, height=alto, mask='auto') # respeta transparencia PNG c.save() buffer.seek(0) return PdfReader(buffer).pages[0] ``` Este enfoque es ideal para documentos corporativos donde el logo debe aparecer discretamente en cada página, sin obstaculizar la lectura del contenido principal. La clave es ajustar la opacidad (0.3 significa 30% visible) para que el logo sea reconocible pero no interfiera con el texto.
Usar Ghostscript para marcas de agua en lote
Ghostscript también puede aplicar marcas de agua en lote, especialmente útil cuando la marca de agua ya existe como un PDF de una sola página (overlay). El comando básico es: ```bash for f in *.pdf; do gs -dBATCH -dNOPAUSE -sDEVICE=pdfwrite \ -sOutputFile="marcado_$f" \ -c "<</BeginPage {2 copy pop}>> setpagedevice" \ marca_agua.pdf "$f" done ``` Donde `marca_agua.pdf` es un PDF de una página que contiene solo el texto o imagen que quieres superponer. Este enfoque tiene la ventaja de que puedes diseñar la marca de agua exactamente como quieres usando cualquier herramienta de diseño gráfico y exportarla a PDF, y luego Ghostscript la superpone sobre cada página de cada documento. Para casos corporativos donde la marca de agua necesita ser exactamente la correcta (logo con colores específicos, posición precisa, tipografía corporativa), este enfoque de Ghostscript con una plantilla PDF da los mejores resultados.
Preguntas frecuentes
¿Se puede añadir una marca de agua diferente a cada PDF según su nombre o contenido?
Sí, con un script Python puedes personalizar la marca de agua para cada PDF. Por ejemplo, si el nombre del archivo incluye el número de cliente, puedes añadir ese número en la marca de agua. O si el PDF corresponde a un periodo específico, puedes extraer esa información del nombre del archivo y añadirla como marca de agua personalizada. Esta flexibilidad es la principal ventaja de los scripts sobre las herramientas con interfaz gráfica.
¿La marca de agua aplicada en lote es permanente o se puede eliminar?
La marca de agua aplicada mediante herramientas como pypdf o LazyPDF se integra en el contenido del PDF como una capa adicional. No es trivialmente eliminable con lectores de PDF estándar. Sin embargo, con herramientas avanzadas de edición de PDFs como Adobe Acrobat Pro o con scripts especializados, alguien con conocimientos técnicos podría intentar eliminarla. Para documentos que requieren protección robusta, combinar la marca de agua con cifrado del PDF es la estrategia más segura.
¿Cuántos PDFs por minuto puede procesar el script Python para añadir marcas de agua?
El rendimiento depende principalmente del número de páginas por PDF y de la complejidad de la marca de agua. Para PDFs de 1-5 páginas con una marca de agua de texto simple, un script Python puede procesar aproximadamente 20-50 PDFs por minuto en hardware moderno. Para PDFs con muchas páginas o con marcas de agua de imagen de alta resolución, el rendimiento es menor. Para 500 PDFs de longitud media, el proceso completo suele tardar entre 10 y 30 minutos.