Swift (iOS/macOS) में PDF रिपोर्ट जनरेशन
Apple प्लेटफ़ॉर्म पर PDF दस्तावेज़ बनाना व्यावसायिक ऐप्स, वित्तीय रिपोर्ट या दस्तावेज़ प्रबंधन प्रणाली विकसित करते समय प्रमुख कार्यों में से एक है। वेब स्टैक के विपरीत, जहां कई तृतीय-पक्ष लाइब्रेरीज़ का उपयोग किया जाता है, Swift इकोसिस्टम में PDF के साथ काम करने के लिए शक्तिशाली अंतर्निहित फ्रेमवर्क और विशेष तृतीय-पक्ष समाधान दोनों उपलब्ध हैं। इस लेख में, हम iOS और macOS के लिए Swift में PDF रिपोर्ट जनरेशन के सभी प्रमुख टूल्स पर विस्तार से चर्चा करेंगे।
Apple के अंतर्निहित फ्रेमवर्क
Apple PDF दस्तावेज़ बनाने के दो मुख्य तरीके प्रदान करता है: UIGraphicsPDFRenderer (UIKit के लिए) और PDFKit (मौजूदा PDF के साथ काम करने के लिए)। इसके अलावा, macOS में PDF समर्थन के साथ NSGraphicsContext उपलब्ध है।
UIGraphicsPDFRenderer (iOS 10+)
यह UIKit सामग्री से PDF जनरेट करने का प्रमुख टूल है। यह PDF पेज के संदर्भ में टेक्स्ट, इमेज, टेबल और मनमानी ग्राफिक्स बनाने की अनुमति देता है।
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() // शीर्षक let title = "बिक्री रिपोर्ट" let attributes: [NSAttributedString.Key: Any] = [ .font: UIFont.boldSystemFont(ofSize: 24), .foregroundColor: UIColor.darkGray ] title.draw(at: CGPoint(x: 50, y: 50), withAttributes: attributes) // सामग्री let textAttributes: [NSAttributedString.Key: Any] = [ .font: UIFont.systemFont(ofSize: 14) ] data.draw(at: CGPoint(x: 50, y: 100), withAttributes: textAttributes) // विभाजक रेखा 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 एक उच्च-स्तरीय फ्रेमवर्क है जो न केवल PDF बनाने बल्कि मौजूदा PDF को संपादित करने की भी अनुमति देता है। यह एनोटेशन, फॉर्म, बुकमार्क और बहु-पृष्ठ दस्तावेज़ों के साथ काम करने का समर्थन करता है।
import PDFKit
func createPDFWithText() -> PDFDocument { let page = PDFPage() let pdfDocument = PDFDocument() // टेक्स्ट के साथ पेज बनाएँ let text = "PDFKit आसानी से टेक्स्ट और एनोटेशन जोड़ने की अनुमति देता है" 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}Swift के लिए तृतीय-पक्ष लाइब्रेरीज़
हालांकि अंतर्निहित उपकरण अधिकांश कार्यों को कवर करते हैं, ऐसी स्थितियाँ होती हैं जहाँ विशेष कार्यक्षमता की आवश्यकता होती है: टेम्पलेट के साथ काम करना, SwiftUI से PDF में निर्यात करना या जटिल लेआउट का समर्थन करना।
SwiftUI और PDF (iOS 14+, macOS 11+)
iOS 14 से शुरू करके, ImageRenderer का उपयोग करके SwiftUI व्यू को PDF में बदला जा सकता है:
import SwiftUI
struct ReportView: View { var body: some View { VStack(alignment: .leading) { Text("मासिक रिपोर्ट") .font(.largeTitle) .foregroundColor(.blue) Text("अगस्त 2024 का डेटा") .font(.headline) Divider() Text("राजस्व: 1 234 567 ₽") .font(.body) } .padding() }}
func generatePDFFromSwiftUI() -> Data { let vie