pdf-design

SKILL.md

PDF Creation and Design Manual

Overview

This skill helps you create and manipulate PDF documents using Python and command-line tools. Use it to generate reports, fill forms, or customize layouts.

Creating PDFs with ReportLab

Basic Example

from reportlab.lib.pagesizes import A4
from reportlab.pdfgen import canvas

c = canvas.Canvas("hello.pdf", pagesize=A4)
width, height = A4

# Draw text
c.setFont("Helvetica-Bold", 16)
c.drawString(50, height - 50, "Hello, PDF!")

# Draw rectangle
c.rect(50, height - 100, 200, 50, stroke=1, fill=0)

# Save
c.save()

Multipage Report

from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, PageBreak
from reportlab.lib.styles import getSampleStyleSheet

doc = SimpleDocTemplate("report.pdf")
styles = getSampleStyleSheet()
story = []

story.append(Paragraph("Report Title", styles['Title']))
story.append(Spacer(1, 12))
story.append(Paragraph("This is the report body.", styles['Normal']))
story.append(PageBreak())
story.append(Paragraph("Page 2", styles['Heading1']))
doc.build(story)

Filling PDF Forms with PyPDF

from pypdf import PdfReader, PdfWriter

reader = PdfReader("form.pdf")
writer = PdfWriter()

for page in reader.pages:
    writer.add_page(page)

# Update form fields
writer.update_page_form_field_values(writer.pages[0], {
    "name_field": "John Doe",
    "date_field": "2025-10-18"
})

with open("filled_form.pdf", "wb") as f_out:
    writer.write(f_out)

Merging and Splitting PDFs

from pypdf import PdfMerger, PdfReader, PdfWriter

# Merge
merger = PdfMerger()
for pdf_file in ["file1.pdf", "file2.pdf"]:
    merger.append(pdf_file)
merger.write("merged.pdf")
merger.close()

# Split first 5 pages
reader = PdfReader("big.pdf")
for i, page in enumerate(reader.pages[:5]):
    writer = PdfWriter()
    writer.add_page(page)
    with open(f"page{i+1}.pdf", "wb") as out:
        writer.write(out)

Design Tips

  • Use consistent margins and spacing.
  • Choose a readable font (e.g., Helvetica or Times New Roman).
  • Use headers and footers for pagination and context.
  • Incorporate your brand colors and logo.
  • For long documents, include a table of contents with hyperlinks.

Command-Line Tools

  • pdftotext – Extract text: pdftotext -layout input.pdf output.txt.
  • qpdf – Merge/split: qpdf input.pdf --pages . 1-5 -- output.pdf.
  • pdfinfo – View metadata.

Additional Resources

  • ReportLab User Guide.
  • PyPDF documentation.
  • Poppler utils man pages.
Weekly Installs
3
First Seen
Feb 14, 2026
Installed on
cline3
gemini-cli3
github-copilot3
codex3
cursor3
opencode3