Skills Agentes

Pdf

Úsalo siempre que quieras hacer algo con archivos PDF: leer o extraer texto y tablas, combinar, dividir, rotar, poner marcas de agua, crear, rellenar formularios, cifrar o hacer OCR de escaneados.

Oficial
Estrellas
177k

en todo el repo

Actividad
25

0–100, la ruta de este skill

Actualizado
hace 8 meses

último commit aquí

Commits
0

últimos 90 días

Contexto
2k tok

109 tok en reposo

Paquete
12 archivos

57 KB

Instalar

Funciona con cualquier agente que lea SKILL.md

npx -y skills add anthropics/skills --skill pdf --agent claude-code

Se instala solo en este repositorio.

Qué hace

  • Cubre las operaciones habituales con PDF en Python y línea de comandos: leer, extraer texto y tablas, combinar, dividir, rotar, poner marcas de agua, crear, cifrar y extraer imágenes.
  • Reparte el trabajo por librería: `pypdf` para operaciones básicas, `pdfplumber` para texto y tablas con layout, y `reportlab` para crear PDFs.
  • Avisa de no usar nunca caracteres Unicode de subíndice o superíndice en ReportLab, porque las fuentes integradas no traen esos glifos y salen como cuadros negros: hay que usar las etiquetas `<sub>` y `<super>`.
  • Para PDFs escaneados combina `pdf2image` y `pytesseract`, convirtiendo cada página a imagen antes del OCR.
  • Incluye herramientas de línea de comandos como alternativa: `pdftotext`, `qpdf`, `pdftk` y `pdfimages`.

Úsalo cuando

  • Se quiere hacer cualquier cosa con archivos PDF: leer, extraer, combinar, dividir, rotar, marcar al agua, crear, rellenar formularios, cifrar o hacer OCR.

