2009-06-10 12 views
24

मेरे पास एक एम्बेडेड पीडीएफ वाला वेब पेज है। मेरे कोड इस तरह दिखता है:मूक प्रिंट एक एम्बेडेड पीडीएफ

function printDocument(documentId) { 

    //Wait until PDF is ready to print  
    if (typeof document.getElementById(documentId).print == 'undefined') { 

     setTimeout(function(){printDocument(documentId);}, 1000); 

    } else { 

     var x = document.getElementById(documentId); 
     x.print(); 
    } 
} 

जब यह कोड निष्पादित एक्रोबेट प्लग में जाने-माने प्रिंट संवाद खोलता है:

<embed 
    type="application/pdf" 
    src="path_to_pdf_document.pdf" 
    id="pdfDocument" 
    width="100%" 
    height="100%"> 
</embed> 

मैं प्रिंट मेरी पीडीएफ के लिए इस जावास्क्रिप्ट कोड है। कुछ इस तरह:

PrintDialog

दो सवाल:

  • कैसे है कि पीडीएफ पता लगाने के लिए जिस तरह से सुधार करने के लिए लोड और प्रिंट के लिए तैयार हो रहा है?
  • प्रिंट संवाद दिखाने से कैसे बचें?

अपने सिस्टम के बारे में एक छोटे से अधिक जानकारी:

ओएस: Windows XP

ब्राउज़र: इंटरनेट एक्सप्लोरर 7

पीडीएफ प्लग इन: एक्रोबैट रीडर 9

+0

@gideon इस काम नहीं करता है .... IE8 एफएफ या क्रोम में ... यानी त्रुटि वेबपेज त्रुटि विवरण संदेश दे: 'अशक्त' रिक्त है या नहीं एक वस्तु पंक्ति: 26 चार: 5 कोड: 0 यूआरआई: http: //localhost/mpdf/pdf.php अगर मैं चेतावनी() में डाल दिया है, तो typeof चेतावनी पॉपिंग के बाद भी दस्तावेज़ लोड किया जाता है रखने के लिए जारी है के भीतर –

उत्तर

18

आप सादे पुराने जावास्क्रिप्ट के साथ चुपचाप प्रिंट करने में सक्षम नहीं होंगे। आप अपने प्रिंटर को सभी काले रंग के 100000000 पृष्ठों को प्रिंट करना शुरू करना चाहते हैं। अच्छी बात नहीँ हे। यदि आप चुपचाप प्रिंट करना चाहते हैं और इसे केवल इंटरनेट एक्सप्लोरर के लिए काम करना चाहते हैं, तो वहाँ ActiveX नियंत्रण हैं जो इसे कर सकते हैं। इसके लिए आपके पृष्ठ के लिए और आपके उपयोगकर्ताओं के लिए वास्तव में आपकी साइट पर भरोसा करने के लिए उच्च सुरक्षा सेटिंग्स की आवश्यकता है।

+0

धन्यवाद, कॉर्पोरेट इंट्रानेट के लिए इंटरनेट के लिए नहीं, उन्हें भरोसा करना चाहिए! :-) क्या आप मुझे इस ActiveX पर इंगित कर सकते हैं। मैं इसका मूल्यांकन करूंगा। – sourcerebels

+0

मुझे लगता है कि उनका मुद्दा यह था कि यदि ब्राउजर ने चुप प्रिंटिंग की अनुमति दी तो यह एक सुरक्षा छेद होगा। तो यह डिजाइन द्वारा संभवतः एक ब्राउज़र/प्लगइन इस अनुमति नहीं देता है। – JohnFx

+0

इस समाधान को स्वीकार करने के बाद से प्रौद्योगिकी काफी बदल गई है। यहां कुछ मूक प्रिंटिंग समाधान दिए गए हैं, जिनमें से कुछ अनुरोध के अनुसार यूआरएल द्वारा चुपचाप पीडीएफ प्रिंट कर सकते हैं। http://stackoverflow.com/questions/27057816 – tresf

1

मुझे आश्चर्य है कि आपको वास्तव में प्रिंटिंग से पहले प्रतीक्षा करने की आवश्यकता है या नहीं - प्रिंट जॉब आपके लिए संभाल नहीं करेगा? और मुझे सच में उम्मीद है कि कोई आधुनिक ब्राउज़र आपको उस पुष्टि संवाद के बिना प्रिंट करने के लिए (या उस मामले के लिए किसी भी वेबसाइट) को प्रिंट करने की अनुमति देगा (कुछ पुराने ब्राउज़र ऐसा करने के लिए उपयोग किए जाते थे)।

+0

हाय अर्जन, आपके त्वरित उत्तर के लिए धन्यवाद। यदि मैं पीडीएफ फ़ाइल लोड होने से पहले .print विधि को कॉल करता हूं तो मुझे जावास्क्रिप्ट त्रुटि मिलती है जैसे 'इस विधि के लिए इस विधि की अनुमति नहीं है' (मुझे स्पेनिश में त्रुटि संदेश मिलता है)। आपकी दूसरी प्रशंसा पर मुझे लगता है कि ब्राउज़र द्वारा पीडीएफ मुद्रित नहीं किया गया है एक्रोबैट प्लग-इन द्वारा मुद्रित :-) – sourcerebels

+0

लेकिन वह प्लगइन किसी के ब्राउज़र में मौजूद हो सकता है, है ना? यदि ऐसा है, तो मुझे उम्मीद नहीं है कि पुष्टि गायब हो जाएगी। क्या आपके पीडीएफ लोड होने से पहले शरीर तत्व के लिए अधिभार घटना आग लगती है? – Arjan

+0

ओह, ऐसा लगता है कि इंटरनेट एक्सप्लोरर एम्बेड के लिए ऑनलोड() को भी समर्थन करता है: http://msdn.microsoft.com/en-us/library/cc197055(VS.85).aspx – Arjan

1

आप इसे about:config बदलकर फ़ायरफ़ॉक्स में कर सकते हैं। print.always_print_silent जोड़ें और इसे true पर सेट करें।

4

यह एक विश्वसनीय, इंट्रानेट पर्यावरण में संभव है।

<object id="pdfDoc" style="position:absolute;z-index:-1;" name="pdfDoc" classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" width="900px" height="100%"> 
     <param name="SRC" value="yourdoc.pdf" /> 
    </object> 

<input type="button" ... onclick="pdfDoc.printAll();" /> 

यह प्रिंट संवाद को बाईपास करेगा और सीधे डिफ़ॉल्ट प्रिंटर पर भेज देगा। किसी कारण से

+5

मैं इस विधि को एफएफ या सफारी में काम करने में सक्षम नहीं था। क्या यह केवल आईई है? – Karl

+0

धन्यवाद दस लाख बार। यह आईई 9 में बेकार ढंग से काम करता है। तुमने मुझे बचाया!!! –

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