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 stellt eine C++-Schnittstelle für das Kommandozeilentool wkhtmltopdf bereit, mit der Sie direkt in Ihren C++-Anwendungen PDF-Dateien 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.

So erstellen Sie PDF-Dateien in C++: 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.

So erstellen Sie PDF-Dateien in C++: 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. Fügen Sie die folgenden Header-Dateien am Anfang Ihrer main.cpp Quellcodedatei 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 Objekt-Einstellungszeiger initialisieren und anschließend den wkhtmltopdf Konverter.

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 Funktion wkhtmltopdf_get_output können wir die PDF-Daten als Speicherpufferstrom abrufen. 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 Zeiger pdfData enthält nun den Zeichenstrom vom Zeiger wkhtmltopdf_converter. Um in einer PDF-Datei zu speichern, geben wir zuerst den Dateipfad an, wo wir das PDF speichern möchten. Anschließend öffnen wir mithilfe des Ausgabedateistreams die Datei im Binärmodus und schreiben pdfData hinein, indem wir sie mit der Funktion reinterpret_cast in den Typ 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:

So erstellen Sie PDF-Dateien in C++: 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. Sie bietet eine intuitive API, die den Prozess der PDF-Erstellung aus HTML erheblich vereinfacht.

IronPDF ist robust und vielseitig, wenn es darum geht, mit PDFs zu arbeiten. Die Bibliothek erstellt nicht nur PDFs aus einfachen HTML-Dokumenten, sondern auch aus komplexen Webseiten mit CSS-Formatierung, JavaScript-Interaktionen und sogar dynamischen Inhalten. Darüber hinaus können Sie verschiedene PDF-Konverter entwickeln, indem Sie schnell auf die Konvertierungsmethoden 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");
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

Wir erstellen eine Instanz von ChromePdfRenderer, um den HTML-Inhalt als PDF zu rendern. Wir rufen die Methode RenderHtmlAsPdf des Objekts renderer auf und übergeben die HTML-Zeichenkette. Dadurch wird das PDF-Dokument generiert, und anschließend speichern wir das PDF-Dokument mit der Methode SaveAs.

So erstellen Sie PDF-Dateien in C++: Abbildung 4

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

Fazit

In diesem Artikel haben wir die PDF-Erstellung in C++ mit der wkhtmltopdf-C++-Bibliothek untersucht und erläutert, wie IronPDF zur Erzeugung von PDF-Dokumenten in C# eingesetzt werden kann.

Mit IronPDF wird das Erstellen von PDF-Dateien aus HTML-Inhalten zu einer unkomplizierten Aufgabe in .NET-Framework-Sprachen. Das umfangreiche Funktionsspektrum macht IronPDF zu einem wertvollen Werkzeug für Entwickler, die HTML in PDF umwandeln müssen. Ob Berichte, Rechnungen oder andere Dokumente, die eine präzise HTML-zu-PDF-Konvertierung erfordern – IronPDF ist eine zuverlässige und effiziente Lösung.

IronPDF ist für Entwicklungszwecke kostenlos nutzbar; für die kommerzielle Nutzung ist eine Lizenzierung erforderlich. Darüber hinaus steht ein kostenloser Test für kommerzielle Zwecke zur Verfügung, um den vollen Funktionsumfang auszuprobieren. Laden Sie IronPDF herunter und überzeugen Sie sich selbst.

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

Iron Support Team

Wir sind 24 Stunden am Tag, 5 Tage die Woche online.
Chat
E-Mail
Rufen Sie mich an