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][ Auch in der Bibliothek
PDF-Generierung in TypeScript: Bibliotheken und Tools für Node.js
Datenvalidierung in TypeScript: Bibliotheken, Ansätze und Codebeispiele
OAuth-Client für C# (.NET): Bibliothek IdentityModel und Integration mit OAuth 2.0