Passer au contenu du pied de page
OUTILS PDF

Comment convertir HTML en PDF en C++

La capacité de convertir des fichiers ou du contenu HTML en pages PDF est une fonctionnalité précieuse dans de nombreuses applications. En C++, il peut être assez fastidieux de créer une application à partir de zéro pour générer des fichiers au format HTML vers PDF. Dans cet article, nous explorerons comment convertir HTML en PDF en C++ en utilisant la bibliothèque wkhtmltopdf.

Bibliothèque WKHTMLTOPDF

wkhtmltopdf est un outil en ligne de commande open-source qui transforme sans effort les pages en texte simple HTML en documents PDF de haute qualité. En tirant parti de ses fonctionnalités dans les programmes C++, nous pouvons facilement convertir du contenu de chaîne HTML en format PDF. Explorons le processus étape par étape de conversion de page HTML en PDF en C++ en utilisant la bibliothèque wkhtmltopdf.

Prérequis

Pour créer un convertisseur de fichier HTML en PDF en C++, assurez-vous que les prérequis suivants sont remplis :

  1. Un compilateur C++ comme GCC ou Clang installé sur votre système.
  2. bibliothèque wkhtmltopdf 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++.

Créer un projet C++ HtmltoPdf dans Code::Blocks

Pour créer un projet de conversion PDF en C++ dans Code::Blocks, suivez ces étapes :

  1. Ouvrez l'IDE Code::Blocks.
  2. Allez dans le menu "File" et sélectionnez "New" puis "Project" pour ouvrir l'assistant de nouveau projet.
  3. Dans l'assistant de nouveau projet, sélectionnez "Console Application".
  4. Sélectionnez le langage C++.
  5. Définissez le titre du projet et l'emplacement où vous souhaitez le sauvegarder. Cliquez sur "Next" pour continuer.
  6. Sélectionnez le compilateur C++ approprié et l'objectif de construction, tel que Debug ou Release. Cliquez sur "Finish" pour créer le projet.

Configuration des répertoires de recherche

Pour garantir que Code::Blocks peut trouver les fichiers d'en-tête nécessaires, nous devons configurer les répertoires 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 "Build options", sélectionnez l'onglet "Search directories".
  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 convertir HTML en PDF en C++ : Figure 1 - Répertoires de recherche

Liaison des bibliothèques

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

  1. Cliquez de nouveau sur le menu "Project" dans la barre de menus et sélectionnez "Build options". Assurez-vous de sélectionner "Débogage".
  2. Dans la boîte de dialogue "Build options", sélectionnez l'onglet "Linker settings".
  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 convertir HTML en PDF en C++ : Figure 2 - Liaison des bibliothèques

Steps to Easily Convert HTML to PDF in C++

Étape 1 : Inclure la bibliothèque pour convertir des fichiers HTML

Pour commencer, incluez les fichiers d'en-tête nécessaires pour utiliser les fonctionnalités de la bibliothèque wkhtmltopdf dans votre programme C++. Incluez les fichiers d'en-tête suivants au début du fichier source main.cpp comme indiqué dans l'exemple suivant :

#include <iostream>
#include <fstream>
#include <string>
#include <wkhtmltox/pdf.h>
#include <iostream>
#include <fstream>
#include <string>
#include <wkhtmltox/pdf.h>
C++

Étape 2 : Initialisation du convertisseur

Pour convertir HTML en PDF, nous devons initialiser le convertisseur wkhtmltopdf. Le code est le suivant :

// Initialize the wkhtmltopdf library
wkhtmltopdf_init(false);

// Create global settings object
wkhtmltopdf_global_settings* gs = wkhtmltopdf_create_global_settings();

// Create object settings object
wkhtmltopdf_object_settings* os = wkhtmltopdf_create_object_settings();

// Create the PDF converter with global settings
wkhtmltopdf_converter* converter = wkhtmltopdf_create_converter(gs);
// Initialize the wkhtmltopdf library
wkhtmltopdf_init(false);

// Create global settings object
wkhtmltopdf_global_settings* gs = wkhtmltopdf_create_global_settings();

// Create object settings object
wkhtmltopdf_object_settings* os = wkhtmltopdf_create_object_settings();

// Create the PDF converter with global settings
wkhtmltopdf_converter* converter = wkhtmltopdf_create_converter(gs);
C++

Étape 3 : Définition du contenu HTML

