जावा में PDF जनरेशन: iText, Apache PDFBox और OpenPDF लाइब्रेरियों का अवलोकन
\nPDF दस्तावेज़ बनाना जावा में कॉर्पोरेट और वेब अनुप्रयोगों में एक सामान्य कार्य है: रिपोर्ट और चालान बनाने से लेकर डेटा निर्यात और ई-पुस्तकें बनाने तक। जावा में कई परिपक्व लाइब्रेरीज़ हैं, जिनमें से प्रत्येक की अपनी ताकत है। इस लेख में हम तीन मुख्य लाइब्रेरियों पर विचार करेंगे: iText, Apache PDFBox और OpenPDF, कोड उदाहरण देंगे और उपयुक्त उपकरण चुनने में मदद करेंगे।
\n\n1. iText — शक्तिशाली, लेकिन वाणिज्यिक लाइसेंस के साथ
\niText PDF के साथ काम करने के लिए सबसे लोकप्रिय लाइब्रेरी है। यह सामग्री पर पूर्ण नियंत्रण प्रदान करती है: टेक्स्ट, चित्र, तालिकाएँ, फ़ॉर्म, वॉटरमार्क, हस्ताक्षर। संस्करण 5.5.x से शुरू होकर, iText दोहरे लाइसेंस AGPL (ओपन-सोर्स परियोजनाओं के लिए मुफ्त) और वाणिज्यिक (मालिकाना सॉफ्टवेयर के लिए) के तहत वितरित किया जाता है। संस्करण 7.x (iText 7) अधिक आधुनिक, मॉड्यूलर और उच्च प्रदर्शन वाला है।
\n\nउदाहरण: टेक्स्ट के साथ एक सरल PDF बनाना (iText 7)
\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\npublic class CreatePdfWithIText {\n public static void main(String[] args) throws Exception {\n String dest = "output_itext.pdf";\n PdfWriter writer = new PdfWriter(dest);\n PdfDocument pdf = new PdfDocument(writer);\n Document document = new Document(pdf);\n document.add(new Paragraph("नमस्ते, PDF दुनिया!"));\n document.add(new Paragraph("यह iText 7 का उपयोग करके बनाया गया है।"));\n document.close();\n System.out.println("PDF सफलतापूर्वक बनाया गया: " + dest);\n }\n}\n\n\niText के लाभ:
\n- \n
- अधिकतम लचीलापन: तालिकाओं, सूचियों, शैलियों, फ़ॉन्ट, चित्रों का समर्थन। \n
- PDF/A, एन्क्रिप्शन, डिजिटल हस्ताक्षर के साथ काम करना। \n
- उच्च प्रदर्शन और रेंडरिंग गुणवत्ता। \n
नुकसान:
\n- \n
- जटिल लाइसेंस (AGPL) — वाणिज्यिक उपयोग के लिए खरीदारी आवश्यक है। \n
- काफी बड़ा API, जिसे सीखने की आवश्यकता है। \n
2. Apache PDFBox — मुफ्त और ओपन-सोर्स
\nApache PDFBox एक ओपन-सोर्स लाइब्रेरी (Apache 2.0 लाइसेंस) है जो PDF बनाने, संपादित करने और सामग्री निकालने की अनुमति देती है। iText के विपरीत, PDFBox को मालिकाना परियोजनाओं के लिए वाणिज्यिक लाइसेंस की आवश्यकता नहीं है। यह फ़ॉर्म, एन्क्रिप्शन, फ़ॉन्ट एम्बेडिंग के साथ काम करने का भी समर्थन करता है।
\n\nउदाहरण: टेक्स्ट के साथ PDF बनाना (PDFBox 2.x)
\n\nimport org.apache.pdfbox.pdmodel.PDDocument;\nimport org.apache.pdfbox.pdmodel.PDPage;\nimport org.apache.pdfbox.pdmodel.PDPageContentStream;\nimport org.apache.pdfbox.pdmodel.font.PDType1Font;\n\nimport java.io.IOException;\n\npublic class CreatePdfWithPdfBox {\n public static void main(String[] args) throws IOException {\n try (PDDocument document = new PDDocument()) {\n PDPage page = new PDPage();\n document.addPage(page);\n try (PDPageContentStream contentStream = new PDPageContentStream(document, page)) {\n contentStream.beginText();\n contentStream.setFont(PDType1Font.HELVETICA, 14);\n contentStream.newLineAtOffset(50, 700);\n contentStream.showText("नमस्ते, PDF दुनिया!");\n contentStream.newLineAtOffset(0, -20);\n contentStream.showText("यह Apache PDFBox का उपयोग करके बनाया गया है।");\n contentStream.endText();\n }\n document.save("output_pdfbox.pdf");\n System.out.println("PDF सफलतापूर्वक बनाया गया: output_pdfbox.pdf");\n }\n }\n}\n\n\nApache PDFBox के लाभ:
\n- \n
- पूरी तरह से मुफ्त (Apache 2.0 लाइसेंस) — किसी भी परियोजना के लिए उपयुक्त। \n
- टेक्स्ट, चित्र, मेटाडेटा निकालने का समर्थन।