2012-11-29 32 views
5

Vì vậy, tôi nghĩ rằng việc giải thích về Chrome và Firefox của DOM đang gây rối với tôi. Tôi đang cố gắng in một bản pdf từ trình duyệt (được tạo động) vì tôi không thể có đầu trang và chân trang thường được in bằng cách in trang HTML. Bây giờ tôi đã gửi PDF bằng cách sử dụng fpdf từ trang php và sử dụng thanh công cụ hoặc nhấp chuột phải và in nhưng bây giờ khách hàng muốn có một nút trên trang để bắt đầu hộp thoại in nhưng tất nhiên không in bất cứ điều gì khác ngoài PDF ... . vì vậy tôi embeded nó:In các tệp PDF được nhúng trong chrome

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

và onClick của nút gọi

<script type="text/javascript"> 

     function printDocument(documentId) { 

     ((function(){return document.getElementById(documentId);})()).print(); 


     //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(); 
     } 
    } 
    </script> 

nơi documentId = "pdfDocument"

này làm việc rất lớn trong IE9 nhưng chrome và Mozilla đều nói "lỗi chưa gặp: Đối tượng # không có phương thức 'in' '

vì vậy tôi cố gắng sử dụng suy nghĩ nhúng đã gây ra sự giải thích đối tượng không đúng trong chrome:

<object data="print_pdf.php" type="application/pdf" width="100%" height="100%" id="pdfD2"> 

alt: test.pdf

và kêu gọi cùng onClick, nơi documentId = "pdfD2" .. . "của router Lỗi Loại: Object # không có phương pháp 'in'"

Sau đó, tôi đã cố gắng Iframe: ... "của router Lỗi Loại: Object # không có phương pháp 'in'"

Tôi rất thất vọng vì Chrome đang truy cập ... Tôi thậm chí đã tắt chế độ xem PDF được tích hợp sẵn của Chrome và đã sử dụng Adobe 10.xxx .. ARGH !!!

FYI, thẻ nút đơn giản của tôi là:

<input type="button" value="Print Rx" onclick="printDocument('pdfDocument')"> 
<input type="button" value="Print Rx2" onclick="printDocument('pdfD2')"> 
<input type="button" value="Print Rx3" onclick="printDocument('pdfD3')"> 

Trả lời

0

Tôi nghĩ rằng lỗi là ở dòng:

((function(){return document.getElementById(documentId);})()).print(); 

có nghĩa là bạn "gói" (cũng có thể) DOM chưa hoàn thành đóng cửa.

Nó đi trước dòng tiếp theo kiểm tra in "không xác định".

Ngoài ra, tại sao bạn sử dụng thời gian chờ và không chỉ sử dụng các sự kiện onload hoặc DOMReady?

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