2011-08-16 10 views
22

जावास्क्रिप्ट का उपयोग कर प्रिंटर पर सीधे पीडीएफ फ़ाइल कैसे भेजें?जावास्क्रिप्ट का उपयोग कर प्रिंटर पर सीधे पीडीएफ फ़ाइल कैसे भेजें?

मैं एक मंच में दो जवाब मिला:

<embed src="vehinvc.pdf" id = "Pdf1" name="Pdf1" hidden> 
<a onClick="document.getElementById('Pdf1').printWithDialog()" style="cursor:hand;">Print file</a> 

और

<OBJECT id = "Pdf2" name="Pdf2" CLASSID="clsid:CA8A9780-280D-11CF-A24D-444553540000" WIDTH="364" HEIGHT="290"> 
    <PARAM NAME='SRC' VALUE="file.pdf"> 
</OBJECT> 
<a onClick="document.Pdf2.printWithDialog()">Print file</a> 

लेकिन मेरी समस्या यह है कि यह सिर्फ IE पर काम करता है, और Firefox या Chrome में does not काम है।

क्या इसके लिए कोई समाधान है?

+1

के बारे में यह सवाल है एडोब रीडर API प्लग-इन? –

+0

मुझे नहीं लगता कि यह एडोब रीडर प्लगइन के बारे में है .. क्योंकि मेरे पास सभी ब्राउज़रों में एडोब रीडर का एक ही संस्करण है .. फिर भी जावास्क्रिप्ट का यह कोड सिर्फ इंटरनेट एक्सप्लोरर में काम नहीं कर रहा है .. –

+1

@ जिग्नेश मेनक: मैं करता हूं विश्वास नहीं है कि आप सभी ब्राउज़रों के लिए एक समाधान खोजने जा रहे हैं। सबसे अच्छा आप उम्मीद कर सकते हैं प्रिंट संवाद बॉक्स और ईमानदारी से लाने के लिए, यह वास्तव में काफी अच्छा होना चाहिए। एक उपयोगकर्ता के रूप में, आखिरी चीज जो मैं चाहता हूं वह है कि मेरा प्रिंटर सिर्फ मेरी सेटिंग्स, पेपर साइज, ट्रे इत्यादि की जांच के बिना कुछ प्रिंट करना शुरू कर दे। इसके बारे में सोचें ... यहां तक ​​कि आपके अधिकांश एप्लिकेशन, वर्ड प्रोसेसर, स्प्रैडशीट्स , आदि बस प्रिंट संवाद बॉक्स भी आह्वान करें। – Sparky

उत्तर

0

प्रिंट ट्रिगर के घर में एक समारोह ...

function printTrigger(elementId) { 
    var getMyFrame = document.getElementById(elementId); 
    getMyFrame.focus(); 
    getMyFrame.contentWindow.print(); 
} 

उपयोगकर्ता पहुँच देने के लिए एक बटन ...

(an onClick on an a or button or input or whatever you wish) 

<input type="button" value="Print" onclick="printTrigger('iFramePdf');" /> 
an iframe pointing to your PDF... 

<iframe id="iFramePdf" src="myPdfUrl.pdf" style="dispaly:none;"></iframe> 

अधिक: http://www.fpdf.org/en/script/script36.php

+0

फिर से यह फ़ायरफ़ॉक्स और क्रोम में कुछ भी नहीं करता .. और IE में परीक्षण करते समय, मुख्य HTML फ़ाइल सामग्री प्रिंटर को भेजा जाता है !! –

-1
<?php 

$browser_ver = get_browser(null,true); 
//echo $browser_ver['browser']; 

if($browser_ver['browser'] == 'IE') { 
?> 

<!DOCTYPE html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title><strong class="highlight">pdf</strong> <strong class="highlight">print</strong> test</title> 
<style> 
html { height:100%; } 
</style> 
<<strong class="highlight">script</strong>> 
function printIt(id){ 
var <strong class="highlight">pdf</strong> = document.getElementById("samplePDF"); 
<strong class="highlight">pdf</strong>.click(); 
<strong class="highlight">pdf</strong>.setActive(); 
<strong class="highlight">pdf</strong>.focus(); 
<strong class="highlight">pdf</strong>.print(); 
} 
</script> 
</head> 

<body style="margin:0; height:100%;"> 

<embed id="samplePDF" type="application/pdf" src="/pdfs/2010/dash_fdm350.pdf" width="100%" height="100%" /> 
<button onClick="printIt('samplePDF')"><strong class="highlight">Print</strong></button> 


</body> 
</html> 

<?php 
} else { 
?> 
<HTML> 
<<strong class="highlight">script</strong> Language="javascript"> 

function printfile(id) 
{ 
window.frames[id].focus(); 
window.frames[id].print(); 
} 

</script> 
<BODY marginheight="0" marginwidth="0"> 

<iframe src="/pdfs/2010/dash_fdm350.pdf" id="objAdobePrint" name="objAdobePrint" height="95%" width="100%" frameborder=0></iframe><br> 

<input type="button" value="<strong class="highlight">Print</strong>" onclick="javascript<b></b>: printfile('objAdobePrint');"> 

</BODY> 
</HTML> 
<?php 
} 
?> 
+4

