Passer au contenu du pied de page
OUTILS PDF

Comment créer des fichiers PDF en C++

Les fichiers PDF (Portable Document Format) sont largement utilisés pour partager et préserver des documents dans un format cohérent sur différentes plateformes. Dans cet article, nous allons explorer comment générer des fichiers PDF en C++ en utilisant la bibliothèque wkhtmltopdf. C'est un outil open-source en ligne de commande, utilisé pour convertir le contenu HTML en fichiers PDF. En tirant parti de la puissance de cette bibliothèque, nous pouvons créer des documents PDF à partir de contenu HTML dans nos applications C++.

Bibliothèque WkhtmltoPdf

wkhtmltopdf est un outil en ligne de commande open-source et un moteur de rendu qui convertit des pages web HTML ou du contenu HTML en documents PDF. Il utilise le moteur de rendu WebKit pour analyser et rendre le HTML, le CSS et le JavaScript, puis génère un fichier PDF basé sur le contenu rendu.

"Bibliothèque C++ wkhtmltopdf" (aussi connue sous le nom de "wkhtmltopdf C API"). Cette bibliothèque fournit une interface C++ à l'outil en ligne de commande wkhtmltopdf, permettant de créer des fichiers PDF à partir de contenu HTML directement dans vos applications C++. Examinons maintenant le processus étape par étape de conversion HTML en PDF en C++ en utilisant la bibliothèque Wkhtmltopdf.

Prérequis

Pour créer des fichiers PDF en C++, nous avons besoin des éléments suivants :

  1. Un compilateur C++ comme GCC ou Clang installé sur votre système. Vous pouvez utiliser n'importe quel IDE qui prend en charge la programmation C++.
  2. Bibliothèque wkhtmltopdf téléchargée et installée. Vous pouvez télécharger la dernière version depuis le site officiel de wkhtmltopdf et l'installer selon les instructions de votre système d'exploitation.
  3. Connaissances de base en programmation C++.

Projet de Création PDF C++ dans Code::Blocks

Créez un projet dans Code::Blocks puis suivez les étapes ci-dessous pour lier le dossier et le fichier de la bibliothèque. Si vous utilisez un autre IDE, les options peuvent être différentes, mais vous devez référencer la bibliothèque téléchargée dans votre projet pour qu'elle fonctionne.

1. Ajouter le dossier include dans les Directoires de Recherche

Pour garantir que Code::Blocks puisse trouver les fichiers d'en-tête nécessaires, nous devons configurer les directoires de recherche.

  1. Cliquez sur le menu "Projet" dans la barre de menu et sélectionnez "Options de compilation". Assurez-vous de sélectionner "Débogage".
  2. Dans la boîte de dialogue "Options de compilation", sélectionnez l'onglet "Directoires de recherche".
  3. Sous l'onglet "Compilateur", cliquez sur le bouton "Ajouter".
  4. Parcourez le répertoire où se trouvent les fichiers d'en-tête wkhtmltox (par ex., C:\Program Files\wkhtmltopdf\include), et sélectionnez-le.
  5. Enfin, cliquez sur "OK" pour fermer la boîte de dialogue.

Comment Créer des Fichiers PDF en C++ : Figure 1

2. Liaison des Bibliothèques dans les Paramètres du Linker

Pour lier la bibliothèque wkhtmltox, suivez ces étapes :

  1. Encore une fois, cliquez sur le menu "Projet" dans la barre de menu et sélectionnez "Options de compilation". Assurez-vous de sélectionner "Débogage".
  2. Dans la boîte de dialogue "Options de compilation", sélectionnez l'onglet "Paramètres du Linker".
  3. Sous l'onglet "Linker les bibliothèques", cliquez sur le bouton "Ajouter".
  4. Parcourez le répertoire où se trouvent les fichiers de la bibliothèque wkhtmltox (par ex., C:\Program Files\wkhtmltopdf\lib), et sélectionnez le fichier de bibliothèque approprié.
  5. Cliquez sur "Ouvrir" pour ajouter la bibliothèque à votre projet.
  6. Enfin, cliquez sur "OK" pour fermer la boîte de dialogue.

Comment Créer des Fichiers PDF en C++ : Figure 2

