Generierung von PDF-Berichten in Swift: Bibliotheken und Frameworks für iOS/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

Generierung von PDF-Berichten in Swift (iOS/macOS)



Die Erstellung von PDF-Dokumenten auf Apple-Plattformen ist eine der Kernaufgaben bei der Entwicklung von Geschäftsanwendungen, Finanzberichten oder Dokumentenmanagementsystemen. Im Gegensatz zum Web-Stack, wo viele Drittanbieter-Bibliotheken verwendet werden, gibt es im Swift-Ökosystem für die Arbeit mit PDF sowohl leistungsstarke integrierte Frameworks als auch spezialisierte Drittanbieter-Lösungen. In diesem Artikel werden wir alle wichtigen Werkzeuge zur Generierung von PDF-Berichten in Swift für iOS und macOS im Detail besprechen.



Integrierte Apple-Frameworks



Apple bietet zwei Hauptmethoden zur Erstellung von PDF-Dokumenten: UIGraphicsPDFRenderer (für UIKit) und PDFKit (für die Arbeit mit vorhandenen PDFs). Außerdem ist unter macOS NSGraphicsContext mit PDF-Unterstützung verfügbar.



UIGraphicsPDFRenderer (iOS 10+)



Dies ist das wichtigste Werkzeug zur Generierung von PDFs aus UIKit-Inhalten. Es ermöglicht das Zeichnen von Text, Bildern, Tabellen und beliebiger Grafik im Kontext einer PDF-Seite.



import UIKit

func generateReport(data: String) -> Data { let pageSize = CGRect(x: 0, y: 0, width: 595.2, height: 841.8) // A4 let renderer = UIGraphicsPDFRenderer(bounds: pageSize) return renderer.pdfData { context in context.beginPage() // Titel let title = "Verkaufsbericht" let attributes: [NSAttributedString.Key: Any] = [ .font: UIFont.boldSystemFont(ofSize: 24), .foregroundColor: UIColor.darkGray ] title.draw(at: CGPoint(x: 50, y: 50), withAttributes: attributes) // Inhalt let textAttributes: [NSAttributedString.Key: Any] = [ .font: UIFont.systemFont(ofSize: 14) ] data.draw(at: CGPoint(x: 50, y: 100), withAttributes: textAttributes) // Trennlinie context.cgContext.setStrokeColor(UIColor.lightGray.cgColor) context.cgContext.setLineWidth(1) context.cgContext.move(to: CGPoint(x: 50, y: 90)) context.cgContext.addLine(to: CGPoint(x: 545, y: 90)) context.cgContext.strokePath() }}


PDFKit (iOS 11+, macOS 10.13+)



PDFKit ist ein höherwertiges Framework, das nicht nur das Erstellen, sondern auch das Bearbeiten vorhandener PDFs ermöglicht. Es unterstützt Anmerkungen, Formulare, Lesezeichen und die Arbeit mit mehrseitigen Dokumenten.



import PDFKit

func createPDFWithText() -> PDFDocument { let page = PDFPage() let pdfDocument = PDFDocument() // Erstelle eine Seite mit Text let text = "PDFKit ermöglicht das einfache Hinzufügen von Text und Anmerkungen" let textAnnotation = PDFAnnotation( bounds: CGRect(x: 50, y: 700, width: 500, height: 100), forType: .freeText, withProperties: nil ) textAnnotation.contents = text textAnnotation.font = UIFont.systemFont(ofSize: 18) page.addAnnotation(textAnnotation) pdfDocument.insert(page, at: 0) return pdfDocument}


Drittanbieter-Bibliotheken für Swift



Obwohl die integrierten Werkzeuge die meisten Aufgaben abdecken, gibt es Situationen, in denen spezialisierte Funktionalität benötigt wird: Arbeit mit Vorlagen, Export in PDF aus SwiftUI oder Unterstützung für komplexes Layout.



SwiftUI und PDF (iOS 14+, macOS 11+)



Ab iOS 14 können SwiftUI-Views mit ImageRenderer in PDF konvertiert werden:



import SwiftUI

struct ReportView: View { var body: some View { VStack(alignment: .leading) { Text("Monatsbericht") .font(.largeTitle) .foregroundColor(.blue) Text("Daten für August 2024") .font(.headline) Divider() Text("Umsatz: 1.234.567 €") .font(.body) } .padding() }}

func generatePDFFromSwiftUI() -> Data { let vie

Empfehlungen