Swift (iOS/macOS) में PDF जनरेशन: UIGraphicsPDFRenderer, PDFKit और Core Graphics

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Swift (iOS/macOS) में PDF जनरेशन: सरल से जटिल तक



PDF दस्तावेज़ बनाना मोबाइल और डेस्कटॉप डेवलपमेंट में एक सामान्य कार्य है। Apple प्लेटफ़ॉर्म (iOS/macOS) पर बिल्ट-इन टूल्स बिना किसी तीसरे पक्ष की लाइब्रेरी के गुणवत्तापूर्ण PDF जनरेट करने की अनुमति देते हैं। इस लेख में हम तीन मुख्य दृष्टिकोणों पर चर्चा करेंगे: UIGraphicsPDFRenderer (आधुनिक और सरल), PDFKit (मौजूदा PDF के साथ काम करने के लिए) और Core Graphics (पूर्ण नियंत्रण के लिए)। सभी उदाहरण Swift में लिखे गए हैं और न्यूनतम बदलावों के साथ iOS और macOS दोनों के लिए उपयुक्त हैं।



1. UIGraphicsPDFRenderer — आधुनिक मानक



UIGraphicsPDFRenderer iOS 10 और macOS 10.12 में पेश किया गया था। यह मल्टी-पेज PDF बनाने के लिए एक उच्च-स्तरीय API प्रदान करता है। मुख्य लाभ: संदर्भ के साथ स्वचालित कार्य, मेटाडेटा समर्थन और उपयोग में आसानी।



मूल उदाहरण: टेक्स्ट के साथ PDF बनाना



import UIKit

func generateSimplePDF() -> Data? { let pageWidth: CGFloat = 612 // A4 let pageHeight: CGFloat = 792 let renderer = UIGraphicsPDFRenderer(bounds: CGRect(x: 0, y: 0, width: pageWidth, height: pageHeight)) let data = renderer.pdfData { context in // पहला पेज context.beginPage() let text = "नमस्ते, PDF दुनिया!" let attributes: [NSAttributedString.Key: Any] = [ .font: UIFont.systemFont(ofSize: 24), .foregroundColor: UIColor.black ] text.draw(at: CGPoint(x: 50, y: 50), withAttributes: attributes) // दूसरा पेज context.beginPage() let secondText = "यह दूसरा पेज है" secondText.draw(at: CGPoint(x: 50, y: 50), withAttributes: attributes) } return data}

// फ़ाइल में सहेजनाif let pdfData = generateSimplePDF() { let documentsPath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0] let pdfURL = documentsPath.appendingPathComponent("sample.pdf") try? pdfData.write(to: pdfURL) print("PDF सहेजा गया: \\(pdfURL)")}


उन्नत उदाहरण: तालिका और छवि



func generateInvoicePDF() -> Data {    let renderer = UIGraphicsPDFRenderer(bounds: CGRect(x: 0, y: 0, width: 612, height: 792))        return renderer.pdfData { context in        context.beginPage()                // लोगो बनाएं (यदि उपलब्ध हो)        if let logo = UIImage(named: "logo") {            logo.draw(in: CGRect(x: 50, y: 50, width: 100, height: 50))        }                // शीर्षक        let titleAttributes: [NSAttributedString.Key: Any] = [            .font: UIFont.boldSystemFont(ofSize: 28),            .foregroundColor: UIColor.darkGray        ]        "चालान #123".draw(at: CGPoint(x: 400, y: 50), withAttributes: titleAttributes)                // तालिका        let items = [("वस्तु", "मूल्य"), ("लैपटॉप", "1200$"), ("माउस", "25$")]        var yPosition: CGFloat = 200                for (name, price) in items {            let nameAttributes: [NSAttributedString.Key: Any] = [                .font: UIFont.systemFont(ofSize: 14),                .foregroundColor: UIColor.black            ]            name.draw(at: CGPoint(x: 100, y: yPosition), withAttributes: nameAttributes)            price.draw(at: CGPoint(x: 400, y: yPosition), withAttributes: nameAttributes)            yPosition += 30        }                // कुल        let totalAttributes: [NSAttributedString.Key: Any] = [            .font: UIFont.boldSystemFont(ofSize: 18),            .foregroundColor: UIColor.red        ]        "कुल: 1225$".draw(at: CGPoint(x: 350, y: yPosition + 20), withAttributes: totalAttributes)    }}


2. PDFKit — मौजूदा PDF और एनोटेशन के साथ काम करना



PDFKit एक अधिक शक्तिशाली फ्रेमवर्क है जो

अनुशंसाएँ