2009-08-07 10 views
6

मुझे पता है कि आप वर्तमान पृष्ठ को मुद्रित करने के लिए window.print() का उपयोग कर सकते हैं ... लेकिन मैं क्या जानना चाहता हूं कि क्या मैं डेटा के साथ इसे पॉप्युलेट करने और इसे प्रिंट करने के लिए जावास्क्रिप्ट का उपयोग करके एक दस्तावेज़ बना सकता हूं?जावास्क्रिप्ट प्रिंट फ़ंक्शन कैसे काम करता है? क्या मैं जावास्क्रिप्ट का उपयोग करके एक दस्तावेज़ बना सकता हूं और इसे प्रिंट कर सकता हूं?

आप हो सकता है वैसे ही जैसे html/xml एक जावास्क्रिप्ट वस्तु के रूप में आप इस के लिए कुछ इसी तरह कर सकते हैं:

var name = "Matt"; 
var htmlDocumentToPrint = "<html><body><div style='width:300px; height:20px; background-color:#000; text-align:center;'>My name is " + name + "</div></body></html>"; 

htmlDocumentToPrint.print(); 

मैं वास्तव में रंग सब है कि बस स्वरूपित करना चाहते हैं much-- जोड़ने के बारे में परवाह नहीं है एक दस्तावेज़, इसे डेटा के साथ पॉप्युलेट करें, और इसे प्रिंट करें। क्या यह संभव है?

उत्तर

4

Print() विंडो ऑब्जेक्ट पर एक विधि है। यदि आप जावास्क्रिप्ट का उपयोग कर विंडो में दस्तावेज़ बनाते हैं, तो उस विंडो ऑब्जेक्ट पर प्रिंट करें, इसे काम करना चाहिए।

<script type="text/javascript"> 
    var myWindow = window.open('','','width=200,height=100') 
    myWindow.document.write("This is 'myWindow'") 
    myWindow.print(); 
</script> 

उदाहरण w3schools.com विंडो खुली उदाहरण से संशोधित किया।

+1

तुम भी छिपा दस्तावेज़ों को मुद्रित करने के लिए एक छिपा iframe उपयोग कर सकते हैं! – James

+0

यह क्रोम या ओपेरा में काम नहीं करता प्रतीत होता है। दोनों ब्राउज़रों को मूल विंडो मुद्रित करना प्रतीत होता है जब self.print() या window.print() को एक छिपे हुए IFrame पर कॉल किया जाता है। – Jack

+0

वास्तव में, यह 0px की ऊंचाई और चौड़ाई के साथ एक आईफ्रेम के साथ काम नहीं कर रहा है ... – Jack

0

आप इस दस्तावेज़ लोड किया जा रहा है, तो आप document.write उपयोग कर सकते हैं वर्तमान दस्तावेज़ लिखने के लिए कर रहे हैं, तो इसे प्रिंट।

पेज लोड हो जाए, तो आप कार्यों का उपयोग डोम हेरफेर करने के लिए कर सकते हैं, या अधिमानतः एक पुस्तकालय का उपयोग इस तरह के jQuery या Prototype के रूप में है, तो वर्तमान दस्तावेज़ मुद्रित करें।

1

प्रिंट() अनिवार्य रूप से सिर्फ एक को देखते हुए विंडो के लिए स्थानीय प्रिंट डायलॉग अप कॉल।

लेकिन जैसा कि आप सोच रहे हैं कर रहे हैं, यह किसी भी खिड़की या (i) फ्रेम पर काम करेंगे।

इस प्रकार यदि आप एक फ्रेम के लिए सामग्री लिखते हैं, आप तो यह फोन उसका प्रिंट ले सकते हैं।

window.frameName.print(); 

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

मैं व्यक्तिगत रूप से चाहते हैं कि सभी ब्राउज़रों ऊपर मुद्दे को सुलझाने के लिए निम्न लागू करेगा। ;-)

window.printPreview(); 
1

मेरी पहली सोचा:

आप एक iframe प्रोग्राम के रूप में बनाने के लिए, एचटीएमएल आवंटित कर सकते हैं मुद्रित करने के लिए, iframe.contentWindow के संदर्भ पर print() फ़ंक्शन को कॉल करें, और उसके बाद डोम से आइफ्रेम निकालें:

function printHTML(input){ 
    var iframe = document.createElement("iframe"); // create the element 
    document.body.appendChild(iframe); // insert the element to the DOM 

    iframe.contentWindow.document.write(input); // write the HTML to be printed 
    iframe.contentWindow.print(); // print it 
    document.body.removeChild(iframe); // remove the iframe from the DOM 
} 

printHTML('<h1>Test!</h1>'); 

आप उपरोक्त टुकड़ा here परीक्षण कर सकते हैं।

+0

आईई में काम नहीं करता है। अगर मुझे सही याद है तो आपको प्रिंट करने से पहले खिड़की पर ध्यान केंद्रित करने की आवश्यकता है, या कुछ इसी तरह। – James

+0

यह Google क्रोम को क्रैश करता है –

1

क्यों न केवल मीडिया = प्रिंट के लिए सब कुछ अदृश्य बनाते हैं और फिर अपने विशेष कोड के साथ केवल कुछ ब्लॉक दिखाई देते हैं?

0

जैक, क्या आपने दस्तावेज़ लोड करने के बाद iframe के अंदर window.print() को आजमाया है?

0

एक सरल समाधान उपलब्ध है जिसमें कोई फ़ंक्शन लिखने की आवश्यकता नहीं है और वह खिड़की है।प्रिंट()

whereever जिसे आप इसका उपयोग करना चाहते हैं बस बस - onClick = "window.print();"

उदाहरण

<a href="" onClick="window.print();">Print</a> 

मैं इसे हर ब्राउज़र वृषण और यह एक आकर्षण की तरह काम करता है!

0

प्रिंटिंग के तीन दृष्टिकोण हैं जिनमें से दो काम करेंगे।

  1. पूरी विंडो प्रिंट करें: window.print(); काम करेगा।

  2. केवल एक विशिष्ट फ्रेम मुद्रित करें: window.parent._frame_id_.print(); काम करेगा।

  3. प्रिंट एक documentFragment (कम से कम फ़ायरफ़ॉक्स में) काम नहीं करेगा: document.createDocumentFragment().print();//undefined

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

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