PDF-Generierung in Swift: Dokumentenerstellung für iOS und macOS

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 häufige Aufgabe in iOS- und macOS-Apps: von der Erstellung von Berichten und Rechnungen bis zum Datenexport und der Erstellung von E-Books. In Swift gibt es dafür mehrere integrierte und externe Werkzeuge. In diesem Artikel werden wir die wichtigsten Ansätze zur PDF-Generierung auf Apple-Plattformen, ihre Möglichkeiten und Anwendungsbeispiele im Detail besprechen.



Integrierte Apple-Frameworks



Das Apple-Ökosystem bietet leistungsstarke Werkzeuge für die Arbeit mit PDF ohne externe Abhängigkeiten. Die wichtigsten sind:



  • UIGraphicsPDFRenderer (iOS 10+) – moderne API zur PDF-Erstellung in UIKit.
  • PDFKit – Framework zum Anzeigen, Bearbeiten und Erstellen von PDF (verfügbar ab iOS 11+ und macOS 10.13+).
  • Core Graphics (Quartz 2D) – Low-Level C-basierte API zum Zeichnen und Generieren von PDF.


1. UIGraphicsPDFRenderer – einfacher und schneller Einstieg



Dies ist die bequemste Methode für iOS. Sie ermöglicht die Erstellung mehrseitiger PDFs durch Zeichnen mit UIKit (UIView, UIImage, Text usw.).



import UIKit

func generatePDF() -> Data? { let pageSize = CGRect(x: 0, y: 0, width: 595.2, height: 841.8) // A4 let renderer = UIGraphicsPDFRenderer(bounds: pageSize)

let data = renderer.pdfData { context in context.beginPage()

// Text zeichnen 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: 100), withAttributes: attributes)

// Bild zeichnen if let image = UIImage(named: "logo") { image.draw(in: CGRect(x: 50, y: 200, width: 200, height: 100)) }

// Zweite Seite context.beginPage() let text2 = "Dies ist die zweite Seite" text2.draw(at: CGPoint(x: 50, y: 50), withAttributes: attributes) }

return data}

// In Datei speichernif let pdfData = generatePDF() { let documentsPath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0] let pdfURL = documentsPath.appendingPathComponent("document.pdf") try? pdfData.write(to: pdfURL) print("PDF gespeichert: \\(pdfURL)")}


2. PDFKit – für fortgeschrittene Dokumentenarbeit



PDFKit bietet die Klassen PDFDocument und PDFPage. Es ist ideal für die Erstellung von PDFs aus formatiertem Text, Tabellen und Bildern. Es unterstützt die Arbeit mit Anmerkungen, Lesezeichen und Formularen.



import PDFKit

func createPDFWithPDFKit() -> PDFDocument { let document = PDFDocument()

// Seite über NSAttributedString erstellen let pageRect = CGRect(x: 0, y: 0, width: 612, height: 792) // US Letter let text = NSAttributedString(string: "Beispiel PDF mit PDFKitZweite Zeile") let page = PDFPage()

// Rendering in den Seitenkontext let renderer = UIGraphicsImageRenderer(bounds: pageRect) let image = renderer.image { ctx in text.draw(at: CGPoint(x: 72, y: 72)) }

// Seite aus Bild erstellen (vereinfacht) // Verwenden Sie in einem echten Projekt PDFPage mit drawBlock let finalPage = PDFPage(image: image) ?? PDFPage() document.insert(finalPage, at: 0)

return document}

// Speichernif let document = createPDFWithPDFKit() as? PDFDocument { let url = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0].appendingPathComponent("pdfkit_example.pdf") document.write(to: url)}


Wichtig: PDFKit ist nur ab iOS 11+/macOS 10.13+ verfügbar. Für ältere Versionen verwenden Sie UIGraphicsPDFRenderer.



3. Core Graphics (Quartz 2D) – maximale Kontrolle



Wenn Sie

Empfehlungen