जावास्क्रिप्ट (Node.js) पर PDF रिपोर्ट जनरेशन: Puppeteer, PDFKit, jsPDF

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

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

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

जावास्क्रिप्ट (Node.js) पर PDF रिपोर्ट जनरेशन: Puppeteer, PDFKit, jsPDF



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



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



Puppeteer हेडलेस Chromium ब्राउज़र को नियंत्रित करने के लिए एक लाइब्रेरी है। यह किसी भी HTML पेज को लोड करने, स्टाइल लागू करने और उसे PDF में 'फ़ोटो' करने की अनुमति देता है। यह आदर्श विकल्प है यदि आपके पास पहले से HTML/CSS पर रिपोर्ट का लेआउट है और आप PDF में सटीक ट्रांसफर चाहते हैं।



मुख्य क्षमताएँ:

  • सभी CSS गुणों का समर्थन (Flexbox, Grid, फ़ॉन्ट, शैडो)।
  • पेज पर JavaScript के साथ काम (Chart.js ग्राफ़, डायनामिक टेबल)।
  • फ़ॉर्मेट, मार्जिन, हेडर/फ़ुटर, बैकग्राउंड का कॉन्फ़िगरेशन।
  • कस्टम फ़ॉन्ट का समर्थन (TTF, OTF)।


रिपोर्ट जनरेशन का उदाहरण:



const puppeteer = require('puppeteer');

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

// सीधे HTML लोड करें (या URL से) await page.setContent(` <html> <head> <style> body { font-family: Arial; padding: 40px; } h1 { color: #2c3e50; } .data { background: #ecf0f1; padding: 20px; } </style> </head> <body> <h1>बिक्री रिपोर्ट</h1> <div class="data"> <p>राजस्व: 1,200,000 रु.</p> <p>ऑर्डर की संख्या: 345</p> </div> </body> </html> `, { waitUntil: 'networkidle0' });

await page.pdf({ path: 'report.pdf', format: 'A4', printBackground: true, margin: { top: '20mm', bottom: '20mm' } });

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

generateReport();


लाभ: लेआउट सटीकता, जटिल मैकेट्स का समर्थन, ग्राफ़ के साथ काम।

नुकसान: उच्च मेमोरी खपत (Chromium ~200 MB), धीमी शुरुआत।



2. PDFKit — निम्न-स्तरीय PDF निर्माण



PDFKit PDF संरचना में सीधे हेरफेर करने के लिए एक लाइब्रेरी है। आप HTML का उपयोग नहीं करते, बल्कि प्रोग्रामेटिक रूप से दस्तावेज़ बनाते हैं: रेखाएँ खींचते हैं, टेक्स्ट जोड़ते हैं, चित्र सम्मिलित करते हैं। यह दस्तावेज़ के हर पिक्सेल पर पूर्ण नियंत्रण देता है।



मुख्य क्षमताएँ:

  • वेक्टर ग्राफ़िक्स (रेखाएँ, आयत, वक्र)।
  • Unicode समर्थन और फ़ॉन्ट एम्बेडिंग।
  • टेबल निर्माण, पृष्ठ क्रमांकन।
  • एनोटेशन और लिंक के साथ काम।


सरल चालान बनाने का उदाहरण:



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

const doc = new PDFDocument({ size: 'A4', margin: 50 });doc.pipe(fs.createWriteStream('invoice.pdf'));

// शीर्षकdoc.fontSize(24).text('चालान संख्या 12345', { align: 'center' });doc.moveDown();

// तालिका (मैन्युअल रूप से)doc.fontSize(12).text('विवरण', 50, 150);doc.text('मात्रा', 350, 150);doc.text('मूल्य', 450, 150);

doc.moveTo(50, 170).lineTo(550, 170).stroke();

doc.text('डेवलपमेंट सेवाएँ', 50, 180);doc.text('1', 350, 180);doc.text('150,000 रु.', 450, 180);

doc.moveDown(2);doc.fontSize(16).text('कुल: 150,000 रु.',

अनुशंसाएँ