PDFKit का उपयोग करके Swift (iOS/macOS) में PDF रिपोर्ट जनरेशन
PDF दस्तावेज़ बनाना मोबाइल और डेस्कटॉप एप्लिकेशन में एक सामान्य कार्य है। Apple प्लेटफ़ॉर्म (iOS, macOS, watchOS, tvOS) पर इसके लिए बिल्ट-इन फ्रेमवर्क PDFKit का उपयोग किया जाता है। यह प्रोग्रामेटिक रूप से PDF फ़ाइलों को जनरेट करने, प्रदर्शित करने और संपादित करने की अनुमति देता है। इस लेख में, हम देखेंगे कि Swift का उपयोग करके एक पूर्ण PDF रिपोर्ट कैसे बनाई जाए: टेक्स्ट, टेबल, इमेज और कस्टमाइज़ेबल पेजों के साथ।
PDFKit क्या है?
PDFKit Apple का एक फ्रेमवर्क है जो मानक iOS/macOS SDK का हिस्सा है। यह PDF के साथ काम करने के लिए क्लास प्रदान करता है:
PDFDocument— पूरे दस्तावेज़ का प्रतिनिधित्व।PDFPage— एक अलग पेज।PDFView— स्क्रीन पर PDF प्रदर्शित करना।UIPrintPageRenderer(iOS के लिए) — Core Graphics ड्राइंग के माध्यम से पेज जनरेशन।
रिपोर्ट जनरेशन के लिए, आमतौर पर UIPrintPageRenderer का उपयोग किया जाता है या PDF संदर्भ में सीधे Core Graphics के माध्यम से ड्रा किया जाता है। दूसरा तरीका अधिक लचीलापन देता है, लेकिन अधिक कोड की आवश्यकता होती है।
प्रोजेक्ट तैयार करना
Xcode खोलें, iOS या macOS के लिए एक नया प्रोजेक्ट बनाएं। सुनिश्चित करें कि आपने PDFKit मॉड्यूल इम्पोर्ट किया है:
import PDFKitimport UIKit // iOS के लिएmacOS के लिए import Cocoa और NSView के साथ संबंधित कार्य की आवश्यकता होगी।
विधि 1: UIPrintPageRenderer के माध्यम से PDF जनरेशन (iOS)
यह विधि तब उपयोगी है जब आप HTML मार्कअप या जटिल लेआउट का उपयोग करना चाहते हैं। UIPrintPageRenderer आपको UIPrintFormatter के माध्यम से पेज रेंडर करने की अनुमति देता है।
func generatePDFUsingRenderer() -> Data? { let renderer = UIPrintPageRenderer() // A4 पेज साइज सेट करना let pageSize = CGRect(x: 0, y: 0, width: 595.2, height: 841.8) // पॉइंट में renderer.setValue(pageSize, forKey: "paperRect") renderer.setValue(pageSize, forKey: "printableRect") // रिपोर्ट के साथ HTML स्ट्रिंग बनाना let htmlString = """ <h1>बिक्री रिपोर्ट</h1> <p>दिनांक: 2025-03-17</p> <table border="1"> <tr><th>उत्पाद</th><th>मात्रा</th><th>मूल्य</th></tr> <tr><td>लैपटॉप</td><td>5</td><td>50000</td></tr> <tr><td>माउस</td><td>20</td><td>1500</td></tr> </table> """ let formatter = UIMarkupTextPrintFormatter(markupText: htmlString) renderer.addPrintFormatter(formatter, startingAtPageAt: 0) // PDF में रेंडर करना let pdfData = NSMutableData() UIGraphicsBeginPDFContextToData(pdfData, .zero, nil) for pageIndex in 0..<renderer.numberOfPages { UIGraphicsBeginPDFPage() renderer.drawPage(at: pageIndex, in: UIGraphicsGetCurrentContext()!) } UIGraphicsEndPDFContext() return pdfData as Data}फ़ंक्शन को कॉल करें और परिणाम सहेजें:
if let pdfData = generatePDFUsingRenderer() { let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask) let fileURL = paths[0].appendingPathComponent("report.pdf") try? pdfData.write(to: fileURL) print("PDF सहेजा गया: \\(fileURL)")}विधि 2: Core Graphics के माध्यम से ड्राइंग (iOS/macOS)
यह विधि अधिक निम्न-स्तरीय है, लेकिन प्रत्येक तत्व पर पूर्ण नियंत्रण देती है। यह macOS के लिए उपयुक्त है, जहाँ UIPrintPageRenderer उपलब्ध नहीं है।
func generatePDFWithCoreGraphics() -> Data? { let pdfData = NSMutableData() let pageRect = CGRect(x: 0, y: 0, width: 612, height: 792) // US Letter guard let consumer = CGDataConsumer(data: pdfData), let pdfContext = CGContext(consumer: consu पुस्तकालय में भी
Rust में कार्य अनुसूचक: एक विश्वसनीय job scheduler का निर्माण
C++ पर SMS भेजना: API लाइब्रेरी LibCurl और REST अनुरोध
RxJS के साथ JavaScript (Node.js) में रिएक्टिव प्रोग्रामिंग
जावास्क्रिप्ट (Node.js) में लॉगिंग: आपके प्रोजेक्ट के लिए सर्वोत्तम समाधान