2011-08-16 40 views
22

Làm cách nào để gửi tệp PDF trực tiếp tới máy in bằng JavaScript?Làm cách nào để gửi tệp pdf trực tiếp tới máy in bằng JavaScript?

tôi thấy hai câu trả lời trong một diễn đàn:

<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> 

Nhưng vấn đề của tôi là nó chỉ hoạt động trên trình duyệt IE, và làm việc doesnt trong Firefox hoặc Chrome.

Có giải pháp nào cho vấn đề này không?

+1

là câu hỏi này về Adobe Reader của plug-in API? –

+0

Tôi không nghĩ rằng đó là về plugin của người đọc adobe .. bởi vì tôi có cùng một phiên bản của trình đọc adobe trong tất cả các trình duyệt .. vẫn mã JavaScript này không hoạt động trong Internet Explorer chỉ .. –

+1

@Jignesh Manek: Tôi làm không tin rằng bạn sẽ tìm một giải pháp cho tất cả các trình duyệt. Điều tốt nhất bạn có thể mong đợi là mang đến hộp thoại in và thành thật, điều đó thực sự là đủ tốt. Là người dùng, điều cuối cùng tôi muốn là máy in của tôi chỉ bắt đầu in một thứ mà không có cơ hội kiểm tra cài đặt, kích thước giấy, khay, v.v. Hãy nghĩ về nó ... thậm chí hầu hết các ứng dụng, bộ xử lý văn bản, bảng tính của bạn , vv cũng đơn giản gọi hộp thoại in. – Sparky

Trả lời

0

một chức năng để nhà cò in ...

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

một nút để cung cấp cho người dùng truy cập ...

(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> 

thêm: http://www.fpdf.org/en/script/script36.php

+0

lại không hoạt động trong Firefox và Chrome .. và trong khi thử nghiệm trong IE, nội dung tệp html chính được gửi tới máy in !! –

-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

OP không yêu cầu giải pháp PHP. – Sparky

+0

mã trong câu hỏi của tôi đã hoạt động với IE .. tôi muốn sửa chữa cho firefox và chrome! –

4

Hãy thử điều này : Có nút/liên kết mở trang web (trong cửa sổ mới) chỉ bằng tệp pdf được nhúng trong đó và in webp tuổi tác.

Trong đầu của trang chính:

<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> 

Và trong nội dung trang chính:

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

Bên pdfwebpage.html:

<html> 
<head>  
</head> 

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

</body> 
</html> 
+1

Phương pháp này dường như không hoạt động chút nào đối với tôi. Chrome, IE và FireFox đều hoạt động theo cùng một cách - hộp thoại in xuất hiện nhưng nó chỉ in trang web bằng một PDF nhúng nhỏ/vô hình trên đó. Tôi cần kích hoạt bản in PDF chứ không phải in trang web. Tui bỏ lỡ điều gì vậy? –

5

Có hai bước bạn cần phải thực hiện.

Trước tiên, bạn cần phải đặt PDF trong khung nội tuyến.

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

Để in iframe bạn có thể xem các câu trả lời ở đây:

Javascript Print iframe contents only

Nếu bạn muốn in các iframe tự động sau khi PDF đã được nạp, bạn có thể thêm một handler onload đến :

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

bộ nạp có thể trông như thế này:

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

Điều này sẽ hiển thị hộp thoại in của trình duyệt và sau đó chỉ in chính tài liệu PDF. (Cá nhân tôi sử dụng trình xử lý tải trên để bật nút "in" để người dùng có thể quyết định in tài liệu, hay không).

Tôi đang sử dụng mã này khá nhiều nguyên văn trong Safari và Chrome, nhưng chưa thử trên IE hoặc Firefox.

+2

Tôi đã thử phương pháp này trong Chrome, IE và Firefox nhưng nó không hoạt động như mong đợi. Trong Chrome tôi nhận được "pdfFrame.print không phải là một chức năng". Trong FF tôi nhận được "Lỗi: Quyền bị từ chối truy cập thuộc tính" in "". IE không có lỗi nhưng không kích hoạt hộp thoại in. PDF có cùng nguồn gốc và X-Frame-Options được đặt thành SAMEORIGIN. Phương pháp này có lỗi thời không? –

4

Tôi nghĩ rằng Thư viện này của JavaScript có thể giúp bạn:

Nó được gọi là Print.js

Đầu tiên Bao gồm

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

Nó sử dụng cơ bản là để gọi printJS() và chỉ cần vượt qua trong một tài liệu PDF url: printJS('docs/PrintJS.pdf')

Điều tôi đã làm là một cái gì đó như thế này, điều này cũng sẽ hiển thị "Đang tải ...." nếu tài liệu PDF quá lớn.

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

Tuy nhiên hãy nhớ rằng:

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.

Các vấn đề liên quan