Guía completa de PDF en Rust: ejemplos y métodos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

PDF en Rust: Guía completa para crear documentos con la librería printpdf

1. ¿Qué es y para qué sirve?

printpdf es una librería potente y flexible para el lenguaje de programación Rust, diseñada para crear documentos PDF «desde cero». A diferencia de otras herramientas que simplemente convierten HTML o Markdown a PDF, printpdf ofrece una API de bajo nivel que te da control total sobre cada aspecto del documento: desde la colocación de texto y gráficos vectoriales hasta la incrustación de fuentes e imágenes. Esta librería está escrita en Rust puro sin dependencias externas (excepto la biblioteca estándar), lo que la convierte en la opción ideal para sistemas donde la seguridad de memoria, el rendimiento y la portabilidad son críticos.

¿Por qué usar printpdf? En el mundo actual, PDF es el formato universal para el intercambio de documentos. La generación de PDF en el lado del servidor es necesaria en diversos escenarios: creación de facturas y albaranes en sistemas ERP, generación de informes y paneles analíticos, creación de certificados y diplomas, y elaboración de formularios y plantillas imprimibles. Rust, con su enfoque en rendimiento y fiabilidad, es ideal para estas tareas. printpdf permite hacerlo de manera eficiente, sin la sobrecarga de ejecutar procesos externos (como con wkhtmltopdf) ni de usar motores de navegador pesados.

Las características clave de la librería incluyen: soporte para todos los objetos PDF estándar (páginas, fuentes, imágenes, gráficos), trabajo con Unicode e incrustación de fuentes TrueType/OpenType, creación de documentos multipágina, uso de espacios de color RGB, CMYK y Escala de Grises, y posicionamiento preciso de elementos mediante el sistema de coordenadas PDF. No es una herramienta de conversión «al vuelo», sino más bien un «constructor» para la creación profesional de documentos.

2. Instalación

Para instalar la librería printpdf en tu proyecto de Rust, se utiliza el gestor de paquetes estándar Cargo. Solo necesitas añadir la dependencia en el archivo Cargo.toml de tu proyecto.

Abre la terminal en la carpeta raíz de tu proyecto y ejecuta el siguiente comando:

cargo add printpdf

O añade manualmente la siguiente línea en la sección [dependencies] de tu Cargo.toml:

[dependencies]
printpdf = "0.7"

Después de esto, Cargo descargará automáticamente la librería y todas sus dependencias internas en la próxima compilación del proyecto. Asegúrate de tener instalados Rust (rustc) y Cargo. Si no es así, visita rustup.rs para instalarlos.

3. Inicio rápido — ejemplo mínimo funcional

Vamos a crear un documento PDF muy simple con una página y texto. Este ejemplo muestra el ciclo básico de trabajo con la librería: crear el documento, añadir una página, seleccionar una fuente, dibujar texto y guardar el archivo.

use printpdf::*;
use std::fs::File;
use std::io::BufWriter;

fn main() {
    // Crear un nuevo documento PDF
    let (doc, page1, layer1) = PdfDocument::new(
        "Mi primer PDF en Rust",
        Mm(210.0), // Ancho de página (A4)
        Mm(297.0), // Alto de página (A4)
        "Layer 1", // Nombre de la capa
    );

    // Obtener la fuente por defecto (Helvetica incorporada)
    let font = doc.add_builtin_font(BuiltinFont::Helvetica).unwrap();

    // Empezar a trabajar con la capa
    let current_layer = doc.get_page(page1).get_layer(layer1);

    // Usar fuente de tamaño 48pt, color negro
    current_layer.use_text("¡Hola, PDF en Rust!", 48.0, Mm(50.0), Mm(200.0), &font);

    // Guardar el documento en un archivo
    let file =                    

Recommendations