Swift (iOS/macOS) में PDF निर्माण: पूरी गाइड
\n\nPDF दस्तावेज़ बनाना iOS और macOS के लिए ऐप डेवलपमेंट में एक प्रमुख कार्य है। रिपोर्ट, चालान, प्रमाणपत्र, ई-पुस्तकें - इन सबके लिए PDF निर्माण के लिए एक विश्वसनीय और लचीले उपकरण की आवश्यकता होती है। Swift इकोसिस्टम में कई दृष्टिकोण हैं: Apple के अंतर्निहित फ्रेमवर्क से लेकर उन्नत सुविधाओं वाली तृतीय-पक्ष लाइब्रेरी तक। इस लेख में, हम PDF निर्माण के मुख्य तरीकों, उनके फायदे और नुकसान पर चर्चा करेंगे, और काम करने वाले कोड उदाहरण भी देंगे।
\n\n1. PDFKit — Apple का अंतर्निहित फ्रेमवर्क
\n\nPDFKit Apple का एक शक्तिशाली फ्रेमवर्क है, जो iOS 11+ और macOS 10.13+ पर उपलब्ध है। यह PDF दस्तावेज़ बनाने, प्रदर्शित करने और संपादित करने के लिए एक उच्च-स्तरीय API प्रदान करता है। मुख्य विशेषताएं:
\n- \n
- UIView, UIImage या टेक्स्ट से PDF बनाना \n
- एनोटेशन, फॉर्म और हाइपरलिंक जोड़ना \n
- बहु-पृष्ठ दस्तावेज़ों के साथ काम करना \n
- कस्टम ड्राइंग के लिए Core Graphics का समर्थन \n
UIView से PDF बनाने का उदाहरण:
\nimport PDFKit\n\nfunc generatePDF(from view: UIView) -> Data? {\n let pdfData = NSMutableData()\n UIGraphicsBeginPDFContextToData(pdfData, view.bounds, nil)\n UIGraphicsBeginPDFPage()\n guard let context = UIGraphicsGetCurrentContext() else { return nil }\n view.layer.render(in: context)\n UIGraphicsEndPDFContext()\n return pdfData as Data\n}\n\n\nयह विधि तब उपयुक्त है जब आपको मौजूदा इंटरफ़ेस को जल्दी से "फ़ोटो" लेना हो। हालांकि, जटिल लेआउट (टेबल, हेडर-फुटर, कस्टम फ़ॉन्ट) के लिए सीधे Core Graphics का उपयोग करना बेहतर है।
\n\n2. Core Graphics (Quartz 2D) — निम्न-स्तरीय समाधान
\n\nCore Graphics ड्राइंग प्रक्रिया पर पूर्ण नियंत्रण देता है। आप PDF कॉन्टेक्स्ट के साथ काम करते हैं, लाइनें, टेक्स्ट, इमेज बनाते हैं, पेजों को प्रबंधित करते हैं। यह सबसे लचीला, लेकिन सबसे अधिक श्रम-गहन तरीका भी है।
\n\nटेक्स्ट के साथ सरल PDF बनाने का उदाहरण:
\nimport UIKit\n\nfunc createPDFWithText() -> Data? {\n let pageSize = CGRect(x: 0, y: 0, width: 612, height: 792) // A4\n let data = NSMutableData()\n UIGraphicsBeginPDFContextToData(data, pageSize, nil)\n UIGraphicsBeginPDFPage()\n \n guard let context = UIGraphicsGetCurrentContext() else { return nil }\n let text = "नमस्ते, PDF दुनिया!"\n let attributes: [NSAttributedString.Key: Any] = [\n .font: UIFont.systemFont(ofSize: 24),\n .foregroundColor: UIColor.black\n ]\n text.draw(at: CGPoint(x: 50, y: 50), withAttributes: attributes)\n \n UIGraphicsEndPDFContext()\n return data as Data\n}\n\n\nजटिल दस्तावेज़ों (टेबल, इमेज, पेज नंबरिंग) के लिए आपको बहुत सारा सहायक कोड लिखना होगा। लेकिन इसके बदले आपको अधिकतम प्रदर्शन और न्यूनतम फ़ाइल आकार मिलता है।
\n\n3. TPPDF — ओपन सोर्स तृतीय-पक्ष लाइब्रेरी
\n\nTPPDF (GitHub: techprimate/TPPDF) एक Swift लाइब्रेरी है जो घोषणात्मक सिंटैक्स के साथ PDF निर्माण के लिए है। यह समर्थन करती है:
\n- \n
- टेक्स्ट, इमेज, टेबल, सूचियाँ \n
- हेडर-फुटर, पेज नंबरिंग \n
- पृष्ठों के बीच सामग्री का स्वचालित स्थानांतरण \n
- कस्टम फ़ॉन्ट, रंग, सीमाएँ \n
Swift Package Manager के माध्यम से इंस्टॉलेशन:
\n// Package.swift\ndependencies: [\n .package(url: "https://github.com/techprimate/TPPDF.git", from: "2.0.0")\n]\n\n\nटेबल के साथ दस्तावेज़ बनाने का उदाहरण:
\nimport TPPDF\n\nfunc generateInvoice() -> Data? {\n let document = PDFDocument(format: .a4)\n \n // शीर्षक जोड़ें\n document.add(text: "चालान #123", style: PDFTextStyle.heading1)\n \n // एक टेबल बनाएँ\n let table = PDFTable(rows: 3, columns: 2)\n table[0][0].content = "उत्पाद"\n table[0][1].content = "मूल्य"\n table[1][ पुस्तकालय में भी
Event Bus और Observer Pattern Kotlin में: उदाहरण सहित गाइड
जावा में तिथियों के साथ कार्य: पुस्तकालयों और उपकरणों का अवलोकन
Go (Golang) में रेट लिमिटिंग: लाइब्रेरीज़, पैटर्न और कार्यान्वयन उदाहरण
जावास्क्रिप्ट (Node.js) में तिथियों के साथ कार्य करना: लोकप्रिय लाइब्रेरीज़
Go (Golang) में ZIP/आर्काइव के साथ काम करना — पूर्ण गाइड