PDF-Erstellung in C++: Bibliotheken, Werkzeuge 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-Erstellung in C++: Überblick über Bibliotheken und Werkzeuge



Die Erstellung von PDF-Dokumenten ist eine häufige Aufgabe in der Softwareentwicklung mit C++. Von der Erstellung einfacher Berichte bis hin zu komplexen mehrseitigen Dokumenten mit Tabellen, Bildern und Grafiken. In diesem Artikel betrachten wir die gängigsten Bibliotheken und Werkzeuge für die Arbeit mit PDF in C++, ihre Funktionen, Vor- und Nachteile und geben praktische Codebeispiele.



Warum ist PDF-Erstellung in C++ notwendig?

PDF (Portable Document Format) ist ein plattformunabhängiges Format, das das Layout eines Dokuments unabhängig von Gerät und Betriebssystem beibehält. In C++ wird die PDF-Erstellung benötigt für:

  • Erstellung von Berichten und Rechnungen in Geschäftsanwendungen
  • Generierung von Dokumentation aus Vorlagen
  • Export von Daten aus Datenbanken
  • Erstellung von Quittungen und Lieferscheinen in Buchhaltungssystemen


Wichtige Bibliotheken für die Arbeit mit PDF in C++



1. libharu (HARU PDF)

Eine der beliebtesten und am einfachsten zu verwendenden Bibliotheken zur PDF-Erstellung. In C geschrieben, bietet aber eine hervorragende C++-Schnittstelle. Ermöglicht die Erstellung von PDF-Dokumenten von Grund auf, das Hinzufügen von Text, Bildern, Linien, Rechtecken und Anmerkungen.

Besonderheiten:

  • Kleine Größe und hohe Leistung
  • Unterstützung von TrueType-Schriftarten
  • Seitenkomprimierung
  • Arbeit mit Bildern (JPEG, PNG)
  • Lizenz: ZLIB/Libpng (frei)

Beispiel für die Erstellung eines einfachen PDF:

#include <hpdf.h>#include <stdio.h>

int main() { HPDF_Doc pdf = HPDF_New(NULL, NULL); HPDF_Page page = HPDF_AddPage(pdf); // Seitengröße auf A4 einstellen HPDF_Page_SetSize(page, HPDF_PAGE_SIZE_A4, HPDF_PAGE_LANDSCAPE); // Text hinzufügen HPDF_Page_BeginText(page); HPDF_Page_SetFontAndSize(page, HPDF_GetFont(pdf, "Helvetica", NULL), 24); HPDF_Page_TextOut(page, 100, 500, "Hallo, Welt PDF in C++!"); HPDF_Page_EndText(page); // Dokument speichern HPDF_SaveToFile(pdf, "output.pdf"); HPDF_Free(pdf); return 0;}


2. PoDoFo

Eine moderne Open-Source-C++-Bibliothek für die Arbeit mit PDF. Unterstützt nicht nur die Erstellung, sondern auch die Bearbeitung vorhandener PDF-Dateien. Gut dokumentiert und aktiv gepflegt.

Besonderheiten:

  • Sauberer C++-Code (moderne Standards)
  • Unterstützung von Unicode und Kyrillisch
  • Arbeit mit Formularen, Lesezeichen, Metadaten
  • Lesen und Schreiben von PDF
  • Lizenz: LGPL

Beispiel für die Erstellung eines PDF mit einer Tabelle:

#include <podofo/podofo.h>

using namespace PoDoFo;

int main() { PdfMemDocument document; PdfPage* page = document.CreatePage(PdfPage::CreateStandardPageSize(PdfPageSize::A4)); PdfPainter painter; painter.SetCanvas(*page); // Tabelle zeichnen painter.DrawRect(50, 700, 500, 30); painter.DrawText(60, 710, "Tabellenüberschrift"); // Speichern painter.FinishPage(); document.Save("table.pdf"); return 0;}


3. wkhtmltopdf

Keine Bibliothek im klassischen Sinne, sondern ein Kommandozeilenwerkzeug, das die WebKit-Engine zur Konvertierung von HTML in PDF verwendet. In C++ kann es über system() aufgerufen oder eine Wrapper-Bibliothek verwendet werden.

Besonderheiten:

  • Ideal für die PDF-Erstellung aus HTML-Vorlagen
  • Unterstützung von CSS, JavaScript, SVG
  • Hochwertiges Layout (wie im Browser)
  • Kopf- und Fußzeilen, Inhaltsverzeichnis, Seitenzahlen
  • Lizenz: LGPLv3

Beispiel für den Aufruf aus C++:

#include <cstdlib>

int main() { // HTML-Datei in PDF konvertieren int result = std::system("w

Empfehlungen