2012-07-27 10 views
6

मुझे पता है कि वहां पुस्तकालयों का एक गुच्छा है लेकिन कोई भी मेरे परिदृश्य से बिल्कुल मेल नहीं खाता है। तो मैं यहां कुछ सलाह लेने की उम्मीद कर रहा हूं ...जावास्क्रिप्ट में पीडीएफ के लिए एचटीएमएल और सीएसएस

प्रौद्योगिकियां: मैं बैकएंड के लिए Express.js पर नोड.जेएस का उपयोग कर रहा हूं, और फ्रंट एंड के लिए एचटीएमएल/सीएसएस/जेएस का उपयोग कर रहा हूं। ब्राउज़र समर्थन IE8 और ऊपर, क्रोम, एफएफ, और अन्य आधुनिक ब्राउज़र है।

मुझे क्या करना है: उपयोगकर्ता को क्लिक करने के लिए "पीडीएफ" बटन होना चाहिए, जो फिर डीओएम के पीडीएफ में परिवर्तित हो जाएगा। डीओएम के एचटीएमएल का यह हिस्सा गतिशील रूप से उत्पन्न होता है जब बैक-एंड एपीआई को किसी अन्य ऐप पर कॉल करता है। सीएसएस स्थिर है।

इनके अतिरिक्त मैं जो कुछ भी मैं चाहता हूँ करने के लिए स्वतंत्रता की एक बहुत कुछ है, जब तक मेरे पास नहीं है के रूप में तीसरे पक्ष को स्पष्ट पाठ डेटा भेजने के लिए और आदि

किसी भी तरीके से ऐसा करने की सिफारिश की?


अद्यतन: wkhtmltopdf

+0

आपको कौन सी लाइब्रेरी मिली हैं और वे आपके मामले से क्यों मेल नहीं खाते हैं? उदाहरण के लिए, – Bergi

+0

अच्छी तरह से, jspdf बहुत अच्छा लग रहा है, लेकिन यह सीएसएस – Max

उत्तर

5

मूलतः, यह मैं क्या कर रहा

console.log("before"); 
fs.writeFile(html_filename, html, function (err) { 
    if (err) {res.writeHead(400); res.end("" + err); return;} 

    console.log("wrote html fine; now converting"); 
    exec('wkhtmltopdf ' + html_filename + ' ' + pdf_filename, function (err, stdout, stderr) { 
    if (err) {res.writeHead(400); res.end("" + err); return;} 

    console.log("converted; now reading"); 
    fs.readFile(pdf_filename, function (err, data) { 
     if (err) {res.writeHead(400); res.end("" + err); return;} 

     console.log("read fine; now serving"); 
     res.writeHead(200, {"content-type" : "application/pdf"}); 
     res.end(data); 
    }); 
    }); 
}); 

IMO यह थोड़ा बदसूरत है के रूप में यह एक फ़ाइल बनाने की आवश्यकता है, तो यह परिवर्तित करने, और फिर इसे की सेवा, और अंत में दो हटाना समाप्त हो गया है। मुझे यहां स्केलेबिलिटी की समस्याएं हैं। ओएसएक्स के साथ भी अच्छा नहीं लगता है wkhtmltopdf। यद्यपि लिनक्स पर ऐसी कोई समस्या नहीं है।

0

कोशिश wkhtmltopdf में देख। आप रूबी पर रूबी के लिए ड्राइवर के वर्तमान कार्यान्वयन को आसानी से देख सकते हैं और इसे नोड और एक्सप्रेस पर लागू कर सकते हैं। आप मूल रूप से एक कमांड लाइन ऐप कहते हैं और इसे आपके प्रिंट सीएसएस का उपयोग करके पीडीएफ में परिवर्तित कर दिया जाएगा।

+0

में नहीं लेता है, मैं काम करने के लिए wkhtmltopdf प्राप्त करने की कोशिश कर रहा हूं लेकिन बड़ी समस्याएं हैं। – Max

+0

वर्तमान में, जब मैं wkhtmltopdf निष्पादित करता हूं, चाहे मैन्युअल रूप से टर्मिनल से या नोड से, मेरी मैक डॉक में एक नई प्रक्रिया पॉप अप हो जाती है और मुझे आगे बढ़ने के लिए इसे क्लिक करना होगा। अन्यथा यह सिर्फ लटकता है। – Max

संबंधित मुद्दे