jsPDF प्लगइन्स का उपयोग करने में सक्षम है। HTML को प्रिंट करने में सक्षम करने के लिए, आपको कुछ प्लगइन्स को शामिल करना होगा और इसलिए निम्नलिखित कार्य करने होंगे:
- Https://github.com/MrRio/jsPDF पर जाएं और नवीनतम संस्करण डाउनलोड करें।
- अपनी परियोजना में निम्नलिखित लिपियों को शामिल करें:
- jspdf.js
- jspdf.plugin.from_html.js
- jspdf.plugin.split_text_to_size.js
- jspdf.plugin.standard_fonts_metrics.js
यदि आप कुछ तत्वों को अनदेखा करना चाहते हैं, तो आपको उन्हें एक आईडी के साथ चिह्नित करना होगा, जिसे आप jsPDF के एक विशेष तत्व हैंडलर में अनदेखा कर सकते हैं। इसलिए आपका HTML इस तरह दिखना चाहिए:
<!DOCTYPE html>
<html>
<body>
<p id="ignorePDF">don't print this to pdf</p>
<div>
<p><font size="3" color="red">print this to pdf</font></p>
</div>
</body>
</html>
फिर आप पॉपअप में निर्मित पीडीएफ को खोलने के लिए निम्न जावास्क्रिप्ट कोड का उपयोग करते हैं:
var doc = new jsPDF();
var elementHandler = {
'#ignorePDF': function (element, renderer) {
return true;
}
};
var source = window.document.getElementsByTagName("body")[0];
doc.fromHTML(
source,
15,
15,
{
'width': 180,'elementHandlers': elementHandler
});
doc.output("dataurlnewwindow");
मेरे लिए इसने एक अच्छा और सुव्यवस्थित पीडीएफ बनाया, जिसमें केवल लाइन 'प्रिंट टू पीडीएफ' शामिल थी।
कृपया ध्यान दें कि विशेष तत्व हैंडलर केवल मौजूदा संस्करण में आईडी के साथ सौदा करते हैं, जिसे एक GitHub इश्यू में भी कहा गया है । य़ह कहता है:
क्योंकि नोड पेड़ में प्रत्येक तत्व के खिलाफ मिलान किया जाता है, मेरी इच्छा इसे जितनी जल्दी हो सके बनाने की थी। उस स्थिति में, इसका मतलब था "केवल तत्व आईडी का मिलान किया जाता है" तत्व आईडी अभी भी jQuery की शैली "#id" में किया जाता है, लेकिन इसका मतलब यह नहीं है कि सभी jQuery चयनकर्ता समर्थित हैं।
इसलिए select .ignorePDF ’जैसे श्रेणी के चयनकर्ताओं के साथ repl #ignorePDF’ की जगह मेरे लिए काम नहीं आई। इसके बजाय आपको प्रत्येक और हर तत्व के लिए एक ही हैंडलर जोड़ना होगा, जिसे आप अनदेखा करना चाहते हैं:
var elementHandler = {
'#ignoreElement': function (element, renderer) {
return true;
},
'#anotherIdToBeIgnored': function (element, renderer) {
return true;
}
};
से उदाहरण यह भी कहा गया है कि यह 'एक' या 'ली' की तरह टैग का चयन करने के लिए संभव है। हालांकि यह सबसे बेकार के लिए अप्रतिबंधित करने के लिए थोड़ा सा हो सकता है:
हम विशेष तत्व हैंडलर का समर्थन करते हैं। उन्हें या तो आईडी या नोड नाम के लिए jQuery के शैली आईडी चयनकर्ता के साथ पंजीकृत करें। ("#iAmID", "div", "span" आदि) इस समय किसी भी अन्य प्रकार के चयनकर्ताओं (वर्ग, यौगिक) के लिए कोई समर्थन नहीं है।
जोड़ने के लिए एक बहुत महत्वपूर्ण बात यह है कि आप अपनी सभी शैली जानकारी (CSS) खो देते हैं। सौभाग्य से jsPDF अच्छी तरह से h1, h2, h3 आदि को प्रारूपित करने में सक्षम है, जो मेरे उद्देश्यों के लिए पर्याप्त था। इसके अतिरिक्त यह केवल टेक्स्ट नोड्स के भीतर पाठ को प्रिंट करेगा, जिसका अर्थ है कि यह टेक्स्टारिस और इस तरह के मूल्यों को प्रिंट नहीं करेगा। उदाहरण:
<body>
<ul>
<!-- This is printed as the element contains a textnode -->
<li>Print me!</li>
</ul>
<div>
<!-- This is not printed because jsPDF doesn't deal with the value attribute -->
<input type="textarea" value="Please print me, too!">
</div>
</body>