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 Auch in der Bibliothek
Psr/Log PHP: Vollständige Anleitung mit Beispielen
Datenvalidierung in C++: Bibliotheken, Muster und Codebeispiele
WebSocket-Bibliotheken für TypeScript: ws und Socket.IO – vollständiger Leitfaden