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

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 Werkzeuge



Die Generierung von PDF-Dokumenten ist eine häufige Aufgabe in der Softwareentwicklung. Berichte, Rechnungen, Zertifikate, Dokumentationen – all dies erfordert ein zuverlässiges und flexibles Werkzeug zur PDF-Erstellung. Im C++-Ökosystem gibt es mehrere bewährte Lösungen, die jeweils ihre eigenen Stärken haben. In diesem Artikel betrachten wir die wichtigsten Bibliotheken und Werkzeuge, die Ihnen bei der Implementierung der PDF-Generierung in C++ helfen, und geben Codebeispiele für jede davon.



1. PoDoFo – Leistungsstarke Bibliothek für die Arbeit mit PDF



PoDoFo ist eine plattformübergreifende C++-Bibliothek zum Erstellen, Bearbeiten und Analysieren von PDF-Dokumenten. Sie bietet vollständige Kontrolle über die Dateistruktur und unterstützt Schriftarten, Bilder, Anmerkungen und Formulare.



Hauptfunktionen:

  • Erstellung von PDFs von Grund auf und Bearbeitung vorhandener Dokumente
  • Unterstützung für TrueType, Type1 und Standard-PDF-Schriftarten
  • Einbettung von Bildern (PNG, JPEG, TIFF)
  • Arbeit mit Tabellen und mehrseitigen Dokumenten
  • Unterstützung für Komprimierung und Verschlüsselung


Codebeispiel: Erstellung eines einfachen PDFs mit Text

#include <podofo/podofo.h>using namespace PoDoFo;

int main() { PdfMemDocument document; PdfPage* page = document.CreatePage(PdfPage::CreateStandardPageSize(PdfPageSize::A4)); PdfPainter painter; painter.SetPage(page);

// Schriftart festlegen PdfFont* font = document.CreateFont("Arial"); painter.SetFont(font, 12.0);

// Text zeichnen painter.DrawText("Hallo, PDF-Welt!", 50, 700);

painter.FinishPage(); document.Save("output_podofo.pdf"); return 0;}


2. libharu – Leichte und schnelle Bibliothek



libharu (oder HPDF) ist eine minimalistische C-Bibliothek zur PDF-Generierung. Obwohl sie in C geschrieben ist, funktioniert sie hervorragend mit C++ und erfordert keine komplexen Abhängigkeiten. libharu ist ideal für einfache Aufgaben, bei denen keine vollständige Unterstützung des PDF-Standards erforderlich ist.



Hauptfunktionen:

  • Unterstützung für Text, Bilder, Linien und Rechtecke
  • Arbeit mit kyrillischen Zeichen über Kodierungen
  • Seitenkomprimierung
  • Zlib-Lizenz (frei)


Codebeispiel: Erstellung eines PDFs mit einem Bild

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

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);

// Bild laden HPDF_Image image = HPDF_LoadJpegImageFromFile(pdf, "example.jpg"); HPDF_Page_DrawImage(page, image, 50, 500, 200, 150);

// Text HPDF_Page_BeginText(page); HPDF_Page_SetFontAndSize(page, HPDF_GetFont(pdf, "Helvetica", NULL), 14); HPDF_Page_TextOut(page, 50, 700, "Beispiel mit Bild"); HPDF_Page_EndText(page);

HPDF_SaveToFile(pdf, "output_libharu.pdf"); HPDF_Free(pdf); return 0;}


3. wkhtmltopdf – Konvertierung von HTML in PDF



wkhtmltopdf ist keine Bibliothek im klassischen Sinne, sondern ein Kommandozeilenwerkzeug, das auf WebKit basiert. Es kann jedoch einfach aus C++-Code über system() oder popen() aufgerufen werden. Dies ist die ideale Wahl, wenn Sie eine HTML-Vorlage unter Beibehaltung von Stilen und Layout in ein PDF-Dokument umwandeln müssen.



Hauptfunktionen:

  • Unterstützung für CSS, JavaScript, Tabellen und Bilder
  • Einstellung von Rändern, Ausrichtung, Kopf- und Fußzeilen
  • Hohe Rendering-Qualität
  • Einfache Integration


Codebeispiel: Aufruf von wkhtmltopdf aus C++

#include <cstdlib>#include <string>

int main() { std::string input = "report.html"; std::string output = "report.pdf"; std::string

Empfehlungen