js实现页面打印


js有多种方式实现打印

window.print()

window.print();会弹出打印对话框,打印的是window.document.body.innerHTML中的内容,但是iframe中无法使用需要用 document.execCommand(“print”)

	<body>
		<div id="print_html">这里是要打印的html内容</div>
		<input type="button" name="button_print" value="打印" onclick="javascript:printHTML()">
		<script type="text/javascript">
			/**打印页面*/
			function printHTML(_this) {
				// 获取当前页的html代码
				var bdhtml = window.document.body.innerHTML;
				/*//设置打印开始区域
				//var startStr = '<!--startprint-->';
				// 设置打印结束区域
				//var endStr = '<!--endprint-->';
				//从标记里获取需要打印的页面
				var printHtml = bdhtml.substring(bdhtml.indexOf(startStr) + startStr.length, bdhtml.indexOf(endStr));*/
				//隐藏不必要的按钮和样式
				// 通过id获取需要打印的页面
				var printHtml = document.getElementById('print_html').innerHTML;
				// 需要打印的页面
				window.document.body.innerHTML = printHtml;
				if(!!window.ActiveXObject || "ActiveXObject" in window) { //是否ie
					remove_ie_header_and_footer();
				}
				//调用打印
				window.print();
				// 还原界面
				window.document.body.innerHTML = bdhtml;
				window.location.reload();
			}
			//去掉页眉、页脚
			function remove_ie_header_and_footer() {
				var hkey_path;
				hkey_path = "HKEY_CURRENT_USER\\Software\\Microsoft\\Internet Explorer\\PageSetup\\";
				try {
					var RegWsh = new ActiveXObject("WScript.Shell");
					RegWsh.RegWrite(hkey_path + "header", "");
					RegWsh.RegWrite(hkey_path + "footer", "");
				} catch(e) {

				}
			}
		</script>
	</body>

document.execCommand(“print”)

该方式也兼容各个版本的浏览器,同window.print()一样,其启动的是打印对话框

iframe中打印

main.html

<body>
	<button type="button" id="printBtn">打印</button>
	<iframe frameborder="0" src="" id="printFrame" style="width: 0;height: 0;"></iframe>
	<script type="text/javascript" src="./js/jquery-3.1.1.js"></script>
	<script type="text/javascript">
		$("#printBtn").click(function() {
			$("#printFrame").attr('src', './printIframe.html');
		})
	</script>
</body>

printIframe.html

	<head>
		<meta charset="UTF-8">
		<title>ifrom打印</title>
		<style type="text/css" media="print">
			html {
				height: 100%;
				width: 100%;
			}
		</style>
		<script type="text/javascript" src="./js/jquery-3.1.1.js"></script>
	</head>

	<body style="padding: 0;margin: 0;height: 100%;width: 100%;">
		<div id="printBody" style="width: 100%;height: 100%;">
			<span style="display:block;position:absolute;top:50%;left:50%;">
				我正在被打印
			</span>
		</div>
		<script type="text/javascript">
			var infoHtml = '<span style="display:block;position:absolute;top:0%;left:0%;">我正在被打印</span>';
			document.execCommand("print");
		</script>
	</body>

JQuery插件

jquery.print.js 下载地址:https://github.com/DoersGuild/jQuery.print

	<head>
		<meta http-equiv=Content-Type content="text/html; charset=utf-8">
		<title>JQuery打印</title>
		<script type="text/javascript" src="./js/jquery-3.1.1.js"></script>
		<script language="javascript" src="./js/jquery.print.js"></script>
	</head>

	<body style='margin:0 auto;'>
		<div id='ganburenmianbaio'>
			我在等待被打印
		</div>
		<button id='button_print' name='button_print' onclick="javascript:printit()">打印</button>
	</body>
	<script language="javascript">
		function printit() {
			$("#ganburenmianbaio ").print({ iframe: true, prepend: '<br/>' });
		}
	</script>

HttpPrinter打印控件

网友推荐,百度

打印预览

可以参考:https://blog.csdn.net/yongchao940/article/details/73129425
chrome浏览器、win10自带的IE浏览器 调用打印弹出的打印设置界面中包含打印预览部分,故其通过上面的打印函数的调用即可实现
IE9以后的版本、火狐不支持webbrowser控件了,JS调用不了浏览器的打印预览的功能,我们只能用iframe模拟打印预览的对话框,将需要打印的内容显示在该对话框中,然后在调用打印的功能实现打印。
jquery打印预览插件下载地址:https://github.com/etimbo/jquery-print-preview-plugin

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值