星五博客

WebPascal脚本模型教程 - 打印网页元素

在项目中,打印是不可或缺的功能,网页版的打印功能一直比较薄弱,但也不是不能用;我们可以打印网页上部分内容,来实现相应的报表、单据的打印。

比如本站的文章页面,点击打印机图标,就可以将当前阅读的文章打印出来,或者保存成pdf文件(这个针对chrome谷歌浏览器),实现原理是通过js将页面中不需要打印的内容进行移除,并添加需要打印的内容,然后通过调用window.pint()进行打印,代码如下:

<!-- 指定区域打印实现 -->
<script type="text/javascript"> 
	var bodyhtml;
	function printPage() { 
		//获取当前页的html代码
		bodyhtml = window.document.body.innerHTML;
		// 要打印的部分  
		var a="<html><head>";
		var b="</head><body>";
		var c="</body></html>" 
		var d="<p><h3>"+$("title").html().replace("_奥非域","")
                        +"</h3>"+$(".post-meta").html()+"</p>";
		var printhtml = a+$("head").html()+b+d+$(".post-content").html()+c;  
		//alert(printhtml);
		document.body.innerHTML=printhtml;
		setTimeout("CloseAfterPrint();",0);
		return false;
	} 
	function CloseAfterPrint(){
		if(tata=document.execCommand("print")){
			document.body.innerHTML=bodyhtml;
		}
			else setTimeout("CloseAfterPrint();",1000);
	}
</script>
测试了ie11和chrome,效果不错,下图是chrome浏览器下保存pdf的效果。