2014-08-29 10 views
19

वहाँ अच्छा परियोजनाओं कि HTML/CSS/js फ़ाइलों से पीडीएफ उत्पन्न कर रहे हैंपीडीएफ का उत्पादन करने के लिए ब्राउज़र (क्रोम/फ़ायरफ़ॉक्स) एचटीएमएल/सीएसएस/जेएस रेंडरिंग इंजन का उपयोग कैसे करें?

  1. http://wkhtmltopdf.org/ (ओपन सोर्स)
  2. https://code.google.com/p/flying-saucer/ (खुला स्रोत)
  3. http://cssbox.sourceforge.net/ (जरूरी नहीं कि सीधे पीडीएफ पीढ़ी)
  4. http://phantomjs.org/ (ओपन सोर्स पीडीएफ आउटपुट के लिए अनुमति देता है)
  5. http://www.princexml.com/ (कॉमर्सियल लेकिन हाथों में सबसे अच्छा हाथ नीचे)

मैं क्रोम या फ़ायरफ़ॉक्स ब्राउज़र को प्रोग्रामेटिक रूप से नियंत्रित करना चाहता हूं (क्योंकि वे दोनों क्रॉस प्लेटफॉर्म हैं) उन्हें एक वेब पेज लोड करने, स्क्रिप्ट चलाने और पृष्ठ को शैली बनाने और प्रिंटिंग के लिए पीडीएफ फ़ाइल जेनरेट करने के लिए।

लेकिन यह कैसे मैं स्वचालित रूप से ब्राउज़र को नियंत्रित करने, ताकि मैं

की तरह कुछ कर सकते हैं द्वारा शुरू करूँ प्रस्तुत करना करने के लिए pdf फ़ाइल करने वाली render.html out.pdf

मैं आसानी से कर सकते हैं पेज को ब्राउज करके मैन्युअल रूप से यह काम करें और फिर इसे पीडीएफ पर प्रिंट करें और मुझे एक पीडीएफ फ़ाइल पर एक सटीक, 100% स्पेक अनुपालन एचटीएमएल/सीएसएस/जेएस पेज प्रदान किया जाता है। यहां तक ​​कि ब्राउज़र में कॉन्फ़िगरेशन विकल्पों के माध्यम से यूआरएल हेडर को पीडीएफ में छोड़ा जा सकता है। लेकिन फिर, मैं इस प्रक्रिया को स्वचालित करने की कोशिश में कैसे शुरू करूं?

मैं सर्वर की ओर स्वचालित करना चाहता हूं, ब्राउजर खोलना, पेज पर नेविगेट करना और ब्राउजर रेंडर पेज का उपयोग करके पीडीएफ उत्पन्न करना चाहता हूं।

मैंने बहुत सारे शोध किए हैं, मुझे नहीं पता कि सही सवाल कैसे बनाया जाए। मैं ब्राउज़र को प्रोग्रामेटिक रूप से नियंत्रित करना चाहता हूं, शायद सेलेनियम की तरह, लेकिन उस बिंदु पर जहां मैं एक वेबपृष्ठ को पीडीएफ के रूप में निर्यात करता हूं (इसलिए अच्छे पीडीएफ बनाने के लिए ब्राउज़र की प्रतिपादन क्षमताओं का उपयोग करना)

+1

क्या आपने [क्रोमड्राइवर] (https://code.google.com/p/selenium/wiki/ChromeDriver) देखा है? –

+0

मैं देख सकता हूं कि ब्राउज़र को वर्तमान पृष्ठ को पीडीएफ –

+1

के रूप में निर्यात करने के लिए कहने के लिए सेलेनियम का उपयोग कैसे करें आप [क्रोमियम कमांड लाइन तर्क] (http://peter.sh/experiments/chromium) के संयोजन का उपयोग करने में सक्षम हो सकते हैं - कमांड लाइन-स्विच /) '--kiosk --kiosk-printing' आपके [' prefs' क्षमता] में डिफ़ॉल्ट पीडीएफ प्रिंटर को पास करने के साथ (https://sites.google.com/a/chromium.org/ chromedriver/क्षमताओं प्रतिबंधित सूची के- मान्यता प्राप्त-क्षमताओं)। मैंने कभी कोशिश नहीं की है, लेकिन यही वह जगह है जहां मैं शुरू करूंगा। –

उत्तर

5

मैं एक विशेषज्ञ नहीं हूं लेकिन फामटोमजेएस लगता है नौकरी के लिए सही उपकरण होने के लिए। मुझे यकीन नहीं है कि यह किस हेडलेस ब्राउज़र के नीचे उपयोग करता है (मुझे लगता है कि यह क्रोम/क्रोमियम है)

var page = require('webpage').create(); 
page.open('http://github.com/', function() { 
    var s = page.evaluate(function() { 
     var body = document.body, 
      html = document.documentElement; 

     var height = Math.max(body.scrollHeight, body.offsetHeight, 
      html.clientHeight, html.scrollHeight, html.offsetHeight); 
     var width = Math.max(body.scrollWidth, body.offsetWidth, 
      html.clientWidth, html.scrollWidth, html.offsetWidth); 
     return {width: width, height: height} 
    }); 

    console.log(JSON.stringify(s)); 

    // so it fit ins a single page 
    page.paperSize = { 
     width: "1980px", 
     height: s.height + "px", 
     margin: { 
      top: '50px', 
      left: '20px' 
     } 
    }; 

    page.render('github.pdf'); 
    phantom.exit(); 
}); 

उम्मीद है कि यह मदद करता है।

+3

सीएसएस मुद्रण करते समय पृष्ठ आकार के लिए अनुमति देता है। इसलिए कागजात को सेट करना कोड उदाहरण में नहीं है, मदद नहीं करता है। इसके अलावा, सीएसएस प्रिंट में पेज ब्रेक भी हैं। ऐसा कहा जा रहा है कि, मैं देखता हूं कि फैंटॉमजेएस वेबकिट रेंडरिंग इंजन का उपयोग करता है, यह एक समर्थित ब्राउज़र का उपयोग नहीं कर रहा है, बल्कि वेबकिट का एक कांटा (जो इस कार्य के लिए ठीक है)। लेकिन इसे अभी भी princexml की तरह काम करने के लिए बहुत सारे काम की आवश्यकता है। मुझे लगता है कि यही कारण है कि वे सस्ते नहीं हैं –

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