PDF-Generierung in Swift (iOS/macOS): Überblick über Tools und Beispiele

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 Swift (iOS/macOS): Vollständige Anleitung



Die Erstellung von PDF-Dokumenten ist eine der Kernaufgaben bei der Entwicklung von Apps für iOS und macOS. Berichte, Rechnungen, Zertifikate, E-Books – all dies erfordert ein zuverlässiges und flexibles Werkzeug zur PDF-Generierung. Im Swift-Ökosystem gibt es mehrere Ansätze: von den integrierten Apple-Frameworks bis hin zu Drittanbieter-Bibliotheken mit erweiterten Funktionen. In diesem Artikel analysieren wir die wichtigsten Methoden zur PDF-Generierung, ihre Vor- und Nachteile und geben funktionierende Codebeispiele.



1. PDFKit – Integriertes Apple-Framework



PDFKit ist ein leistungsstarkes Framework von Apple, verfügbar ab iOS 11+ und macOS 10.13+. Es bietet eine hochwertige API zum Erstellen, Anzeigen und Bearbeiten von PDF-Dokumenten. Hauptfunktionen:

  • PDF-Erstellung aus UIView, UIImage oder Text
  • Hinzufügen von Anmerkungen, Formularen und Hyperlinks
  • Arbeiten mit mehrseitigen Dokumenten
  • Unterstützung von Core Graphics für benutzerdefinierte Zeichnungen


Beispiel zur PDF-Erstellung aus UIView:

import PDFKit

func generatePDF(from view: UIView) -> Data? { let pdfData = NSMutableData() UIGraphicsBeginPDFContextToData(pdfData, view.bounds, nil) UIGraphicsBeginPDFPage() guard let context = UIGraphicsGetCurrentContext() else { return nil } view.layer.render(in: context) UIGraphicsEndPDFContext() return pdfData as Data}


Diese Methode eignet sich, wenn Sie schnell eine bestehende Oberfläche „fotografieren" möchten. Für komplexe Layouts (Tabellen, Kopf- und Fußzeilen, benutzerdefinierte Schriftarten) ist es jedoch besser, Core Graphics direkt zu verwenden.



2. Core Graphics (Quartz 2D) – Low-Level-Lösung



Core Graphics gibt Ihnen die vollständige Kontrolle über den Zeichenprozess. Sie arbeiten mit dem PDF-Kontext, zeichnen Linien, Text, Bilder und verwalten Seiten. Dies ist die flexibelste, aber auch die aufwändigste Methode.



Beispiel zur Erstellung eines einfachen PDFs mit Text:

import UIKit

func createPDFWithText() -> Data? { let pageSize = CGRect(x: 0, y: 0, width: 612, height: 792) // A4 let data = NSMutableData() UIGraphicsBeginPDFContextToData(data, pageSize, nil) UIGraphicsBeginPDFPage() guard let context = UIGraphicsGetCurrentContext() else { return nil } let text = "Hallo, PDF-Welt!" let attributes: [NSAttributedString.Key: Any] = [ .font: UIFont.systemFont(ofSize: 24), .foregroundColor: UIColor.black ] text.draw(at: CGPoint(x: 50, y: 50), withAttributes: attributes) UIGraphicsEndPDFContext() return data as Data}


Für komplexe Dokumente (Tabellen, Bilder, Seitenzahlen) müssen Sie viel Hilfscode schreiben. Dafür erhalten Sie maximale Leistung und minimale Dateigröße.



3. TPPDF – Drittanbieter-Bibliothek mit offenem Quellcode



TPPDF (GitHub: techprimate/TPPDF) ist eine Swift-Bibliothek zur PDF-Generierung mit deklarativem Syntax. Sie unterstützt:

  • Text, Bilder, Tabellen, Listen
  • Kopf- und Fußzeilen, Seitenzahlen
  • Automatischen Inhaltsumbruch zwischen Seiten
  • Benutzerdefinierte Schriftarten, Farben, Rahmen


Installation über Swift Package Manager:

// Package.swiftdependencies: [    .package(url: "https://github.com/techprimate/TPPDF.git", from: "2.0.0")]


Beispiel zur Erstellung eines Dokuments mit Tabelle:

import TPPDF

func generateInvoice() -> Data? { let document = PDFDocument(format: .a4) // Überschrift hinzufügen document.add(text: "Rechnung Nr. 123", style: PDFTextStyle.heading1) // Tabelle erstellen let table = PDFTable(rows: 3, columns: 2) table[0][0].content = "Produkt" table[0][1].content = "Preis" table[1][

Empfehlungen