Étapes pour Créer un PDF en C++ en utilisant Wkhtmltopdf

1. Inclure les Bibliothèques Nécessaires

Pour commencer, nous inclurons d'abord les fichiers d'en-tête nécessaires pour utiliser les fonctionnalités de la bibliothèque wkhtmltopdf dans notre programme C++. Incluez les fichiers d'en-tête suivants au début de votre fichier source main.cpp :

#include <iostream>
#include <fstream>
#include <string>
#include <wkhtmltox/pdf.h> // Include wkhtmltopdf library headers
#include <iostream>
#include <fstream>
#include <string>
#include <wkhtmltox/pdf.h> // Include wkhtmltopdf library headers
C++

2. Désactiver le Composant GUI

Si vous ne travaillez pas avec une interface graphique, vous devez la désactiver pour éviter les erreurs. Le code est le suivant :

wkhtmltopdf_init(false); // Initialize the wkhtmltopdf library in non-GUI mode
wkhtmltopdf_init(false); // Initialize the wkhtmltopdf library in non-GUI mode
C++

3. Initialiser les Paramètres et le Convertisseur

Ensuite, nous devons initialiser les pointeurs de paramètres globaux et d'objet, puis le convertisseur wkhtmltopdf.

wkhtmltopdf_global_settings* gs = wkhtmltopdf_create_global_settings();
wkhtmltopdf_object_settings* os = wkhtmltopdf_create_object_settings();
wkhtmltopdf_converter* converter = wkhtmltopdf_create_converter(gs);
wkhtmltopdf_global_settings* gs = wkhtmltopdf_create_global_settings();
wkhtmltopdf_object_settings* os = wkhtmltopdf_create_object_settings();
wkhtmltopdf_converter* converter = wkhtmltopdf_create_converter(gs);
C++

4. Ajout de Contenu au PDF

Maintenant, créons une chaîne HTML pour remplir du contenu dans notre nouveau document PDF créé. Le code est le suivant :

std::string htmlString = "<html><body><h1>Create a PDF in C++ using WKHTMLTOPDF Library</h1></body></html>";
wkhtmltopdf_add_object(converter, os, htmlString.c_str());
std::string htmlString = "<html><body><h1>Create a PDF in C++ using WKHTMLTOPDF Library</h1></body></html>";
wkhtmltopdf_add_object(converter, os, htmlString.c_str());
C++

5. Convertir la Chaîne HTML en Fichier PDF

Wkhtmltopdf fournit une méthode de conversion pour convertir le contenu HTML en PDF. Voici l'extrait de code :

wkhtmltopdf_convert(converter); // Converts HTML content to PDF
wkhtmltopdf_convert(converter); // Converts HTML content to PDF
C++

6. Obtenir la Sortie en tant que Mémoire Tampon

Avec la fonction wkhtmltopdf_get_output, nous pouvons obtenir les données PDF sous forme de flux de mémoire tampon. Elle renvoie également la longueur du PDF. L'exemple suivant réalisera cette tâche :

const unsigned char* pdfData;
int pdfLength = wkhtmltopdf_get_output(converter, &pdfData); // Get PDF data and length
const unsigned char* pdfData;
int pdfLength = wkhtmltopdf_get_output(converter, &pdfData); // Get PDF data and length
C++

7. Sauvegarder le Fichier PDF

Le pointeur pdfData contiendra maintenant le flux de caractères du wkhtmltopdf_converter. Pour enregistrer dans un fichier PDF, nous spécifierons d'abord le chemin du fichier où nous voulons enregistrer le PDF. Ensuite, en utilisant le flux de sortie de fichier, nous ouvrons le fichier en mode binaire et écrivons le pdfData dedans en le typecastant avec la fonction reinterpret_cast. Enfin, nous fermons le fichier.

const char* outputPath = "file.pdf";
std::ofstream outputFile(outputPath, std::ios::binary); // Open file in binary mode
outputFile.write(reinterpret_cast<const char*>(pdfData), pdfLength); // Write PDF data
outputFile.close(); // Close the file
const char* outputPath = "file.pdf";
std::ofstream outputFile(outputPath, std::ios::binary); // Open file in binary mode
outputFile.write(reinterpret_cast<const char*>(pdfData), pdfLength); // Write PDF data
outputFile.close(); // Close the file
C++

