Génération de PDF en C++ : aperçu des bibliothèques et outils

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Génération de PDF en C++ : aperçu des bibliothèques et outils



La génération de documents PDF est l'une des tâches fréquentes dans le développement logiciel. Rapports, factures, certificats, documentation — tout cela nécessite un outil fiable et flexible pour créer des PDF. Dans l'écosystème C++, il existe plusieurs solutions éprouvées, chacune ayant ses propres points forts. Dans cet article, nous examinerons les principales bibliothèques et outils qui vous aideront à implémenter la génération de PDF en C++, et nous fournirons des exemples de code pour chacun d'eux.



1. PoDoFo — une bibliothèque puissante pour travailler avec les PDF



PoDoFo est une bibliothèque multiplateforme en C++ conçue pour créer, éditer et analyser des documents PDF. Elle offre un contrôle total sur la structure du fichier, prend en charge les polices, les images, les annotations et les formulaires.



Fonctionnalités principales :

  • Création de PDF à partir de zéro et édition de documents existants
  • Prise en charge des polices TrueType, Type1 et des polices PDF standard
  • Intégration d'images (PNG, JPEG, TIFF)
  • Travail avec des tableaux et des documents multipages
  • Prise en charge de la compression et du chiffrement


Exemple de code : création d'un PDF simple avec du texte

#include <podofo/podofo.h>using namespace PoDoFo;

int main() { PdfMemDocument document; PdfPage* page = document.CreatePage(PdfPage::CreateStandardPageSize(PdfPageSize::A4)); PdfPainter painter; painter.SetPage(page);

// Définir la police PdfFont* font = document.CreateFont("Arial"); painter.SetFont(font, 12.0);

// Dessiner le texte painter.DrawText("Bonjour, monde PDF!", 50, 700);

painter.FinishPage(); document.Save("output_podofo.pdf"); return 0;}


2. libharu — une bibliothèque légère et rapide



libharu (ou HPDF) est une bibliothèque minimaliste en C pour la génération de PDF. Bien qu'elle soit écrite en C, elle fonctionne parfaitement avec C++ et ne nécessite pas de dépendances complexes. libharu est idéale pour les tâches simples où une prise en charge complète de la norme PDF n'est pas nécessaire.



Fonctionnalités principales :

  • Prise en charge du texte, des images, des lignes et des rectangles
  • Travail avec le cyrillique via les encodages
  • Compression des pages
  • Licence Zlib (libre)


Exemple de code : création d'un PDF avec une image

#include <hpdf.h>#include <stdio.h>

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);

// Charger l'image HPDF_Image image = HPDF_LoadJpegImageFromFile(pdf, "example.jpg"); HPDF_Page_DrawImage(page, image, 50, 500, 200, 150);

// Texte HPDF_Page_BeginText(page); HPDF_Page_SetFontAndSize(page, HPDF_GetFont(pdf, "Helvetica", NULL), 14); HPDF_Page_TextOut(page, 50, 700, "Exemple avec image"); HPDF_Page_EndText(page);

HPDF_SaveToFile(pdf, "output_libharu.pdf"); HPDF_Free(pdf); return 0;}


3. wkhtmltopdf — conversion de HTML en PDF



wkhtmltopdf n'est pas une bibliothèque au sens classique, mais un utilitaire en ligne de commande basé sur WebKit. Cependant, on peut facilement l'appeler depuis du code C++ via system() ou popen(). C'est un choix idéal si vous devez transformer un modèle HTML en document PDF tout en conservant les styles et la mise en page.



Fonctionnalités principales :

  • Prise en charge de CSS, JavaScript, des tableaux et des images
  • Configuration des marges, de l'orientation, des en-têtes et pieds de page
  • Haute qualité de rendu
  • Simplicité d'intégration


Exemple de code : appel de wkhtmltopdf depuis C++

#include <cstdlib>#include <string>

int main() { std::string input = "report.html"; std::string output = "report.pdf"; std::string

Recommendations