जावास्क्रिप्ट (Node.js) में PDF जनरेशन: लाइब्रेरी और उपकरण

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

जावास्क्रिप्ट (Node.js) में PDF जनरेशन: लाइब्रेरी और उपकरण



PDF दस्तावेज़ों का निर्माण वेब डेवलपमेंट में सामान्य कार्यों में से एक है। चालान, रिपोर्ट, प्रमाणपत्र, टिकट - ये सब सर्वर साइड पर बनाना सुविधाजनक है। Node.js इकोसिस्टम में कई परिपक्व समाधान मौजूद हैं, जिनमें से प्रत्येक विशिष्ट परिदृश्यों के लिए उपयुक्त है। इस लेख में, हम जावास्क्रिप्ट में PDF बनाने के तीन मुख्य दृष्टिकोणों और लोकप्रिय लाइब्रेरीज़ पर चर्चा करेंगे।



लोकप्रिय लाइब्रेरीज़ का अवलोकन



उपकरण का चयन दस्तावेज़ की जटिलता पर निर्भर करता है: सरल टेक्स्ट रिपोर्ट, डेटा तालिकाएँ, या HTML+CSS के साथ जटिल लेआउट। नीचे तीन प्रमुख लाइब्रेरीज़ प्रस्तुत हैं।



1. PDFKit — PDF के साथ निम्न-स्तरीय कार्य



PDFKit "स्क्रैच" से PDF बनाने के लिए सबसे लोकप्रिय लाइब्रेरी है। यह एक समन्वय ग्रिड का उपयोग करके टेक्स्ट, रेखाएँ, आयत, चित्र बनाने की अनुमति देता है। यह सटीक पोजिशनिंग वाले गतिशील दस्तावेज़ों के लिए आदर्श है।



PDFKit के लाभ:

  • पृष्ठ के प्रत्येक तत्व पर पूर्ण नियंत्रण
  • ब्राउज़र या Puppeteer की आवश्यकता नहीं
  • फ़ॉन्ट एम्बेड करने का समर्थन (TrueType, OpenType)
  • स्ट्रीम (Stream API) के साथ एसिंक्रोनस रूप से काम करता है


एक सरल दस्तावेज़ का उदाहरण:



const PDFDocument = require('pdfkit');const fs = require('fs');

const doc = new PDFDocument();doc.pipe(fs.createWriteStream('output.pdf'));

// शीर्षकdoc.fontSize(25).text('नमस्ते, PDFKit!', 100, 100);

// सामान्य टेक्स्टdoc.fontSize(12).text('यह Node.js पर बनाया गया एक सरल PDF दस्तावेज़ है।', 100, 150);

// एक रेखा खींचेंdoc.moveTo(100, 200).lineTo(500, 200).stroke();

// एक चित्र जोड़ेंdoc.image('logo.png', 100, 220, { width: 100 });

doc.end();


2. Puppeteer — HTML/CSS से जनरेशन



Puppeteer headless Chrome ब्राउज़र को नियंत्रित करने के लिए एक लाइब्रेरी है। यह एक HTML पेज लोड करने (या इसे तुरंत जनरेट करने) और इसे PDF के रूप में सहेजने की अनुमति देता है। यह सबसे अच्छा विकल्प है यदि आपके पास पहले से HTML टेम्पलेट या जटिल CSS स्टाइल हैं।



Puppeteer के लाभ:

  • CSS का सटीक प्रतिपादन (flex, grid, फ़ॉन्ट)
  • पेज पर जावास्क्रिप्ट का समर्थन (ग्राफ़, तालिकाएँ)
  • प्रारूप, मार्जिन, हेडर और फुटर सेट करने की क्षमता
  • रिपोर्ट और चालान के लिए आदर्श


HTML से PDF जनरेशन का उदाहरण:



const puppeteer = require('puppeteer');

(async () => { const browser = await puppeteer.launch(); const page = await browser.newPage();

const html = `<!DOCTYPE html> <html> <head><style> body { font-family: Arial; padding: 20px; } h1 { color: #2c3e50; } table { border-collapse: collapse; width: 100%; } td, th { border: 1px solid #ccc; padding: 8px; } </style></head> <body> <h1>मासिक रिपोर्ट</h1> <table> <tr><th>उत्पाद</th><th>मात्रा</th></tr> <tr><td>लैपटॉप</td><td>5</td></tr> <tr><td>माउस</td><td>10</td></tr> </table> </body></html>`;

await page.setContent(html); await page.pdf({ path: 'report.pdf', format: 'A4', printBackground: true });

await browser.close(); console.log('PDF बन गया!');})();


3. jsPDF — क्लाइंट (और Node.js) पर जनरेशन



jsPDF मूल रूप से ब्राउज़र के लिए बनाया गया था, लेकिन इसका Node.js संस्करण भी है। यह हल्का है और सरल दस्तावेज़ों के लिए उपयुक्त है। Node.js में इसका उपयोग अतिरिक्त निर्भरताओं के साथ jspdf पैकेज के माध्यम से किया जाता है।



jsPDF के लाभ:

  • छोटा आकार
  • यूनिकोड और सिरिलिक का समर्थन (फ़ॉन्ट लोड करके)
  • क्लाइंट और सर्वर दोनों पर काम कर सकता है

अनुशंसाएँ