PDF em Rust: Guia completo para criar documentos com a biblioteca printpdf
1. O que é e por que usar
printpdf é uma biblioteca poderosa e flexível para a linguagem de programação Rust, projetada para criar documentos PDF "do zero". Diferente de muitas ferramentas que apenas convertem HTML ou Markdown para PDF, o printpdf oferece uma API de baixo nível que dá controle total sobre cada aspecto do documento: desde o posicionamento de texto e gráficos vetoriais até a incorporação de fontes e imagens. Esta biblioteca é escrita em Rust puro, sem dependências externas (além da biblioteca padrão), tornando-a ideal para sistemas onde segurança de memória, desempenho e portabilidade são essenciais.
Por que usar printpdf? No mundo atual, o PDF é o formato universal para troca de documentos. A geração de PDF no lado do servidor é necessária em diversos cenários: criação de faturas e notas fiscais em sistemas ERP, geração de relatórios e dashboards analíticos, emissão de certificados e diplomas, criação de formulários e documentos para impressão. Rust, com seu foco em desempenho e confiabilidade, é perfeito para essas tarefas. O printpdf permite fazer isso de forma eficiente, sem a sobrecarga de executar processos externos (como no caso do wkhtmltopdf) ou usar motores de navegador pesados.
As principais características da biblioteca incluem: suporte a todos os objetos PDF padrão (páginas, fontes, imagens, gráficos), trabalho com Unicode e incorporação de fontes TrueType/OpenType, criação de documentos com várias páginas, uso de espaços de cor RGB, CMYK e Grayscale, além de posicionamento preciso de elementos usando o sistema de coordenadas PDF. Não é uma ferramenta de conversão "on the fly", mas sim um "construtor" para criação profissional de documentos.
2. Instalação
Para instalar a biblioteca printpdf no seu projeto Rust, use o gerenciador de pacotes padrão Cargo. Você precisa adicionar a dependência no arquivo Cargo.toml do seu projeto.
Abra o terminal na pasta raiz do seu projeto e execute o comando:
cargo add printpdf
Ou adicione manualmente a seguinte linha na seção [dependencies] do seu Cargo.toml:
[dependencies]
printpdf = "0.7"
Após isso, o Cargo baixará automaticamente a biblioteca e todas as suas dependências internas na próxima compilação do projeto. Certifique-se de ter o Rust (rustc) e o Cargo instalados. Caso contrário, visite rustup.rs para instalar.
3. Início rápido — exemplo mínimo funcional
Vamos criar um documento PDF simples com uma página e texto. Este exemplo mostra o ciclo básico de trabalho com a biblioteca: criar o documento, adicionar uma página, escolher uma fonte, desenhar texto e salvar o arquivo.
use printpdf::*;
use std::fs::File;
use std::io::BufWriter;
fn main() {
// Cria um novo documento PDF
let (doc, page1, layer1) = PdfDocument::new(
"Meu primeiro PDF em Rust",
Mm(210.0), // Largura da página (A4)
Mm(297.0), // Altura da página (A4)
"Layer 1", // Nome da camada
);
// Obtém a fonte padrão (Helvetica embutida)
let font = doc.add_builtin_font(BuiltinFont::Helvetica).unwrap();
// Inicia o trabalho com a camada
let current_layer = doc.get_page(page1).get_layer(layer1);
// Usa a fonte tamanho 48pt, cor preta
current_layer.use_text("Olá, PDF em Rust!", 48.0, Mm(50.0), Mm(200.0), &font);
// Salva o documento em um arquivo
let file = Também na biblioteca
Trabalhando com Excel em JavaScript (Node.js): bibliotecas e exemplos
ORM para Swift (iOS/macOS): comparação e exemplos de uso
Programação Reativa em JavaScript (Node.js): RxJS & Observables