Maintenant, fournissons le contenu HTML qui doit être converti en PDF. Vous pouvez soit charger un fichier HTML, soit fournir directement la chaîne.

std::string htmlString = "<html><body><h1>Hello, World!</h1></body></html>";

// Add the HTML content to the converter
wkhtmltopdf_add_object(converter, os, htmlString.c_str());
std::string htmlString = "<html><body><h1>Hello, World!</h1></body></html>";

// Add the HTML content to the converter
wkhtmltopdf_add_object(converter, os, htmlString.c_str());
C++

Étape 4 : Conversion de HTML en PDF

Avec le convertisseur et le contenu HTML prêts, nous pouvons procéder à la conversion du HTML en fichier PDF. Utilisez l'extrait de code suivant :

// Perform the actual conversion
if (!wkhtmltopdf_convert(converter)) {
    std::cerr << "Conversion failed!" << std::endl;
}
// Perform the actual conversion
if (!wkhtmltopdf_convert(converter)) {
    std::cerr << "Conversion failed!" << std::endl;
}
C++

Étape 5 : Obtention du résultat sous forme de mémoire tampon

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

// Retrieve the PDF data in memory buffer
const unsigned char* pdfData;
int pdfLength = wkhtmltopdf_get_output(converter, &pdfData);
// Retrieve the PDF data in memory buffer
const unsigned char* pdfData;
int pdfLength = wkhtmltopdf_get_output(converter, &pdfData);
C++

Étape 6 : Sauvegarde du fichier PDF

Une fois la conversion terminée, nous devons sauvegarder le fichier PDF généré sur le disque. Spécifiez le chemin du fichier où vous souhaitez enregistrer le PDF. Ensuite, à l'aide d'un flux de fichier de sortie, ouvrez le fichier en mode binaire et écrivez le pdfData dedans. Enfin, fermez le fichier :

const char* outputPath = "file.pdf";
std::ofstream outputFile(outputPath, std::ios::binary);

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

// Write the PDF data to the file
outputFile.write(reinterpret_cast<const char*>(pdfData), pdfLength);
outputFile.close();
C++

Étape 7 : Nettoyage

Après avoir converti HTML en PDF, il est essentiel de nettoyer les ressources allouées par wkhtmltopdf :

// Clean up the converter and settings
wkhtmltopdf_destroy_converter(converter);
wkhtmltopdf_destroy_object_settings(os);
wkhtmltopdf_destroy_global_settings(gs);

// Deinitialize the wkhtmltopdf library
wkhtmltopdf_deinit();

std::cout << "PDF saved successfully." << std::endl;
// Clean up the converter and settings
wkhtmltopdf_destroy_converter(converter);
wkhtmltopdf_destroy_object_settings(os);
wkhtmltopdf_destroy_global_settings(gs);

// Deinitialize the wkhtmltopdf library
wkhtmltopdf_deinit();

std::cout << "PDF saved successfully." << std::endl;
C++

Étape 8 : Exécutez le code et générez 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 convertir HTML en PDF en C++ : Figure 3 - Résultat PDF

Fichier HTML vers fichier PDF en C#

IronPDF

IronPDF HTML-to-PDF Conversion Library est une bibliothèque robuste .NET et .NET Core C# qui permet aux développeurs de générer facilement des documents PDF à partir de contenu HTML. Elle fournit une API simple et intuitive qui simplifie le processus de conversion des pages web HTML en PDF, en faisant un choix populaire pour diverses applications et cas d'utilisation.

L'un des principaux avantages de IronPDF est sa polyvalence. Elle prend en charge non seulement la conversion de documents HTML simples, mais aussi de pages web complexes avec styles CSS, 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.

Voici l'exemple de code pour convertir HTML String en PDF en utilisant IronPDF en C# :

using IronPdf;

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

// Create PDF content 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 PDF content 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 PDF content 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

Le résultat PDF :

Comment convertir HTML en PDF en C++ : Figure 4 - Résultat IronPDF

Pour plus de détails sur comment convertir différents fichiers HTML, URLs de pages web et images en PDF, veuillez visiter ces Exemples de code HTML vers PDF.

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 API intuitive et son ensemble de fonctionnalités étendu en font un outil précieux pour les développeurs souhaitant 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 une utilisation commerciale, il doit être sous licence. Il fournit également un Essai gratuit de la fonctionnalité complète d'IronPDF pour un usage commercial afin de tester sa fonctionnalité complète. Vous pouvez télécharger le logiciel depuis Télécharger IronPDF.

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