PDF en Rust : Guide complet pour créer des documents avec la bibliothèque printpdf
1. Qu'est-ce que printpdf et pourquoi l'utiliser ?
printpdf est une bibliothèque Rust puissante et flexible conçue pour créer des documents PDF « from scratch ». Contrairement à de nombreux autres outils qui convertissent simplement du HTML ou du Markdown en PDF, printpdf offre une API de bas niveau vous donnant un contrôle total sur chaque aspect du document : du placement du texte et des graphiques vectoriels à l'incorporation de polices et d'images. Cette bibliothèque est écrite en Rust pur, sans dépendances externes (hormis la bibliothèque standard), ce qui en fait un choix idéal pour les systèmes où la sécurité mémoire, les performances et la portabilité sont essentielles.
Pourquoi utiliser printpdf ? Dans le monde moderne, le PDF est un format universel pour l'échange de documents. La génération de PDF côté serveur est nécessaire dans de nombreux scénarios : création de factures et de bons de livraison dans les systèmes ERP, production de rapports et de tableaux de bord analytiques, génération de certificats et de diplômes, création de formulaires et de modèles imprimables. Rust, avec son accent sur la performance et la fiabilité, est parfaitement adapté à ces tâches. printpdf permet de le faire efficacement, sans les frais généraux liés au lancement de processus externes (comme avec wkhtmltopdf) ou à l'utilisation de moteurs de navigateur lourds.
Les principales fonctionnalités de la bibliothèque incluent : la prise en charge de tous les objets PDF standards (pages, polices, images, graphiques), le travail avec Unicode et l'incorporation de polices TrueType/OpenType, la création de documents multipages, l'utilisation des espaces colorimétriques RVB, CMJN et Niveaux de gris, ainsi que le positionnement précis des éléments à l'aide du système de coordonnées PDF. Ce n'est pas un outil de conversion « à la volée », mais plutôt un « kit de construction » pour la création professionnelle de documents.
2. Installation
Pour installer la bibliothèque printpdf dans votre projet Rust, utilisez le gestionnaire de paquets standard Cargo. Vous devez ajouter la dépendance dans le fichier Cargo.toml de votre projet.
Ouvrez un terminal dans le dossier racine de votre projet et exécutez la commande :
cargo add printpdf
Ou ajoutez manuellement la ligne suivante dans la section [dependencies] de votre Cargo.toml :
[dependencies]
printpdf = "0.7"
Ensuite, Cargo téléchargera automatiquement la bibliothèque et toutes ses dépendances internes lors de la prochaine compilation du projet. Assurez-vous d'avoir installé Rust (rustc) et Cargo. Si ce n'est pas le cas, rendez-vous sur rustup.rs pour les installer.
3. Démarrage rapide — un exemple minimal fonctionnel
Créons un document PDF très simple avec une seule page et du texte. Cet exemple illustre le cycle de base de la bibliothèque : création du document, ajout d'une page, choix d'une police, écriture de texte et sauvegarde du fichier.
use printpdf::*;
use std::fs::File;
use std::io::BufWriter;
fn main() {
// Créer un nouveau document PDF
let (doc, page1, layer1) = PdfDocument::new(
"Mon premier PDF en Rust",
Mm(210.0), // Largeur de la page (A4)
Mm(297.0), // Hauteur de la page (A4)
"Layer 1", // Nom du calque
);
// Obtenir la police par défaut (Helvetica intégrée)
let font = doc.add_builtin_font(BuiltinFont::Helvetica).unwrap();
// Commencer à travailler sur le calque
let current_layer = doc.get_page(page1).get_layer(layer1);
// Utiliser la police en taille 48pt, couleur noire
current_layer.use_text("Bonjour, PDF Rust !", 48.0, Mm(50.0), Mm(200.0), &font);
// Sauvegarder le document dans un fichier
let file = Aussi dans la bibliothèque
Création d'outils CLI sur Node.js : aperçu des frameworks Commander, Yargs et Inquirer
Générateur de QR codes en Rust : bibliothèque qr_code
Validation des données en Rust : bibliothèques et approches pour un code fiable
Cryptographie dans Node.js : chiffrement et hachage avec crypto