首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从网页打印截图

从网页打印截图
EN

Stack Overflow用户
提问于 2018-08-13 16:48:58
回答 3查看 1.3K关注 0票数 1

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

代码语言:javascript
复制
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();
};
代码语言:javascript
复制
<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>

问题是,当我单击按钮时,没有打开打印窗口。该按钮可以正常工作,因为我得到了警报窗口。我错过了什么才能让它发挥作用?可以是一个安装过程吗?会不会是不好的属性实现?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-08-13 17:19:59

首先,确保正确地包含了脚本文件。应该有一个<script>标记,其中包含与web兼容的库版本。大多数使用npm install ...import ...的说明假设您使用的是像webpack这样的web绑定器或rollup来生成单个捆绑的JavaScript文件,或者使用新的es6模块导入程序。这看起来不像你在这里做的事。

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

代码语言:javascript
复制
<script src="https://unpkg.com/html2canvas@1.0.0-alpha.12/dist/html2canvas.js"></script>

您可以在这里看到一个有用的示例:http://jsfiddle.net/u8Lz32k0/7/

票数 1
EN

Stack Overflow用户

发布于 2018-08-13 16:59:46

工作小提琴:小提琴

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

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

代码语言:javascript
复制
<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>

票数 1
EN

Stack Overflow用户

发布于 2018-08-13 17:01:35

你把脚本加载到网页上了吗?您可以在HTML文件的开头发布显示所有导入的内容吗?

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51827071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档