PDF-Generierung in C++: Überblick über Bibliotheken und Codebeispiele

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

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 install


Beispiel: 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-dev


Beispiel: 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 <

Empfehlungen