Files
fn_registry/python/functions/infra/pdf_save.md
T
egutierrez 0819c35bbb feat: issue/0020 — generacion de PDFs en Python y Go
Añade 3 tipos Python (PDFDoc, PDFPage, PDFStyle) y 10 funciones Python
para construir PDFs con fpdf2 (builder fluent), fusionar PDFs con pypdf
y convertir HTML/Markdown a PDF via weasyprint (stub si no disponible).
Añade pdf_simple_report en Go como stub hasta que go-pdf/fpdf se integre.

- python/types/infra/: pdf_doc, pdf_page, pdf_style
- python/functions/infra/: pdf_create, pdf_add_page, pdf_add_text,
  pdf_add_table, pdf_add_image, pdf_add_header_footer, pdf_from_html,
  pdf_from_markdown, pdf_merge, pdf_save
- functions/infra/pdf_simple_report.go: stub Go con ReportSection/ReportTable
- 17 tests Python pasando (pytest)
- fpdf2 y pypdf añadidos via uv al venv Python

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 02:02:51 +02:00

1.7 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports params output tested tests test_file_path file_path
pdf_save function py infra 1.0.0 impure def pdf_save(doc, output_path) -> str | bytes Serializa el documento PDF a disco o retorna los bytes en memoria. Si output_path es None retorna bytes para transmision directa (HTTP response, almacenamiento en BD). Si se especifica, escribe el archivo y retorna el path.
pdf
save
output
builder
infra
pdf_doc_py_infra
false error_go_core
name desc
doc PDFDoc con al menos una pagina y contenido añadido
name desc
output_path ruta del archivo PDF a crear en disco; None retorna bytes del PDF en memoria
output_path (str) si se escribio a disco, o bytes del PDF si output_path es None true
guardar PDF a archivo
retornar bytes del PDF
PDF valido comienza con %PDF
python/functions/infra/pdf_save_test.py python/functions/infra/pdf_save.py

Ejemplo

# Guardar a disco
path = pdf_save(doc, "reporte.pdf")
print(f"PDF guardado en: {path}")

# Obtener bytes (para HTTP response o guardar en BD)
pdf_bytes = pdf_save(doc)
assert pdf_bytes[:4] == b"%PDF"

# En un endpoint web (ejemplo conceptual)
return Response(pdf_save(doc), content_type="application/pdf")

Notas

Llama a fpdf2.output(). Si el documento usa alias_nb_pages() (activado por pdf_add_header_footer con page_numbers=True), fpdf2 reemplaza el alias con el total real de paginas al serializar. Para retornar bytes, output() retorna un bytearray que se convierte a bytes para compatibilidad con APIs que esperan bytes.