2016-01-08 73 views
0

以上是一口。所以我抓取一個畫布並使用toDataURL()將其轉換爲數據URI。目標是創建一個打印對話框來打印該圖像。我遇到了將創建的圖像推送到新窗口並在其上調用打印的問題。見下:使用javaScript打印toDataURL圖像

var image = new Image(); 
var canvas = event.context.canvas; 
var data = canvas.toDataURL(); 
image.src = data; 
var printWindow = window.open('', 'to_print', 'height=600,width=800'); 
var html = '<html><head><title></title></head><body style="width: 100%; padding: 0; margin: 0;" onload="window.focus(); window.print(); window.close()">' + image + '</body></html>'; 
printWindow.document.write(html); 
printWindow.document.close(); 

作爲打印東西,尤其是lodash模板,這個工作的解決方法。它不漂亮,但它的工作原理。

無論如何,當我運行此我回來:

[object HTMLImageElement] 

我不知道爲什麼它給我,而不是顯示圖像。有沒有人有嘗試打印由toDataURL()方法構建的圖像的經驗?

回答

1

您不能將圖像對象連接成一個HTML字符串,或者您可以,但可以給出該對象的字符串表示形式,即[object HTMLImageElement]

你不得不在HTML創建<img>標籤,而不是

變種X = window.open(); x.document.open(); x.document.write('content'); x.document.close();

var canvas = event.context.canvas; 
var data = canvas.toDataURL(); 

var html = '<html><head><title></title></head>'; 
    html += '<body style="width: 100%; padding: 0; margin: 0;"'; 
    html += ' onload="window.focus(); window.print(); window.close()">'; 
    html += '<img src="' + data + '" /></body></html>'; 

var printWindow = window.open('', 'to_print', 'height=600,width=800'); 

printWindow.document.open(); 
printWindow.document.write(html); 
printWindow.document.close(); 
printWindow.close(); 
+0

我知道這很簡單。謝謝! –