Kotlin में PDF जनरेशन: लाइब्रेरीज़ का अवलोकन और व्यावहारिक उदाहरण
Kotlin, JVM के लिए एक आधुनिक भाषा के रूप में, डेवलपर्स को PDF दस्तावेज़ों के साथ काम करने के लिए शक्तिशाली उपकरण प्रदान करता है। Java इकोसिस्टम के साथ पूर्ण संगतता के कारण, आप समय-परीक्षित लाइब्रेरीज़ जैसे iText और Apache PDFBox, साथ ही आधुनिक Kotlin फ्रेमवर्क का उपयोग कर सकते हैं। इस लेख में, हम Kotlin पर PDF जनरेशन के मुख्य दृष्टिकोणों पर चर्चा करेंगे, कोड उदाहरण देंगे और लोकप्रिय समाधानों की तुलना करेंगे।
PDF के साथ काम करने के लिए Kotlin क्यों?
Kotlin PDF के साथ काम करते समय Java की तुलना में कई लाभ प्रदान करता है:
- संक्षिप्त सिंटैक्स — दस्तावेज़ बनाने के लिए कम बॉयलरप्लेट कोड
- Null-सुरक्षा — nullable फ़ील्ड के साथ काम करते समय त्रुटियों का जोखिम कम करता है
- एक्सटेंशन फ़ंक्शन — लाइब्रेरीज़ की कार्यक्षमता बढ़ाने की अनुमति देते हैं
- DSL-बिल्डर — PDF संरचना का वर्णन करने के लिए आदर्श
- पूर्ण संगतता — सभी Java लाइब्रेरीज़ बिना किसी बदलाव के काम करती हैं
PDF जनरेशन के लिए मुख्य लाइब्रेरीज़
1. iText (iText 7 / iText 8)
iText — PDF के साथ काम करने के लिए सबसे लोकप्रिय वाणिज्यिक लाइब्रेरी। Kotlin के लिए Java इंटरऑप के माध्यम से उपलब्ध है। इसमें मॉड्यूल शामिल हैं:
kernel— PDF के साथ बुनियादी संचालनlayout— दस्तावेज़ का उच्च-स्तरीय निर्माणhtml2pdf— HTML को PDF में बदलनाpdfa— PDF/A समर्थन
Kotlin पर iText 7 के साथ एक सरल PDF बनाने का उदाहरण:
import com.itextpdf.kernel.pdf.PdfDocumentimport com.itextpdf.kernel.pdf.PdfWriterimport com.itextpdf.layout.Documentimport com.itextpdf.layout.element.Paragraphimport java.io.FileOutputStream
fun createSimplePdf() { val writer = PdfWriter(FileOutputStream("hello_kotlin.pdf")) val pdfDoc = PdfDocument(writer) val document = Document(pdfDoc) document.add(Paragraph("नमस्ते, Kotlin!")) document.add(Paragraph("यह iText 7 की मदद से बनाया गया PDF है")) document.close() println("PDF सफलतापूर्वक बनाया गया")}2. Apache PDFBox
Apache PDFBox — एक मुफ्त ओपन-सोर्स लाइब्रेरी। बुनियादी कार्यों के लिए उपयुक्त: बनाना, संपादित करना, टेक्स्ट निकालना। Kotlin में Java API के माध्यम से उपयोग किया जाता है।
PDFBox के साथ उदाहरण:
import org.apache.pdfbox.pdmodel.PDDocumentimport org.apache.pdfbox.pdmodel.PDPageimport org.apache.pdfbox.pdmodel.PDPageContentStreamimport org.apache.pdfbox.pdmodel.font.PDType1Fontimport java.io.File
fun createPdfWithBox() { val document = PDDocument() val page = PDPage() document.addPage(page) val contentStream = PDPageContentStream(document, page) contentStream.beginText() contentStream.setFont(PDType1Font.HELVETICA_BOLD, 14f) contentStream.newLineAtOffset(50f, 700f) contentStream.showText("PDFBox + Kotlin = ❤") contentStream.endText() contentStream.close() document.save(File("pdfbox_example.pdf")) document.close() println("दस्तावेज़ सहेजा गया")}3. PDF के लिए Kotlin DSL (KPDF)
KPDF — एक मूल Kotlin लाइब्रेरी जो DSL-बिल्डर का उपयोग करती है। यह आपको घोषणात्मक शैली में दस्तावेज़ का वर्णन करने की अनुमति देती है:
// काल्पनिक DSL के साथ उदाहरण (वास्तविक लाइब्रेरीज़ के अनुकूलन)fun generateInvoice() { pdfDocument { page { paragraph("चालान नंबर 123") { fontSize = 24 bold() } table { row { cell("उत्पाद"); cell("मूल्य") } row { cell("Kotlin परामर्श"); cell("5000 रुपये") } } } }.save("invoice.pdf")}