8. Libérer la Mémoire

Après avoir créé avec succès un fichier PDF, il est essentiel de nettoyer les ressources allouées par Wkhtmltopdf, sinon cela entraînera une fuite de mémoire.

wkhtmltopdf_destroy_converter(converter); // Destroy the converter
wkhtmltopdf_destroy_object_settings(os);  // Destroy object settings
wkhtmltopdf_destroy_global_settings(gs);  // Destroy global settings
wkhtmltopdf_deinit();                     // Deinitialize the library

std::cout << "PDF created successfully." << std::endl; // Inform the user
wkhtmltopdf_destroy_converter(converter); // Destroy the converter
wkhtmltopdf_destroy_object_settings(os);  // Destroy object settings
wkhtmltopdf_destroy_global_settings(gs);  // Destroy global settings
wkhtmltopdf_deinit();                     // Deinitialize the library

std::cout << "PDF created successfully." << std::endl; // Inform the user
C++

9. Exécuter le Code et Générer le Fichier PDF

Maintenant, construisez le projet et exécutez le code en utilisant F9. La sortie est générée et enregistrée dans le dossier du projet. Le PDF résultant est le suivant :

Comment Créer des Fichiers PDF en C++ : Figure 3

Créer un Fichier PDF en C#

IronPDF

IronPDF est une bibliothèque PDF .NET C# qui permet aux développeurs de créer des documents PDF à partir de HTML facilement. Elle fournit une API intuitive qui simplifie le processus de création de fichiers PDF à partir de HTML.

IronPDF est robuste et polyvalent lorsqu'il s'agit de travailler avec des PDF. Il ne se contente pas de créer un PDF à partir de documents HTML simples, mais également de pages web complexes avec du style CSS, des interactions JavaScript, et même du contenu dynamique. De plus, vous pouvez développer différents convertisseurs PDF avec un accès rapide à ses méthodes de conversion.

Here's an example code to create PDF with IronPDF using HTML string to PDF conversion:

using IronPdf;

// Instantiate Renderer
var renderer = new ChromePdfRenderer();

// Create a PDF from an HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");

// Export to a file or Stream
pdf.SaveAs("output.pdf");
using IronPdf;

// Instantiate Renderer
var renderer = new ChromePdfRenderer();

// Create a PDF from an HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");

// Export to a file or Stream
pdf.SaveAs("output.pdf");
Imports IronPdf

' Instantiate Renderer
Private renderer = New ChromePdfRenderer()

' Create a PDF from an HTML string using C#
Private pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>")

' Export to a file or Stream
pdf.SaveAs("output.pdf")
$vbLabelText   $csharpLabel

Nous créons une instance de ChromePdfRenderer pour rendre le contenu HTML en tant que PDF. Nous appelons la méthode RenderHtmlAsPdf sur l'objet renderer et passons la chaîne HTML. Cela génère le document PDF, puis nous sauvegardons le document PDF en utilisant la méthode SaveAs.

Comment Créer des Fichiers PDF en C++ : Figure 4

For more details on how to create a PDF from various resources with IronPDF, please visit this IronPDF code examples page.

Conclusion

Dans cet article, nous avons exploré la génération de PDF en C++ en utilisant la Bibliothèque C++ wkhtmltopdf et avons également appris à utiliser IronPDF pour générer des documents PDF en C#.

Avec IronPDF, la génération de fichiers PDF à partir de contenu HTML devient une tâche simple dans les langages du .NET Framework. Son ensemble de fonctionnalités étendu en fait un outil précieux pour les développeurs ayant besoin de convertir HTML en PDF dans leurs projets C#. Que ce soit pour générer des rapports, des factures, ou tout autre document nécessitant une conversion HTML en PDF précise, IronPDF est une solution fiable et efficace.

IronPDF est gratuit pour le développement mais pour un usage commercial, il doit être licencié. Il propose également une version d'essai gratuite pour un usage commercial permettant de tester toutes ses fonctionnalités. Téléchargez IronPDF et essayez-le vous-même.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite