Zum Fußzeileninhalt springen
PDF-WERKZEUGE

Wie man PDF-Dateien in C++ erstellt

PDF (Portable Document Format)-Dateien werden häufig verwendet, um Dokumente plattformübergreifend in einem einheitlichen Format zu teilen und zu bewahren. In diesem Artikel werden wir erkunden, wie man mit der wkhtmltopdf-Bibliothek PDF-Dateien in C++ erzeugt. Es handelt sich um ein Open-Source-Kommandozeilen-Tool, das dazu verwendet wird, HTML-Inhalte in PDF-Dateien zu konvertieren. Durch die Nutzung der Kraft dieser Bibliothek können wir programmatisch PDF-Dokumente aus HTML-Inhalten in unseren C++-Anwendungen erstellen.

WkhtmltoPdf-Bibliothek

wkhtmltopdf ist ein Open-Source-Kommandozeilen-Tool und Rendering-Engine, das HTML-Webseiten oder HTML-Inhalte in PDF-Dokumente umwandelt. Es nutzt die WebKit-Rendering-Engine, um HTML, CSS und JavaScript zu analysieren und darzustellen, und generiert dann eine PDF-Datei basierend auf den gerenderten Inhalten.

"wkhtmltopdf C++ Bibliothek" (auch bekannt als "wkhtmltopdf C API"). Diese Bibliothek bietet eine C++-Schnittstelle zum wkhtmltopdf-Kommandozeilen-Tool, sodass Sie PDF-Dateien direkt in Ihren C++-Anwendungen aus HTML-Inhalten erstellen können. Lassen Sie uns den Schritt-für-Schritt-Prozess der HTML-zu-PDF-Konvertierung in C++ mit der Wkhtmltopdf-Bibliothek erkunden.

Voraussetzungen

Um PDF-Dateien in C++ zu erstellen, benötigen wir Folgendes:

  1. Einen C++-Compiler wie GCC oder Clang, der auf Ihrem System installiert ist. Sie können jede IDE verwenden, die C++-Programmierung unterstützt.
  2. wkhtmltopdf-Bibliothek heruntergeladen und installiert. Sie können die neueste Version von der offiziellen wkhtmltopdf-Website herunterladen und gemäß den Anweisungen Ihres Betriebssystems installieren.
  3. Grundkenntnisse in C++-Programmierung.

C++ PDF-Projekt in Code::Blocks erstellen

Erstellen Sie ein Projekt in Code::Blocks und folgen Sie dann den untenstehenden Schritten, um den Bibliotheksordner und die Datei zu verknüpfen. Wenn Sie eine andere IDE verwenden, können die Optionen abweichen, aber Sie müssen die heruntergeladene Bibliothek in Ihrem Projekt referenzieren, um es zum Laufen zu bringen.

1. Hinzufügen von Include-Ordnern in Suchverzeichnissen

Um sicherzustellen, dass Code::Blocks die erforderlichen Header-Dateien finden kann, müssen wir die Suchverzeichnisse einrichten.

  1. Klicken Sie im Menü auf "Projekt" und wählen Sie "Build-Optionen". Stellen Sie sicher, dass Sie "Debug" auswählen.
  2. Wählen Sie im Dialogfeld "Build-Optionen" die Registerkarte "Suchverzeichnisse".
  3. Klicken Sie unter 'Compiler' auf 'Hinzufügen'. Navigieren Sie zum Verzeichnis, in dem sich die wkhtmltox-Header-Dateien befinden (z. B. C:\Program Files\wkhtmltopdf\include), und wählen Sie dieses aus.
  4. Klicken Sie abschließend auf "OK", um das Dialogfeld zu schließen.

Wie man PDF-Dateien in C++ erstellt: Abbildung 1

2. das Linken der Bibliotheken in den Linker-Einstellungen

Um die wkhtmltox-Bibliothek zu verknüpfen, folgen Sie diesen Schritten:

  1. Klicken Sie erneut im Menü auf "Projekt" und wählen Sie "Build-Optionen". Stellen Sie sicher, dass Sie "Debug" auswählen.
  2. Wählen Sie im Dialogfeld "Build-Optionen" die Registerkarte "Linker-Einstellungen".
  3. Klicken Sie unter 'Bibliotheken verknüpfen' auf 'Hinzufügen'. Navigieren Sie zum Verzeichnis, in dem sich die wkhtmltox-Bibliotheksdateien befinden (z. B. C:\Program Files\wkhtmltopdf\lib), und wählen Sie die entsprechende Bibliotheksdatei aus.
  4. Klicken Sie auf 'Öffnen', um die Bibliothek hinzuzufügen.
  5. Klicken Sie abschließend auf "OK", um das Dialogfeld zu schließen.

Wie man PDF-Dateien in C++ erstellt: Abbildung 2

Schritte zur Erstellung einer PDF-Datei in C++ mit Wkhtmltopdf

1. Erforderliche Bibliotheken einbeziehen

Um zu beginnen, fügen wir zunächst die benötigten Header-Dateien ein, um die Funktionalitäten der wkhtmltopdf-Bibliothek in unserem C++-Programm zu nutzen. Binden Sie die folgenden Header-Dateien am Anfang Ihrer main.cpp Quelldatei ein:

#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. die GUI-Komponente deaktivieren

Wenn Sie nicht mit einer GUI arbeiten, müssen Sie diese deaktivieren, um Fehler zu vermeiden. Der Code sieht wie folgt aus:

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

3. initialisiere Einstellungen und Konverter

Als Nächstes müssen wir globale und objektspezifische Einstellungspointer sowie den wkhtmltopdf-Konverter initialisieren.

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. Hinzufügen von PDF-Inhalten

Erstellen wir nun einen HTML-String, um einige Inhalte in unser neu erstelltes PDF-Dokument einzufügen. Der Code sieht wie folgt aus:

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. HTML-String in PDF-Datei konvertieren

Wkhtmltopdf bietet eine Konvertierungsmethode, um HTML-Inhalte in PDF zu konvertieren. Hier ist der Codeausschnitt:

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

6. die Ausgabe als Speicherpuffer erhalten

Mit der wkhtmltopdf_get_output Funktion können wir die PDF-Daten als Speicherpufferstrom erhalten. Es gibt auch die Länge des PDFs zurück. Das folgende Beispiel führt diese Aufgabe aus:

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. PDF-Datei speichern

Der pdfData-Pointer enthält nun den Zeichenstrom des wkhtmltopdf_converters. Um in einer PDF-Datei zu speichern, geben wir zuerst den Dateipfad an, wo wir das PDF speichern möchten. Dann öffnen wir mit dem Ausgabedateistream die Datei im Binärmodus und schreiben die pdfData darauf, indem wir sie mit der Funktion reinterpret_cast umwandeln. Abschließend schließen wir die Datei.

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. Speicherplatz freimachen

Nachdem erfolgreich eine PDF-Datei erstellt wurde, ist es wichtig, die von Wkhtmltopdf belegten Ressourcen freizugeben, da sonst ein Speicherleck entsteht.

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. Den Code ausführen und eine PDF-Datei erzeugen

Nun bauen Sie das Projekt und führen den Code mit F9 aus. Die Ausgabe wird generiert und im Projektordner gespeichert. Das resultierende PDF sieht wie folgt aus:

Wie man PDF-Dateien in C++ erstellt: Abbildung 3

PDF-Datei in C# erstellen;

IronPDF

IronPDF ist eine .NET C# PDF-Bibliothek, die es Entwicklern ermöglicht, mühelos PDF-Dokumente aus HTML zu erstellen. Es bietet eine intuitive API, die den Prozess der Erstellung von PDF-Dateien aus HTML vereinfacht.

IronPDF ist robust und vielseitig, wenn es darum geht, mit PDFs zu arbeiten. Es erstellt nicht nur PDFs aus einfachen HTML-Dokumenten, sondern auch aus komplexen Webseiten mit CSS-Stil, JavaScript-Interaktionen und sogar dynamischen Inhalten. Darüber hinaus können Sie verschiedene PDF-Konverter entwickeln, indem Sie auf seine Konvertierungsmethoden schnell zugreifen.

Hier ist ein Beispielcode, um PDF mit IronPDF zu erstellen mittels HTML-String-zu-PDF-Konvertierung:

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");
$vbLabelText   $csharpLabel

Wir erstellen eine Instanz von ChromePdfRenderer um die HTML-Inhalte als PDF zu rendern. Wir rufen die RenderHtmlAsPdf-Methode auf dem renderer-Objekt auf und übergeben den HTML-String. Dies erzeugt das PDF-Dokument, das wir dann mittels der SaveAs-Methode speichern.

Wie man PDF-Dateien in C++ erstellt: Abbildung 4

Für weitere Details, wie man PDF aus verschiedenen Ressourcen mit IronPDF erstellt, besuchen Sie bitte die IronPDF-Codebeispiele-Seite.

Abschluss

In diesem Artikel erkundeten wir die PDF-Erzeugung in C++ mit der wkhtmltopdf C++ Bibliothek und lernten auch, wie man IronPDF verwendet, um PDF-Dokumente in C# zu erzeugen.

Mit IronPDF wird das Erstellen von PDF-Dateien aus HTML-Inhalten zu einer unkomplizierten Aufgabe in .NET-Framework-Sprachen. Sein umfangreiches Funktionsspektrum macht es zu einem wertvollen Werkzeug für Entwickler, die HTML zu PDF in ihren C#-Projekten umwandeln müssen. Ob es um das Erstellen von Berichten, Rechnungen oder sonstigen Dokumenten geht, die eine präzise HTML-zu-PDF-Konvertierung benötigen, IronPDF ist eine zuverlässige und effiziente Lösung.

IronPDF ist kostenlos für Entwicklungszwecke, aber für kommerzielle Nutzung muss es lizenziert werden. Es bietet auch einen kostenlosen Test für kommerzielle Zwecke, um seine vollständige Funktionalität auszuprobieren. Laden Sie IronPDF herunter und probieren Sie es selbst aus.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen