nwjs中进行页面打印,为什么两页的页面打印出来只有第一页

JavaScript07

nwjs中进行页面打印,为什么两页的页面打印出来只有第一页,第1张

1、在视图中,将页面设置为“分页预览” 2、将蓝色实线边框内的虚线,拉倒边框上。 3、点击“打印预览”查看效果,已经显示为一页了。

主要是为了打印 <pre>里面的内容,为了方便使用,现在把它写成了一个 prototype 形式的 jQuery 插件,支持当前 5 大浏览器。

【插件】

(function($) {

$.fn.printMe = function(text_only) {

// 获取元素内容

var content = text_only ? $(this).text() : $(this).html()

// 在页面创建 iframe

$("body").append('<iframe id="iframe-print" style="display: none"></iframe>')

// 获取 iframe window

var ifrm = $("#iframe-print")[0].contentWindow

// 将内容写入 iframe

ifrm.document.write(content)

// IE

if(navigator.userAgent.match(/MSIE/)) {

ifrm.document.execCommand("print", false, null)

}

// Opera

else if(navigator.userAgent.match(/Opera/)) {

// Opera 需要打开新窗口

var printWin = window.open(""), printDoc = printWin.document

printDoc.open()

printDoc.write('<!DOCTYPE html><html><head></head><body onload="window.print()window.close()">' + content + '</body></html>')

printDoc.close()

}

// Firefox/Chrome/Safari/其它浏览器

else {

ifrm.print()

}

// 释放 cache

ifrm = null

// 移除 iframe

$("#iframe-print").remove()

}

})(jQuery)

【用法】

$( 要打印的元素 ).printMe( 只打印text选项 )

要打印的元素:指定 id 或 class,也就是你说的要打印的指定区域。

只打印text选项:如果指定为 true 或 1,将会把指定元素内的 html 全部忽略,也就是打印区域内的 .text()。默认为 false,也就是打印区域内的 .html()。

【实例 1】

$("#print_div").on("click", function() {

$("#div").printMe()

})

<div id="div"><p style="color: #f00">文字段落</p><em>斜体文字</em></div>

<a id="print_div">打印 div 中的 html</a>

此例将打印 div 中的 p 和 em。

【实例 2】

$("#print_div_text").on("click", function() {

$("#div").printMe(1)

})

<div id="div"><p style="color: #f00">文字段落</p><em>斜体文字</em></div>

<a id="print_div_text">打印 div 中的 text</a>

此例将忽略 div 中的 p 和 em,只打印 text。

直接用PrinterJob的print方法可以的不过查找加载打印机的速度很慢,有时可能要好几分钟,如果单线程就会出现卡死的情况,程序运行时先建一个后台线程去加载设置打印机就好了。

如果是web的话可以弹出一个新的窗口在窗口里显示需要打印的图片,再用window.print()打印窗口内容就行了。

1、js实现(可实现局部打印)

[html] view plain copy

<input id="btnPrint" type="button" value="打印" onclick="javascript:window.print()" />

<input id="btnPrint" type="button" value="打印预览" onclick=preview(1) />

<style type="text/css" media=print>

.noprint{display : none }

</style>

<p class="noprint">不需要打印的地方</p>

<script>

function preview(oper)

{

if (oper <10)

{

bdhtml=window.document.body.innerHTML//获取当前页的html代码

sprnstr="<!--startprint"+oper+"-->"//设置打印开始区域

eprnstr="<!--endprint"+oper+"-->"//设置打印结束区域

prnhtml=bdhtml.substring(bdhtml.indexOf(sprnstr)+18)//从开始代码向后取html

prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr))//从结束代码向前取html

window.document.body.innerHTML=prnhtml

window.print()

window.document.body.innerHTML=bdhtml

} else {

window.print()

}

}

</script>

<p>XXXXX</p>

<!--startprint1-->要打印的内容<!--endprint1-->

再加个打印按纽 onclick=preview(1)

2、调用windows底层打印,报安全警告,不建议使用(不支持局部打印)

[html] view plain copy

<HTML>

<HEAD>

<TITLE>javascript打印-打印页面设置-打印预览代码</TITLE>

<META http-equiv=Content-Type content="text/htmlcharset=gb2312" />

<SCRIPT language=javascript>

function printsetup(){

// 打印页面设置

wb.execwb(8,1)

}

function printpreview(){

// 打印页面预览

wb.execwb(7,1)

}

function printit()

{

if (confirm('确定打印吗?')) {

wb.execwb(6,6)

}

}

</SCRIPT>

</HEAD>

<BODY>

<DIV align=center>

<OBJECT id=wb height=0 width=0

classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 name=wb></OBJECT>

<INPUT onclick=javascript:printit() type=button value=打印 name=button_print />

<INPUT onclick=javascript:printsetup()type=button value=打印页面设置 name=button_setup />

<INPUT onclick=javascript:printpreview()type=button value=打印预览 name=button_show />

一按开始的减肥了卡时间段

</DIV>

</BODY>

</HTML>

3、jQuery实现(支持局部打印)

[html] view plain copy

<script type="text/javascript" src="jquery-1.4.2.min.js"></script>

<script type="text/javascript" src="jquery.PrintArea.js"></script>

<script>

$(document).ready(function(){

$("input#biuuu_button").click(function(){

$("div#myPrintArea").printArea()

})

})

</script>

<input id="biuuu_button" type="button" value="打印"></input>

<div id="myPrintArea">.....文本打印部分.....</div>