Kotlin में PDF जनरेशन: लाइब्रेरी का अवलोकन और व्यावहारिक उदाहरण
\n\nPDF दस्तावेज़ जनरेट करना आधुनिक अनुप्रयोगों में एक सामान्य कार्य है: रिपोर्ट और चालान बनाने से लेकर डेटा निर्यात करने तक। Kotlin, एक आधुनिक JVM भाषा होने के नाते, डेवलपर्स को PDF के साथ काम करने के लिए शक्तिशाली Java लाइब्रेरी तक पहुँच प्रदान करता है। इस लेख में, हम Kotlin में PDF जनरेशन के लिए मुख्य टूल, उनकी विशेषताएँ और उपयोग के उदाहरण देखेंगे।
\n\nKotlin में PDF के साथ काम करने के लिए लोकप्रिय लाइब्रेरी
\n\nचूँकि Kotlin Java के साथ पूरी तरह से संगत है, आप PDF के लिए किसी भी Java लाइब्रेरी का उपयोग कर सकते हैं। सबसे लोकप्रिय विकल्प:
\n\n- \n
- iText (संस्करण 7/8) — एक वाणिज्यिक लाइब्रेरी जिसका स्रोत कोड खुला है (AGPL)। यह व्यापक क्षमताएँ प्रदान करता है: शुरू से दस्तावेज़ बनाना, फॉर्म, वॉटरमार्क, एन्क्रिप्शन के साथ काम करना। वाणिज्यिक उपयोग के लिए लाइसेंस खरीदना आवश्यक है। \n
- Apache PDFBox — एक मुफ्त लाइब्रेरी (Apache 2.0)। यह PDF बनाने, टेक्स्ट निकालने, फॉर्म भरने की अनुमति देता है। यह iText की तुलना में निचले स्तर पर काम करता है, लेकिन सामग्री पर पूर्ण नियंत्रण देता है। \n
- OpenPDF — iText 4 का एक फोर्क (LGPL/MPL)। बुनियादी कार्यों के लिए एक हल्की लाइब्रेरी: टेक्स्ट, टेबल, इमेज बनाना। यह जटिल लेआउट के बिना सरल प्रोजेक्ट के लिए उपयुक्त है। \n
- Jetpack Compose + PDF — एक आधुनिक दृष्टिकोण: आप Compose में UI का वर्णन करते हैं, फिर Android लाइब्रेरी (जैसे,
android.graphics.pdf.PdfDocument) का उपयोग करके इसे PDF में बदलते हैं। यह Android अनुप्रयोगों के लिए उपयुक्त है। \n
प्रोजेक्ट सेटअप और निर्भरताएँ जोड़ना
\n\nप्रदर्शन के लिए हम iText 7 और Apache PDFBox का उपयोग करेंगे। build.gradle.kts में निर्भरताएँ जोड़ें:
// iText 7 के लिए\nimplementation("com.itextpdf:itext7-core:8.0.4")\n\n// Apache PDFBox के लिए\nimplementation("org.apache.pdfbox:pdfbox:3.0.2")\n\nउदाहरण 1: टेक्स्ट के साथ PDF बनाना (iText 7)
\n\nएक शीर्षक और पैराग्राफ के साथ एक सरल दस्तावेज़ बनाएँ:
\n\nimport com.itextpdf.kernel.pdf.PdfDocument\nimport com.itextpdf.kernel.pdf.PdfWriter\nimport com.itextpdf.layout.Document\nimport com.itextpdf.layout.element.Paragraph\n\nfun createSimplePdf() {\n val writer = PdfWriter("output.pdf")\n val pdf = PdfDocument(writer)\n val document = Document(pdf)\n\n document.add(Paragraph("Привет, мир!"))\n document.add(Paragraph("Это PDF, созданный с помощью iText в Kotlin."))\n\n document.close()\n}\n\nउदाहरण 2: तालिकाओं और सिरिलिक वर्णमाला के साथ काम करना (iText 7)
\n\nसिरिलिक वर्णमाला के सही प्रदर्शन के लिए, Unicode का समर्थन करने वाला एक फ़ॉन्ट लोड करना आवश्यक है। मानक फ़ॉन्ट FreeSans या कोई भी TTF फ़ॉन्ट उपयोग करें:
import com.itextpdf.kernel.font.PdfFontFactory\nimport com.itextpdf.kernel.pdf.PdfDocument\nimport com.itextpdf.kernel.pdf.PdfWriter\nimport com.itextpdf.layout.Document\nimport com.itextpdf.layout.element.Cell\nimport com.itextpdf.layout.element.Paragraph\nimport com.itextpdf.layout.element.Table\n\nfun createTableWithCyrillic() {\n val writer = PdfWriter("table.pdf")\n val pdf = PdfDocument(writer)\n val document = Document(pdf)\n\n // सिरिलिक वर्णमाला का समर्थन करने वाला फ़ॉन्ट लोड करना\n val font = PdfFontFactory.createFont("fonts/FreeSans.ttf", "Identity-H")\n document.setFont(font)\n\n val table = Table(2) // दो कॉलम\n table.addCell(Cell().add(Paragraph("Имя")))\n table.addCell(Cell().add(Paragraph("Возраст")))\n table.addCell(Cell().add(Paragraph("Анна")))\n table.addCell(Cell().add(Paragraph("25")))\n table.addCell(Cell().add(Paragraph("Иван")))\n table.addCell(Cell().add(Paragraph("30")))\n\n document.add(table)\n document.close()\n}\n\nउदाहरण 3: इमेज के साथ PDF बनाना (Apache PDFBox)
\n\nPDFBox को निर्देशांक के साथ अधिक विस्तृत कार्य की आवश्यकता होती है, लेकिन यह लचीलापन देता है:
\n\nपुस्तकालय में भी
अनुशंसाएँ