ओपी ने PHP समाधान के लिए नहीं पूछा था। – Sparky

+0

मेरे प्रश्न में कोड पहले ही आईई के साथ काम करता है .. मुझे फ़ायरफ़ॉक्स और क्रोम के लिए एक फिक्स चाहिए! –

4

इस प्रयास करें : एक बटन/लिंक है जो एक वेबपृष्ठ (एक नई विंडो में) खोलता है जिसमें केवल पीडीएफ फ़ाइल एम्बेडेड होती है, और वेबप प्रिंट करें उम्र।

मुख्य पृष्ठ के सिर में:

<script type="text/javascript"> 
function printpdf() 
{ 
myWindow=window.open("pdfwebpage.html"); 
myWindow.close; //optional, to close the new window as soon as it opens 
//this ensures user doesn't have to close the pop-up manually 
} 
</script> 

और मुख्य पृष्ठ के शरीर में:

<a href="printpdf()">Click to Print the PDF</a> 

pdfwebpage.html के अंदर:

<html> 
<head>  
</head> 

<body onload="window.print()"> 
<embed src="pdfhere.pdf"/> 

</body> 
</html> 
+1

यह विधि मेरे लिए बिल्कुल काम नहीं कर रही है। क्रोम, आईई, और फ़ायरफ़ॉक्स सभी एक ही तरीके से कार्य करते हैं - एक प्रिंट संवाद प्रकट होता है लेकिन यह वेबपृष्ठ को उस पर एक छोटे/अदृश्य एम्बेडेड पीडीएफ के साथ प्रिंट करता है। मुझे पीडीएफ प्रिंट ट्रिगर करने की ज़रूरत है, न कि वेबपृष्ठ प्रिंट। क्या मैं कुछ भूल रहा हूँ? –

5

वहाँ दो तुम कदम हैं लेने की जरूरत है।

सबसे पहले, आपको पीडीएफ को आईफ्रेम में रखना होगा।

<iframe id="pdf" name="pdf" src="document.pdf"></iframe> 

आइफ्रेम आप जवाब यहां देख सकते हैं मुद्रित करने के लिए:

Javascript Print iframe contents only

आप iframe मुद्रित करने के लिए स्वचालित रूप से करने के बाद पीडीएफ लोड होते ही चाहते हैं, तो आप एक ऑनलोड हैंडलर को जोड़ सकते हैं :

<iframe onload="isLoaded()" id="pdf" name="pdf" src="document.pdf"></iframe> 

लोडर इस तरह दिख सकता:

function isLoaded() 
{ 
    var pdfFrame = window.frames["pdf"]; 
    pdfFrame.focus(); 
    pdfFrame.print(); 
} 

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

मैं इस कोड का उपयोग सफारी और क्रोम में बहुत अधिक क्रियात्मक रूप से कर रहा हूं, लेकिन अभी तक इसे आईई या फ़ायरफ़ॉक्स पर आज़माएं।

+2

मैंने क्रोम, आईई और फ़ायरफ़ॉक्स में इस विधि की कोशिश की लेकिन यह उम्मीद के अनुसार काम नहीं कर रहा है। क्रोम में मुझे "pdfFrame.print एक फ़ंक्शन नहीं है"। एफएफ में मुझे "त्रुटि: अनुमति" संपत्ति "पहुंचने के लिए अनुमति अस्वीकार कर दी गई है"। आईई कोई त्रुटि नहीं देता है लेकिन प्रिंट संवाद ट्रिगर नहीं करता है। पीडीएफ एक ही उत्पत्ति पर है और एक्स-फ्रेम-विकल्प सैमोरिजिन पर सेट है। क्या यह विधि अभी पुरानी है? –

4

मुझे लगता है कि जावास्क्रिप्ट के इस पुस्तकालय आप मदद कर सकते हैं:

यह कहा जाता है Print.js

सबसे पहले शामिल

<script src="print.js"></script> 
<link rel="stylesheet" type="text/css" href="print.css"> 

यह मूल उपयोग printJS() कॉल करने के लिए और सिर्फ एक पीडीएफ दस्तावेज़ में पारित है है यूआरएल: printJS('docs/PrintJS.pdf')

मैंने जो किया वह था ऐसा कुछ नहीं, यह "लोड हो रहा है ...." दिखाएगा यदि पीडीएफ दस्तावेज़ बहुत बड़ा है।

<button type="button" onclick="printJS({printable:'docs/xx_large_printjs.pdf', type:'pdf', showModal:true})"> 
    Print PDF with Message 
</button> 

हालांकि यह ध्यान रखें कि:

Firefox currently doesn't allow printing PDF documents using iframes. There is an open bug in Mozilla's website about this. When using Firefox, Print.js will open the PDF file into a new tab.

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