2013-12-16 87 views
4

我想用javascript來打印圖像。 所以我用這個代碼在新窗口和打印打開圖像:用JavaScript打印圖像

win = window.open(img.src,"_blank"); 
win.onload = function() { win.print(); } 

這工作正常使用默認的圖像文件:

<img id="image1" src="myimage.jpg"> 

但是當我的圖像數據替換默認的圖像讀取盤:

var fileElem = document.getElementById("fileElem").files[0]; 
var reader = new FileReader(); 
reader.onload = function(event) { 
    img.src = event.target.result; 
}; 
reader.readAsDataURL(fileElem); 

,然後打開新窗口&打印 - 圖像中的新窗口apears罰款,但沒有打印操作完成。 如何使win.print()正常工作?

+0

* t沒有打印操作完成*這是什麼意思?打印對話框不顯示? – epascarello

+0

是的,不在第二種情況下打印對話框apears。 – Joe

+0

爲什麼要用新窗口? CSS打印介質,當打印發生時,隱藏除圖像之外的所有內容。 – epascarello

回答

4

好的!

心中已經試過這在Chrome和它工作得很好:

<html> 
    <head> 
     <script language="javascript" type="text/javascript"> 
      function printImage() { 
       var fileElem = document.getElementById("fileElem").files[0]; 
       var reader = new FileReader(); 
       reader.onload = function(event) { 
        var html = "<html><head>" + 
         "</head>" + 
         "<body style ='-webkit-print-color-adjust:exact;'>"+ 
         "<img src=\"" + event.target.result + "\" onload=\"javascript:window.print();\"/>" + 
         "</body>"; 
        var win = window.open("about:blank","_blank"); 
        win.document.write(html); 

       }; 
       reader.readAsDataURL(fileElem); 
      } 
     </script> 
    </head> 
    <body> 
     <input type="file" id="fileElem"/> 
     <button onclick="printImage()">PRINT</button> 
    </body> 
</html> 

問候。

0

我不知道,因爲我不知道所有的代碼,但也許這可以工作:

var fileElem = document.getElementById("fileElem").files[0]; 
var reader = new FileReader(); 
reader.onload = function(event) { 
    var win = window.open(event.target.result,"_blank"); 
    win.onload = function() { win.print(); } 
}; 
reader.readAsDataURL(fileElem); 

你不需要了。「IMG」標籤。

+0

謝謝,我測試了這段代碼,但行爲是一樣的(我使用Google Chrome進行測試) – Joe