PDF-Generierung in C++: Überblick über Bibliotheken und praktische Beispiele
Die Generierung von PDF-Dokumenten ist eine häufige Aufgabe bei der Entwicklung von Unternehmensanwendungen, Berichtssystemen und Dokumentenmanagement. Obwohl C++ keine integrierte Unterstützung für das PDF-Format bietet, gibt es mehrere ausgereifte Bibliotheken, mit denen Sie PDF-Dateien erstellen, bearbeiten und rendern können. In diesem Artikel betrachten wir drei beliebte Werkzeuge: libharu, PoDoFo und wkhtmltopdf. Für jedes geben wir ein Codebeispiel und beschreiben die wichtigsten Funktionen.
1. libharu – Leichte und schnelle PDF-Generierung
libharu (Haru PDF) ist eine plattformübergreifende Bibliothek in reinem C, die sich hervorragend für C++-Projekte eignet. Sie ist unabhängig von externen Grafikbibliotheken, unterstützt Unicode (UTF-8), die Einbettung von Schriftarten (TrueType) und die Arbeit mit Bildern (JPEG, PNG). Das Hauptszenario ist die programmatische Erstellung von Dokumenten „von Grund auf".
Installation
Laden Sie den Quellcode von GitHub herunter und bauen Sie ihn mit CMake:
mkdir build && cd buildcmake .. -DLIBHPDF_SHARED=ONmakesudo make installBeispiel: Erstellen eines einfachen PDFs mit Text
#include <hpdf.h>#include <cstdio>
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);
// Schriftart const char* font_name = HPDF_LoadTTFontFromFile(pdf, "arial.ttf", HPDF_TRUE); HPDF_Font font = HPDF_GetFont(pdf, font_name, "UTF-8"); HPDF_Page_SetFontAndSize(page, font, 14);
// Text HPDF_Page_BeginText(page); HPDF_Page_TextOut(page, 50, 750, "Hallo Welt! PDF aus C++."); HPDF_Page_EndText(page);
HPDF_SaveToFile(pdf, "output.pdf"); HPDF_Free(pdf); printf("PDF erstellt: output.pdf"); return 0;}Funktionen von libharu
- Erstellung mehrseitiger Dokumente
- Vektorgrafiken (Linien, Rechtecke, Kurven)
- Einbettung von JPEG/PNG-Bildern
- Unterstützung von Lesezeichen (Outlines) und Anmerkungen
- Kompression des Seiteninhalts
2. PoDoFo – Fortgeschrittene Arbeit mit PDF
PoDoFo ist eine C++-Bibliothek mit vollständiger Kontrolle über die PDF-Struktur. Sie ermöglicht nicht nur die Erstellung, sondern auch die Bearbeitung vorhandener Dokumente, das Extrahieren von Text, die Verwaltung von Metadaten und die Verschlüsselung. PoDoFo verwendet CMake und erfordert nur geringe Einrichtung.
Installation (Ubuntu/Debian)
sudo apt install libpodofo-devBeispiel: Hinzufügen von Text zu einer Seite
#include <podofo/podofo.h>using namespace PoDoFo;
int main() { PdfMemDocument document; document.SetPdfVersion(PdfVersion::V1_4); document.GetMetadata().SetTitle("PoDoFo-Dokument");
PdfPage* page = document.CreatePage(PdfPage::CreateStandardPageSize(PdfPageSize::A4)); PdfPainter painter; painter.SetCanvas(*page);
PdfFont* font = document.CreateFont("Arial", false, false, false); font->SetFontSize(16); painter.SetFont(font); painter.DrawText(50, 700, "Generiert mit PoDoFo!");
painter.FinishDrawing(); document.Save("podofo_example.pdf"); return 0;}Stärken von PoDoFo
- Unterstützung von PDF/A (Archivformat)
- Verschlüsselung und Passwortschutz
- Extrahieren von Text und Bildern aus PDFs
- Arbeit mit Formularen (AcroForms)
- Bearbeiten vorhandener PDFs (Hinzufügen/Entfernen von Seiten)
3. wkhtmltopdf – HTML zu PDF über C++
wkhtmltopdf ist ein Konsolenwerkzeug, das HTML-Seiten mit der WebKit-Engine in PDF konvertiert. Für C++ können Sie es über system() oder <
Auch in der Bibliothek
Aufgabenwarteschlangen für TypeScript: Bull, Agenda und Bee-Queue
StackExchange.Redis für C# (.NET): Komplettguide mit Beispielen
Testcontainers .NET für C# (.NET): Komplettguide mit Praxisbeispielen
HTML-Parsing in PHP: DOMDocument, SimpleXML und cURL für Web-Scraping