2011-12-09 96 views
2

我正在嘗試使用示例here來打印ASP.NET Image如何使用javascript打印圖像

當我使用上面的例子爲一個股利,它的工作原理,但我無法適應它打印其他任何東西。我怎樣才能打印出Image?我是否將Image封裝在div中,並將腳本中的「.text()」部分更改爲其他內容?

回答

7

因爲您將錯誤的參數傳遞給打印功能。用JavaScript打印東西就像調用window.print();方法一樣簡單。爲了測試它,只需使用開發工具的瀏覽器和寫入其控制檯:

window.print(); 

現在,當你要打印一些特定的,有兩種方式:

  1. 創建一個特殊的用於在同一頁面中打印的樣式表,隱藏其他元素並僅顯示指定的區域。
  2. 或者打開一個新窗口,在那裏複製你想要的東西,然後打印出來。

現在,你可以做的是寫自己的函數:

function printImage(image) 
{ 
     var printWindow = window.open('', 'Print Window','height=400,width=600'); 
     printWindow.document.write('<html><head><title>Print Window</title>'); 
     printWindow.document.write('</head><body ><img src=\''); 
     printWindow.document.write(image.src); 
     printWindow.document.write('\' /></body></html>'); 
     printWindow.document.close(); 
     printWindow.print(); 
} 

var image = document.getElementById('image'); 
printImage(image); 

,你也可以看到在行動here此功能。

只要讓瀏覽器打開彈出窗口,並且還請注意,我只會將圖像元素的src值傳遞到新窗口。

+0

您還可以添加'printWindow.close()'作爲最後一行自動打印後關閉窗口。 – Nate

0

是的,而不是使用.text(),您使用.html()您將<img />(包括當然的來源)傳遞給假文檔準備打印。

+0

嘗試過。只是在新窗口中顯示文字「null」,而不是圖像。嘗試使用原始,以防萬一asp.net圖像無法正常渲染 – user982119

+0

您可以發佈您的代碼嗎? –

0

爲什麼不把它變得這麼簡單?

<input type="button" value="Print Div" onclick="PrintElem('<img src=myimage.jpg>')" /> 

,然後調用彈出這樣的: 彈出(ELEM);

(你,如果你傳遞要打印的圖像這樣並不真的需要這個彈出()函數)

2

是。

以下java腳本將幫助您在圖像控件中打印圖像。

var printContent = document.getElementById('divImage'); 
var img = document.getElementById('imgMain'); 

var windowUrl = 'MyPage.aspx'; 
var uniqueName = new Date(); 
var windowName = "MyPage" + uniqueName.getTime(); 

printWindow = window.open(windowUrl, windowName, 'location=1,status=1,scrollbars=1,width=800,height=600'); 

printWindow.document.write("<div style='width:100%;'>"); 
printWindow.document.write("<img id='img' src='" + img.src + "'/>"); 
printWindow.document.write("</div>"); 

printWindow.document.close(); 
printWindow.focus(); 
printWindow.print(); 
printWindow.close(); 
return false; 
0

這是更好的解決辦法是,在谷歌瀏覽器也工作得很好:

var printWindow = window.open('', 'Print Window', 'height=533,width=800'); 
     printWindow.document.write('<html><head><title>Print Window</title>'); 

     printWindow.document.write("<script src='script/jquery-1.11.3.min.js' type='text/javascript'><\/script>"); 


     printWindow.document.write("<script type='text/javascript'>"); 

     printWindow.document.write("var DoPrint = false;"); 
     printWindow.document.write("$(document).ready(function() {"); 

     printWindow.document.write("DoPrint = true;"); 

     printWindow.document.write("});"); 

     printWindow.document.write("<\/script>"); 


     printWindow.document.write('</head><body ><img src=\''); 
     printWindow.document.write(document.getElementById('image').src); 
     printWindow.document.write('\' /></body></html>'); 
     printWindow.document.close(); 


     function Print() { 

      if (typeof printWindow.DoPrint != "undefined" && printWindow.DoPrint == true) { 

       clearInterval(PrintintervalNumber); 

       printWindow.print(); 
       printWindow.close(); 

      } 

     } 


     PrintintervalNumber = setInterval(Print, 1000);