2012-03-12 16 views
6

test.html के रूप में एक स्थिर HTML पृष्ठ पर विचार करें, और पृष्ठ का एक प्रिंट करने योग्य संस्करण test.pdf में संग्रहीत किया गया है। test.html के बजाय उनके ब्राउज़र को प्रिंट करने के लिए जब मैं test.pdftest.pdf लोड करने और मुद्रित करने के लिए ब्राउज़र को कैसे मार्गदर्शित कर सकता हूं?ब्राउज़र को वेबपृष्ठ के पीडीएफ संस्करण को मुद्रित करने के लिए मैं कैसे मजबूर कर सकता हूं?

यदि यह संभव नहीं है तो मैं ऐसा करने के लिए HTML पृष्ठ के भीतर एक प्रिंट बटन (जावास्क्रिप्ट का उपयोग करके) कैसे पेश कर सकता हूं?

+0

आप इसे PHP के माध्यम से कर सकते हैं। जेएस नहीं http://webdesign.about.com/od/php/ht/force_download.htm जेएस में, आप पहले से ही फाइल हेडर भेज चुके हैं, इसलिए आप इस तरह की विदेशी चीजें नहीं कर सकते हैं। – Manishearth

+1

1. यह फ़ाइल डाउनलोड करेगा, प्रिंट नहीं करेगा; 2. पीडीएफ लोड करने के बावजूद, यह इसे प्रिंट नहीं करेगा। – Googlebot

+0

ओह, मैंने सवाल को गलत तरीके से पढ़ा। एक चीज जो काम कर सकती है (डुनो) पीडीएफ को आईफ्रेम में लोड कर रही है और आईफ्रेम के प्रिंट को कॉल कर रही है। लेकिन मुझे यकीन नहीं है कि डोम कितना संरक्षित है। – Manishearth

उत्तर

8

आप ब्राउज़र को अनुरोध करने/देखने का अनुरोध करने की तुलना में एक अलग फ़ाइल मुद्रित करने के लिए मजबूर नहीं कर सकते हैं। यह एक सुरक्षा दुःस्वप्न होगा!

विकल्प 1 (जे एस (के रूप में अनुरोध) & एचटीएमएल)

मुझे लगता है कि (.pdf करने के लिए उपयोगकर्ता एक नई विंडो में पीडीएफ खोलने प्रत्यक्ष बेहतर होगा होगा अपनी साइट पर एक printable version लिंक बनाने का सुझाव)।

<!-- JS --> 
<script type="text/javascript"> 
    function LoadPrintableVersion() { 
     window.open("Test.pdf"); 
    } 
</script> 

<!-- HTML --> 
<span id="spanPrintableVersion" onclick="LoadPrintableVersion()"> 
    Printable Version 
</span> 

विकल्प 2 (शुद्ध एचटीएमएल)

<a href="test.pdf" target="_blank">Printable Version</a> 
+3

@ डेविड, क्योंकि विशेष रूप से जेएस और मैं के लिए पूछे जाने वाले उपयोगकर्ता मेरे जेएस बॉक्स में थे :) मैं एक शुद्ध HTML उदाहरण प्रदान करूंगा (क्योंकि आपका बिंदु मान्य है)! –

+0

कृपया बताएं कि प्रिंटर में एक अलग दस्तावेज़ कैसे भेजना एक "सुरक्षा दुःस्वप्न" है? – Supuhstar

3

आप ब्राउज़र में प्रिंट आदेश का अपहरण नहीं कर सकते, लेकिन आप कीबोर्ड शॉर्टकट का अपहरण कर सकते हैं (हालांकि मैं यह सिफारिश नहीं होगा) तो कि जब उपयोगकर्ता ctrl/cmd + p का उपयोग करके प्रिंट करता है, तो यह एक पीडीएफ पर रीडायरेक्ट करता है (या कुछ और करता है)। यह एक प्रयोज्यता माइनफील्ड है, हालांकि, आपको शायद एक बड़ा लिंक बनाना चाहिए जो "प्रिंट करने योग्य संस्करण" कहता है और इसे पीडीएफ (या उस पृष्ठ का एक संस्करण जो प्रिंट-फ्रेंडली सीएसएस का उपयोग करता है) से लिंक करता है।

एक और अच्छा विकल्प है कि आप अपनी सीएसएस फ़ाइल में print मीडिया प्रकार के लिए कुछ नियमों को परिभाषित करना है, तो ब्राउजर उन लोगों को लागू करेगा जब उपयोगकर्ता प्रिंट करता है, बिना किसी हैक्स या जावास्क्रिप्ट के।

लेकिन चूंकि आपने पूछा कि मैंने प्रिंट कमांड के लिए एक छोटी शॉर्टकट अपहरण स्क्रिप्ट बनाई है। यह मैक कमांड कुंजी की वजह से एक तरह से मुश्किल है, लेकिन कुछ की तरह:

var cmd = false; 

$(document).on('keydown', function(e) { 

    if(detectMacCommand(e.which)) { 
     cmd = true; 
     return; 
    } 

    // now detect print (ctr/cmd + p) 
    if (e.which == 80 && (e.ctrl || cmd)) { 
     e.preventDefault(); 
     alert('redirect to PDF'); 
    } 

}).on('keyup', function(e) { 

    if(detectMacCommand(e.which)) { 
     cmd = false; 
     return; 
    } 

}); 

function detectMacCommand(key) { 
    return ($.browser.mozilla && key == 224 || 
      $.browser.opera && key == 17 || 
      $.browser.webkit && (key == 91 || key == 93)); 
} 
​ 

कि बहुत अच्छा है, लेकिन यह :) का उपयोग नहीं करते

2

यहाँ जिस तरह से W3C का कहना है आपको चाहिए है:

<LINK REL="alternate" HREF="/path/to/PDFVersion.pdf" TYPE="application/pdf" MEDIA="print" TITLE="PDF version" /> 

मन आप, जहाँ तक मैं बता सकता हूँ, कोई ब्राउज़र वर्तमान में इस का समर्थन करता है। माफ़ कीजिये।

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

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