从网页打印屏幕截图



我正在创建一个网页,我需要制作一个打印选定区域的按钮。经过几次搜索,一切都导致我实现html2canvas。 我安装了它 npm 在命令提示符下安装 HTML2canvas。在他们提到的官方html2canvas网站中从'HTML2canvas'导入html2canvas;我想我需要在我的aspx文件的顶部添加(?( 到目前为止,我已经编写了以下代码部分:

function getScreenshot() {
alert("bob");
html2canvas(document.body, {
onrendered: function(canvas) {
var canvasImg = canvas.toDataURL("image/jpg");
$('#test').html('<img src="' + canvasImg + '" alt="">');
}
});
var printContent = document.getElementById("row");
var printWindow = window.open("", "");
printWindow.document.write(printContent.innerHTML);
printWindow.document.write("<script src='http://code.jquery.com/jquery-1.10.1.min.js'></script>");
printWindow.document.write("<script>$(window).load(function(){ print(); close(); });</script>");
printWindow.document.close();
};
<div id="test" class="body-content animated fadeIn">
<a href="javascript:getScreenshot()">
<img src="Images/printer.png" width="40" height="40" align="right">
</a>
</div>

问题是当我单击按钮时,没有打开任何窗口进行打印。该按钮肯定有效,因为我收到警报窗口。 我缺少什么才能正常工作?可以是一个安装过程吗?可以不好的属性实现吗?

工作小提琴:小提琴。

我建议打开一个新的html页面,其中包含您尝试打印的元素,以及一个按钮"打印此页面",如下例所示。一旦用户单击该按钮,浏览器的打印页面就会打开。

这是工作函数,您需要做的就是在从网站页面单击时调用此函数,并将YOUR_ELEMENT更改为容器的 ID(在您的情况下 #row(。

<script type="text/javascript">
		function OpenPrintPage() {
			var OriginalContent = document.getElementById('YOUR_ELEMENT').innerHTML;
			var PrintWindow = 	window.open("","PrinterFriendlyPage","scrollbars=yes,status=yes,toolbar=yes,menubar=yes,resizable=yes,height=510,width=750"); 
			
			PrintWindow.document.write( '<html><head><title>' + document.title +'</title></head><body><div id="' + 'content' + '">' + '</div><a class="printbtn" href="javascript:window.print()">Print This Page</a> </body></html>'); 
			PrintWindow.document.close(); 
			PrintWindow.document.getElementById('content').innerHTML += OriginalContent; 
		}
	</script>

首先,请确保正确包含脚本文件。应该有一个包含与网络兼容的库版本的<script>标记。大多数使用npm install ...的说明;import ...假设您正在使用像 webpack 或 rollup 这样的 Web 捆绑器来制作单个捆绑的 JavaScript 文件,或者正在使用新的 es6 模块导入器。这看起来不像你在这里做的事情。

相反,您可以包含 html2canvas 的预构建版本,例如来自 https://html2canvas.hertzen.com/dist/html2canvas.js 或 https://unpkg.com/html2canvas@1.0.0-alpha.12/dist/html2canvas.js。

<script src="https://unpkg.com/html2canvas@1.0.0-alpha.12/dist/html2canvas.js"></script>

您可以在此处看到一个工作示例:http://jsfiddle.net/u8Lz32k0/7/

您是否在网页中加载了脚本?你能把HTML文件的开头贴在显示所有导入的地方吗?