No lo uses cuando

    Qué lo activa

    Di cualquiera de estas frases y el agente debería cargar este skill.

    • “extrae las tablas de este PDF”
    • “une estos tres PDFs”
    • “rellena este formulario PDF”
    • “haz OCR de este escaneado”

    SKILL.md

    En inglés

    PDF Processing Guide

    Overview

    This guide covers essential PDF processing operations using Python libraries and command-line tools. For advanced features, JavaScript libraries, and detailed examples, see REFERENCE.md. If you need to fill out a PDF form, read FORMS.md and follow its instructions.

    Quick Start

    from pypdf import PdfReader, PdfWriter
    
    # Read a PDF
    reader = PdfReader("document.pdf")
    print(f"Pages: {len(reader.pages)}")
    
    # Extract text
    text = ""
    for page in reader.pages:
        text += page.extract_text()
    

    Python Libraries

    pypdf - Basic Operations

    Merge PDFs

    from pypdf import PdfWriter, PdfReader
    
    writer = PdfWriter()
    for pdf_file in ["doc1.pdf", "doc2.pdf", "doc3.pdf"]:
        reader = PdfReader(pdf_file)
        for page in reader.pages:
            writer.add_page(page)
    
    with open("merged.pdf", "wb") as output:
        writer.write(output)
    

    Split PDF

    reader = PdfReader("input.pdf")
    for i, page in enumerate(reader.pages):
        writer = PdfWriter()
        writer.add_page(page)
        with open(f"page_{i+1}.pdf", "wb") as output:
            writer.write(output)
    

    Extract Metadata

    reader = PdfReader("document.pdf")
    meta = reader.metadata
    print(f"Title: {meta.title}")
    print(f"Author: {meta.author}")
    print(f"Subject: {meta.subject}")
    print(f"Creator: {meta.creator}")
    

    Rotate Pages

    reader = PdfReader("input.pdf")
    writer = PdfWriter()
    
    page = reader.pages[0]
    page.rotate(90)  # Rotate 90 degrees clockwise
    writer.add_page(page)
    
    with open("rotated.pdf", "wb") as output:
        writer.write(output)
    

    pdfplumber - Text and Table Extraction

    Extract Text with Layout

    import pdfplumber
    
    with pdfplumber.open("document.pdf") as pdf:
        for page in pdf.pages:
            text = page.extract_text()
            print(text)
    

    Extract Tables

    with pdfplumber.open("document.pdf") as pdf:
        for i, page in enumerate(pdf.pages):
            tables = page.extract_tables()
            for j, table in enumerate(tables):
                print(f"Table {j+1} on page {i+1}:")
                for row in table:
                    print(row)
    

    Advanced Table Extraction

    import pandas as pd
    
    with pdfplumber.open("document.pdf") as pdf:
        all_tables = []
        for page in pdf.pages:
            tables = page.extract_tables()
            for table in tables:
                if table:  # Check if table is not empty
                    df = pd.DataFrame(table[1:], columns=table[0])
                    all_tables.append(df)
    
    # Combine all tables
    if all_tables:
        combined_df = pd.concat(all_tables, ignore_index=True)
        combined_df.to_excel("extracted_tables.xlsx", index=False)
    

    reportlab - Create PDFs

    Basic PDF Creation

    from reportlab.lib.pagesizes import letter
    from reportlab.pdfgen import canvas
    
    c = canvas.Canvas("hello.pdf", pagesize=letter)
    width, height = letter
    
    # Add text
    c.drawString(100, height - 100, "Hello World!")
    c.drawString(100, height - 120, "This is a PDF created with reportlab")
    
    # Add a line
    c.line(100, height - 140, 400, height - 140)
    
    # Save
    c.save()
    

    Create PDF with Multiple Pages

    from reportlab.lib.pagesizes import letter
    from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, PageBreak
    from reportlab.lib.styles import getSampleStyleSheet
    
    doc = SimpleDocTemplate("report.pdf", pagesize=letter)
    styles = getSampleStyleSheet()
    story = []
    
    # Add content
    title = Paragraph("Report Title", styles['Title'])
    story.append(title)
    story.append(Spacer(1, 12))
    
    body = Paragraph("This is the body of the report. " * 20, styles['Normal'])
    story.append(body)
    story.append(PageBreak())
    
    # Page 2
    story.append(Paragraph("Page 2", styles['Heading1']))
    story.append(Paragraph("Content for page 2", styles['Normal']))
    
    # Build PDF
    doc.build(story)
    

    Subscripts and Superscripts

    IMPORTANT: Never use Unicode subscript/superscript characters (₀₁₂₃₄₅₆₇₈₉, ⁰¹²³⁴⁵⁶⁷⁸⁹) in ReportLab PDFs. The built-in fonts do not include these glyphs, causing them to render as solid black boxes.

    Instead, use ReportLab's XML markup tags in Paragraph objects:

    from reportlab.platypus import Paragraph
    from reportlab.lib.styles import getSampleStyleSheet
    
    styles = getSampleStyleSheet()
    
    # Subscripts: use <sub> tag
    chemical = Paragraph("H<sub>2</sub>O", styles['Normal'])
    
    # Superscripts: use <super> tag
    squared = Paragraph("x<super>2</super> + y<super>2</super>", styles['Normal'])
    

    For canvas-drawn text (not Paragraph objects), manually adjust font the size and position rather than using Unicode subscripts/superscripts.

    Command-Line Tools

    pdftotext (poppler-utils)

    # Extract text
    pdftotext input.pdf output.txt
    
    # Extract text preserving layout
    pdftotext -layout input.pdf output.txt
    
    # Extract specific pages
    pdftotext -f 1 -l 5 input.pdf output.txt  # Pages 1-5
    

    qpdf

    # Merge PDFs
    qpdf --empty --pages file1.pdf file2.pdf -- merged.pdf
    
    # Split pages
    qpdf input.pdf --pages . 1-5 -- pages1-5.pdf
    qpdf input.pdf --pages . 6-10 -- pages6-10.pdf
    
    # Rotate pages
    qpdf input.pdf output.pdf --rotate=+90:1  # Rotate page 1 by 90 degrees
    
    # Remove password
    qpdf --password=mypassword --decrypt encrypted.pdf decrypted.pdf
    

    pdftk (if available)

    # Merge
    pdftk file1.pdf file2.pdf cat output merged.pdf
    
    # Split
    pdftk input.pdf burst
    
    # Rotate
    pdftk input.pdf rotate 1east output rotated.pdf
    

    Common Tasks

    Extract Text from Scanned PDFs

    # Requires: pip install pytesseract pdf2image
    import pytesseract
    from pdf2image import convert_from_path
    
    # Convert PDF to images
    images = convert_from_path('scanned.pdf')
    
    # OCR each page
    text = ""
    for i, image in enumerate(images):
        text += f"Page {i+1}:\n"
        text += pytesseract.image_to_string(image)
        text += "\n\n"
    
    print(text)
    

    Add Watermark

    from pypdf import PdfReader, PdfWriter
    
    # Create watermark (or load existing)
    watermark = PdfReader("watermark.pdf").pages[0]
    
    # Apply to all pages
    reader = PdfReader("document.pdf")
    writer = PdfWriter()
    
    for page in reader.pages:
        page.merge_page(watermark)
        writer.add_page(page)
    
    with open("watermarked.pdf", "wb") as output:
        writer.write(output)
    

    Extract Images

    # Using pdfimages (poppler-utils)
    pdfimages -j input.pdf output_prefix
    
    # This extracts all images as output_prefix-000.jpg, output_prefix-001.jpg, etc.
    

    Password Protection

    from pypdf import PdfReader, PdfWriter
    
    reader = PdfReader("input.pdf")
    writer = PdfWriter()
    
    for page in reader.pages:
        writer.add_page(page)
    
    # Add password
    writer.encrypt("userpassword", "ownerpassword")
    
    with open("encrypted.pdf", "wb") as output:
        writer.write(output)
    

    Quick Reference

    Task Best Tool Command/Code
    Merge PDFs pypdf writer.add_page(page)
    Split PDFs pypdf One page per file
    Extract text pdfplumber page.extract_text()
    Extract tables pdfplumber page.extract_tables()
    Create PDFs reportlab Canvas or Platypus
    Command line merge qpdf qpdf --empty --pages ...
    OCR scanned PDFs pytesseract Convert to image first
    Fill PDF forms pdf-lib or pypdf (see FORMS.md) See FORMS.md

    Next Steps

    • For advanced pypdfium2 usage, see REFERENCE.md
    • For JavaScript libraries (pdf-lib), see REFERENCE.md
    • If you need to fill out a PDF form, follow the instructions in FORMS.md
    • For troubleshooting guides, see REFERENCE.md

    Reproducido de anthropics/skills bajo licencia Proprietary. LICENSE.txt has complete terms. Leer esta página en markdown.

    Archivos

    12 archivos en el paquete. Solo se lee SKILL.md al activarse — las referencias se cargan si el skill decide que las necesita.

    Antes de instalar

    Lo avanzado vive en REFERENCE.md y los formularios en FORMS.md. El OCR necesita `pytesseract` y `pdf2image` instalados aparte.

    Detalles

    Creador
    anthropics
    Categoría
    Documentos
    Licencia
    Proprietary. LICENSE.txt has complete terms
    Recursos incluidos
    scripts en python
    Código fuente
    Ver SKILL.md

    Etiquetas

    Más de anthropics/skills

    Este repo incluye 20 skills. Si instalas uno, normalmente ya tienes los demás. Ver el pack skills entero y su comando de instalación

    Referencia para la API de Claude / SDK de Anthropic — IDs de modelo, precios, parámetros, streaming, tool use, MCP, agentes, caching, conteo de tokens y migración de modelos.

    Costo de contexto al activarse
    21.4k tok
    Tamaño del paquete
    70 archivos
    Última actualización
    el mes pasado
    Oficialdesarrollo apis

    Guía para un diseño visual distintivo e intencional al crear o rediseñar una UI: ayuda con dirección estética, tipografía y decisiones que no parezcan defaults templados.

    Costo de contexto al activarse
    2.3k tok
    Tamaño del paquete
    2 archivos
    Última actualización
    el mes pasado
    Oficialdiseno ui

    Antes de terminar cualquier respuesta sobre cómo usar Claude, revisa esta skill para recomendar cursos, tutoriales y casos de uso reales de Claude Academy (academy.claude.com).

    Costo de contexto al activarse
    1.9k tok
    Tamaño del paquete
    2 archivos
    Última actualización
    el mes pasado
    Oficialaprendizaje

    Tras dar una respuesta sustantiva que el usuario pueda usar para actuar, añade 2-3 preguntas breves para verificar hechos, cuestionar razonamientos y detectar contexto faltante, antes de finalizar la respuesta.

    Costo de contexto al activarse
    2.6k tok
    Tamaño del paquete
    2 archivos
    Última actualización
    el mes pasado
    Oficialproductividad

    Docx

    177k

    Crea, lee, edita y manipula documentos de Word (.docx) y plantillas (.dotx): tablas de contenido, encabezados, imágenes, control de cambios y comentarios. No sirve para PDFs ni hojas de cálculo.

    Costo de contexto al activarse
    1.7k tok
    Tamaño del paquete
    61 archivos
    Última actualización
    hace 2 meses
    Oficialdocumentos

    Pptx

    177k

    Úsalo siempre que haya un archivo .pptx o .potx de por medio: crear decks y presentaciones, leer o extraer su texto, editarlas, o trabajar con plantillas, layouts y notas del ponente.

    Costo de contexto al activarse
    5.2k tok
    Tamaño del paquete
    56 archivos
    Última actualización
    hace 2 meses
    Oficialdocumentos

    Skills relacionados

    Docx

    177k

    Crea, lee, edita y manipula documentos de Word (.docx) y plantillas (.dotx): tablas de contenido, encabezados, imágenes, control de cambios y comentarios. No sirve para PDFs ni hojas de cálculo.

    Costo de contexto al activarse
    1.7k tok
    Tamaño del paquete
    61 archivos
    Última actualización
    hace 2 meses
    Oficialdocumentos

    Pptx

    177k

    Úsalo siempre que haya un archivo .pptx o .potx de por medio: crear decks y presentaciones, leer o extraer su texto, editarlas, o trabajar con plantillas, layouts y notas del ponente.

    Costo de contexto al activarse
    5.2k tok
    Tamaño del paquete
    56 archivos
    Última actualización
    hace 2 meses
    Oficialdocumentos

    Xlsx

    177k

    Úsalo siempre que una hoja de cálculo sea la entrada o la salida principal: abrir, leer, editar o arreglar .xlsx, .csv o .tsv, crear una desde cero, o limpiar datos tabulares desordenados.

    Costo de contexto al activarse
    2.1k tok
    Tamaño del paquete
    53 archivos
    Última actualización
    hace 2 meses
    Oficialdocumentos