API Fluida de PdfBuilder
PdfBuilder ofrece una API de configuración fluida para la creación de PDF. Encadena métodos para establecer el tamaño de página, los márgenes, el tamaño de fuente, los metadatos y más, y luego llama a un método from_* para generar el PDF.
Cobertura por binding. El
PdfBuilder/WasmPdfBuilderfluido está disponible en Python, Rust y WASM. Los bindings de Go y C# exponen los puntos de entrada abreviados (FromMarkdown,FromHtml,FromImage/Pdf.FromMarkdown,Pdf.FromHtml,Pdf.FromText), pero no la superficie de configuración del builder. Para márgenes o tamaños de página personalizados desde Go o C#, llama a la CLI de Rust con flags o envuelve un helper de Rust que exponga el builder mediante FFI.
Ejemplo Rápido
Python
from pdf_oxide import Pdf
# Python uses optional keyword arguments on Pdf static methods
pdf = Pdf.from_markdown(
"# Report\n\nContent here.",
title="Quarterly Report",
author="Finance Team"
)
pdf.save("report.pdf")
WASM
import { WasmPdf } from "pdf-oxide-wasm";
// JavaScript uses optional title and author parameters
const pdf = WasmPdf.fromMarkdown(
"# Report\n\nContent here.",
"Quarterly Report",
"Finance Team"
);
writeFileSync("report.pdf", pdf.toBytes());
Rust
use pdf_oxide::api::PdfBuilder;
use pdf_oxide::writer::PageSize;
let pdf = PdfBuilder::new()
.title("Quarterly Report")
.author("Finance Team")
.page_size(PageSize::A4)
.margin(54.0)
.font_size(11.0)
.line_height(1.5)
.from_markdown("# Report\n\nContent here.")?;
pdf.save("report.pdf")?;
Referencia Completa de la API
Constructor
PdfBuilder::new() -> PdfBuilder
Crea un nuevo builder con la configuración predeterminada:
| Ajuste | Predeterminado |
|---|---|
| Tamaño de página | Letter (8.5" x 11") |
| Todos los márgenes | 72pt (1 pulgada) |
| Tamaño de fuente | 12pt |
| Altura de línea | 1.5 |
Métodos de Metadatos
.title(title) – Establece el Título del Documento
PdfBuilder::new().title("My Document")
.author(author) – Establece el Autor del Documento
PdfBuilder::new().author("Jane Smith")
.subject(subject) – Establece el Asunto del Documento
PdfBuilder::new().subject("Annual Performance Review")
.keywords(keywords) – Establece las Palabras Clave del Documento
PdfBuilder::new().keywords("report, annual, 2025")
Métodos de Maquetación
.page_size(size) – Establece el Tamaño de Página
use pdf_oxide::writer::PageSize;
PdfBuilder::new().page_size(PageSize::A4)
Enum PageSize:
| Variante | Dimensiones |
|---|---|
PageSize::Letter |
612 x 792 pt (8.5" x 11") |
PageSize::A4 |
595 x 842 pt (210 x 297 mm) |
PageSize::Legal |
612 x 1008 pt (8.5" x 14") |
PageSize::A3 |
842 x 1190 pt (297 x 420 mm) |
PageSize::Custom(w, h) |
Ancho x alto personalizados en puntos |
.margin(margin) – Establece Márgenes Uniformes
Establece los cuatro márgenes (izquierdo, derecho, superior, inferior) con el mismo valor en puntos.
PdfBuilder::new().margin(54.0) // 0.75 inch margins
.margins(left, right, top, bottom) – Establece Márgenes Individuales
PdfBuilder::new().margins(72.0, 72.0, 54.0, 54.0)
Métodos de Tipografía
.font_size(size) – Establece el Tamaño de Fuente Predeterminado
PdfBuilder::new().font_size(11.0)
.line_height(height) – Establece el Multiplicador de Altura de Línea
Controla el espaciado entre líneas. Un valor de 1.5 significa 1,5 veces el tamaño de fuente.
PdfBuilder::new().line_height(1.6)
Métodos de Generación
Cada método de generación consume el builder y devuelve un objeto Pdf.
.from_markdown(content) – Genera a partir de Markdown
let pdf = PdfBuilder::new()
.title("Notes")
.from_markdown("# Notes\n\n- Item one\n- Item two")?;
.from_html(content) – Genera a partir de HTML
let pdf = PdfBuilder::new()
.title("Report")
.from_html("<h1>Report</h1><p>Summary of findings.</p>")?;
.from_text(content) – Genera a partir de Texto Plano
let pdf = PdfBuilder::new()
.font_size(10.0)
.from_text("Line 1\nLine 2\nLine 3")?;
.from_image(path) – Genera a partir de una Sola Imagen
let pdf = PdfBuilder::new()
.page_size(PageSize::A4)
.from_image("photo.jpg")?;
.from_image_bytes(data) – Genera a partir de Bytes de Imagen
let data = std::fs::read("chart.png")?;
let pdf = PdfBuilder::new().from_image_bytes(&data)?;
.from_images(paths) – Genera a partir de Múltiples Imágenes
let pdf = PdfBuilder::new()
.title("Photo Album")
.from_images(&["img1.jpg", "img2.jpg", "img3.jpg"])?;
.from_qrcode(data) – Genera un PDF con Código QR
Requiere la feature barcodes.
let pdf = PdfBuilder::new()
.title("QR Code")
.from_qrcode("https://example.com")?;
.from_barcode(barcode_type, data) – Genera un PDF con Código de Barras
Requiere la feature barcodes.
use pdf_oxide::writer::barcode::BarcodeType;
let pdf = PdfBuilder::new()
.from_barcode(BarcodeType::Code128, "ABC-12345")?;
Ejemplos Avanzados
Cadena de Configuración Completa
use pdf_oxide::api::PdfBuilder;
use pdf_oxide::writer::PageSize;
let content = r#"
# Technical Specification
## Overview
This document defines the interface contract for the v2 API.
## Endpoints
- `GET /api/v2/users` - List users
- `POST /api/v2/users` - Create user
- `GET /api/v2/users/:id` - Get user by ID
## Authentication
All endpoints require a Bearer token in the Authorization header.
"#;
let pdf = PdfBuilder::new()
.title("API Specification v2")
.author("Platform Team")
.subject("REST API Technical Specification")
.keywords("api, rest, specification, v2")
.page_size(PageSize::A4)
.margins(72.0, 72.0, 54.0, 72.0)
.font_size(11.0)
.line_height(1.5)
.from_markdown(content)?;
pdf.save("api_spec.pdf")?;
Tamaño de Página Personalizado
use pdf_oxide::api::PdfBuilder;
use pdf_oxide::writer::PageSize;
// Create a half-letter page (5.5" x 8.5")
let pdf = PdfBuilder::new()
.page_size(PageSize::Custom(396.0, 612.0))
.margin(36.0)
.font_size(10.0)
.from_markdown("# Pocket Guide\n\nCompact reference card.")?;
pdf.save("pocket_guide.pdf")?;
Equivalente en JavaScript
En JavaScript/WASM, los métodos estáticos de WasmPdf aceptan parámetros opcionales title y author, proporcionando la misma funcionalidad que los metadatos de PdfBuilder:
import { WasmPdf } from "pdf-oxide-wasm";
const pdf = WasmPdf.fromMarkdown("# Notes\n\n- Item one\n- Item two", "Notes");
const html = WasmPdf.fromHtml("<h1>Report</h1><p>Summary.</p>", "Report", "Author");
const text = WasmPdf.fromText("Line 1\nLine 2", "Plain Text Doc");
const img = WasmPdf.fromImageBytes(imageData);
La configuración del tamaño de página, los márgenes, el tamaño de fuente y la altura de línea no está disponible en la API de WASM: usa los ajustes de maquetación predeterminados.
Métodos de Salida
Una vez que tengas un objeto Pdf / WasmPdf, usa estos métodos para generarlo:
| Método | Lenguaje | Descripción |
|---|---|---|
.save(path) |
Python, Rust | Escribe el PDF en un archivo |
.to_bytes() (Python) |
Python | Obtiene los bytes sin procesar del PDF |
.into_bytes() (Rust) |
Rust | Consume el Pdf y devuelve Vec<u8> |
.toBytes() (JS) |
JavaScript | Obtiene el PDF como Uint8Array |
Páginas Relacionadas
- Crear desde Markdown – Markdown a PDF
- Crear desde HTML – HTML a PDF
- Crear desde Imágenes – Imágenes a PDF
- API de Bajo Nivel DocumentBuilder – Construcción programática de páginas
- Códigos QR y Códigos de Barras – Generación de códigos de barras