Génération de PDF en C++ : aperçu des bibliothèques et exemples pratiques
La génération de documents PDF est l'une des tâches fréquentes dans le développement d'applications d'entreprise, de systèmes de reporting et de gestion documentaire. Bien que C++ ne dispose pas de prise en charge native du format PDF, il existe plusieurs bibliothèques matures permettant de créer, modifier et restituer des fichiers PDF. Dans cet article, nous examinerons trois outils populaires : libharu, PoDoFo et wkhtmltopdf. Pour chacun, nous fournirons un exemple de code et décrirons les fonctionnalités clés.
1. libharu — génération PDF légère et rapide
libharu (Haru PDF) est une bibliothèque multiplateforme en C pur, parfaitement adaptée aux projets C++. Elle ne dépend d'aucune bibliothèque graphique externe, prend en charge Unicode (UTF-8), l'intégration de polices (TrueType) et le travail avec des images (JPEG, PNG). Le scénario principal est la création programmatique de documents « à partir de zéro ».
Installation
Téléchargez le code source depuis GitHub et compilez-le avec CMake :
mkdir build && cd buildcmake .. -DLIBHPDF_SHARED=ONmakesudo make installExemple : création d'un PDF simple avec du texte
#include <hpdf.h>#include <cstdio>
int main() { HPDF_Doc pdf = HPDF_New(NULL, NULL); HPDF_Page page = HPDF_AddPage(pdf); HPDF_Page_SetSize(page, HPDF_PAGE_SIZE_A4, HPDF_PAGE_PORTRAIT);
// Police const char* font_name = HPDF_LoadTTFontFromFile(pdf, "arial.ttf", HPDF_TRUE); HPDF_Font font = HPDF_GetFont(pdf, font_name, "UTF-8"); HPDF_Page_SetFontAndSize(page, font, 14);
// Texte HPDF_Page_BeginText(page); HPDF_Page_TextOut(page, 50, 750, "Bonjour le monde ! PDF depuis C++."); HPDF_Page_EndText(page);
HPDF_SaveToFile(pdf, "output.pdf"); HPDF_Free(pdf); printf("PDF créé : output.pdf"); return 0;}Fonctionnalités de libharu
- Création de documents multipages
- Graphiques vectoriels (lignes, rectangles, courbes)
- Intégration d'images JPEG/PNG
- Prise en charge des signets (outline) et des annotations
- Compression du contenu des pages
2. PoDoFo — travail avancé avec PDF
PoDoFo est une bibliothèque C++ offrant un contrôle total sur la structure du PDF. Elle permet non seulement de créer, mais aussi de modifier des documents existants, d'extraire du texte, de gérer les métadonnées et le chiffrement. PoDoFo utilise CMake et nécessite une configuration minimale.
Installation (Ubuntu/Debian)
sudo apt install libpodofo-devExemple : ajout de texte sur une page
#include <podofo/podofo.h>using namespace PoDoFo;
int main() { PdfMemDocument document; document.SetPdfVersion(PdfVersion::V1_4); document.GetMetadata().SetTitle("Document PoDoFo");
PdfPage* page = document.CreatePage(PdfPage::CreateStandardPageSize(PdfPageSize::A4)); PdfPainter painter; painter.SetCanvas(*page);
PdfFont* font = document.CreateFont("Arial", false, false, false); font->SetFontSize(16); painter.SetFont(font); painter.DrawText(50, 700, "Généré avec PoDoFo !");
painter.FinishDrawing(); document.Save("podofo_example.pdf"); return 0;}Points forts de PoDoFo
- Prise en charge de PDF/A (format d'archivage)
- Chiffrement et définition de mots de passe
- Extraction de texte et d'images depuis un PDF
- Travail avec les formulaires (AcroForms)
- Modification de PDF existants (ajout/suppression de pages)
3. wkhtmltopdf — HTML vers PDF via C++
wkhtmltopdf est un utilitaire en ligne de commande qui convertit des pages HTML en PDF à l'aide du moteur WebKit. Pour C++, vous pouvez l'appeler via system() ou <
Aussi dans la bibliothèque
reflect-metadata TypeScript : guide complet avec exemples
Coroutines pour Kotlin : guide complet avec exemples
Génération de rapports PDF en PHP : aperçu des bibliothèques et exemples
GraphQL sur Kotlin : Aperçu des bibliothèques et outils pour le développement serveur