倾情奉献:如何在打印时选择内容进行打印

chinesun 2003-08-20 05:01:59
往往在打印网页时,执行window.print会把网页的所有内容全部打印,而有一大部分比如网页头部的图片、尾部的版权声明、按钮等,并没有必要打印出来,打印出来浪费时间又浪费油墨。如何把这些内容进行有选择的打印让你的打印文本更简洁明了,更省时美观呢?以下就对这个问题写一个JS文本,供有缘人参考。
_____________________________________________________
<script language="javascript">
function DtPrint() {
if (window.print) {
var p_1 = document.all.p_1.innerHTML;
var p_2 = document.all.p_2.innerHTML;
//**************
//这里根据你要打印的哪些内容,从原显示页面中用
//<div id=P_1>p_1....</div><div id=P_2>p_2...</div>等标示,要打印多少项目就用多少下
//提示一下,自己体会:),此处我只写出两个出来:D
//**************
var css = '<style type="text/css">' +
'p { line-height: 120%}' +
'.ftitle { line-height: 120%; font-size: 18px; color: #000000}' +
'td { font-size: 10px; color: #000000}' +
'</style>' ;
//**************
//这里是定义打印用的CSS,可以根据你自己的设定去写适合你的格式哦
//本文只定义三个,p,.ftitle,td,其余自己写。越美观越好。
//**************
var body ='<table width="640" border="0" cellspacing="0" cellpadding="5">' +
' <tr> ' +
' <td class="fbody"> ' +
' <div align="center" class=ftitle>' + p_title + '</div>' + p_2 +
' </td>' +
' </tr>' +
'</table>';
//**************
//body这才是你重新设置的打印格式,根据你的打印要求,重新把原显示网页的DIV内容重新
//组合,可以根据你原来的表格内容,去掉不要打印的东东,只调用你要打印的内容
//另外:根据经验,表格大小为640左右正好是适合A4打印幅面!哈!
//**************
document.body.innerHTML = '<center>' + css + body + '</center>';
//**************
//然后在这里把document.body重新设一下,这就是打印文档!(有加CSS格式了)
//**************
window.print();
//**************
//一定要调用window.print()哦,否则,打印无效……说了那么多就成废话了:'(
//**************
}
}
</SCRIPT>

//在页面中,然后通过:dtPrint()调用,就行了
//比如:
//<input type="button" value="打印" LANGUAGE="javascript" onclick="return dtPrint()" ID="Button2" NAME="Button1">
//噢!注意这个可以不用<div></div>标示哦,即使标示,也不用在以上打印文本中调用出来,那样这个Button就不会打印出来了哦,嘿嘿!

_______________________________
  看明白了没?看明白了一定给我一个反应哦。。。不然我花这么多时间来解释这个钻研多日的格式化打印技术,白忙了:D
  这个文档对您有帮助吗?如果有一点点的提示,请给我回贴哦,回贴就是对我劳动的肯定哦!谢谢!
...全文
88 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
LoveCreatesBeauty 2003-12-24
  • 打赏
  • 举报
回复
学习
kmbbo 2003-12-16
  • 打赏
  • 举报
回复
to:q_mei(q_mei
我怎么连不上呢
qmei 2003-10-24
  • 打赏
  • 举报
回复
http://219.236.24.17:8080/webprint/index.html有打印组件
luok 2003-09-03
  • 打赏
  • 举报
回复
chinesun (石上) :

<style>
@media print {
.noprint {display:none}
}
</style>
<button class="noprint"> 不要 Print</button>

在任何不要打印的元素上加 class="noprint",它就不会被打印. 一点不会破坏显示页面

其打印版面会存在空位===>也不会的.
chinesun 2003-08-22
  • 打赏
  • 举报
回复
to luok(罗开) :

您的写法用CSS来处理,是不错的,不过有的套嵌的表格中有的线要打,有的线不要打就不好处理了。

当然,你这种办法是很快捷的,很简单,但其打印版面会存在空位,无法实际真正定位打印。

本文的问题解决的是显示的是一种界面,而打印的是另一种版面,如显示时,可以显示大量的图片、版权信息、相关链接等,而这些信息没必要打印出来,这样就可以采用本文的做法。

您采用的是CSS的Class做法,不打印的内容统一用一个class来界定,显得版面单一,而您若采用多种不打印class来体现,那做法不是比本文的做法更复杂、花更多时间去处理CSS之上吗?

方法可以多样化,条条道路通罗马,并不能说哪一种是唯一有效的方法哦。
flyshp 2003-08-22
  • 打赏
  • 举报
回复
^_^

网路资源无限 大家共同分享 up
mayafree 2003-08-22
  • 打赏
  • 举报
回复
to wanghuixue(辉):
去掉页眉页脚的办法:
一、最省事,也是最笨的,最直接的是点击ie浏览器的文件菜单,选中页面设置,将页眉页脚下面的文本框清空,即将&w&b页码,&p/&P,&u&b&d都删掉
它们的作用分别是:
窗口标题 &w
网页地址 (URL) &u
短日期格式(由“控制面板”中的“区域设置”指定) &d
长日期格式(由“控制面板”中的“区域设置”指定) &D
当前页码 &p
总页数 &P
文本右对齐(后跟 &b) &b
文字居中(&b&b 之间) &b&b
单个 & 号 (&)
二、在要打印的页面里用代码控制:
<OBJECT id=factory style="DISPLAY: none"
codeBase=http://www.meadroid.com/scriptx/ScriptX.cab#Version=5,60,0,360
classid=clsid:1663ed61-23eb-11d2-b92f-008048fdd814 viewastext></OBJECT>
<SCRIPT defer>
function println() {
factory.printing.header = ""
factory.printing.footer = ""
factory.printing.Print(true)
factory.printing.leftMargin = 0.2
factory.printing.topMargin = 0.5
factory.printing.rightMargin = 0.2
factory.printing.bottomMargin = 1.5
window.print();
}
</SCRIPT>
<input onClick="this.style.visibility='hidden';println();return false" type="button" value="打印" class="button">
wjcking 2003-08-22
  • 打赏
  • 举报
回复
up
jjstar 2003-08-21
  • 打赏
  • 举报
回复
to hrong(黄蓉)
你的方法我试了一下,新弹出来的预览页面如果点菜单中的关闭可以正常工作,可是如果点击窗口的关闭按钮,那么你open的printWindow就又显示出来了,这个怎么处理
luok 2003-08-21
  • 打赏
  • 举报
回复
<style>
@media print {
.noprint {display:none}
}
</style>
<button class="noprint">Print</button>

这个才是有效的方法,显示的时候照样显示,但是不打印出来,而且控制非常方便. 还有一个是media SCREEN.

几年来,我一直用这个,屡试不爽啊
wanghuixue 2003-08-21
  • 打赏
  • 举报
回复
可是这样还是会把网页的页眉页脚打印出来,怎么去掉?
wsyab 2003-08-21
  • 打赏
  • 举报
回复
收藏
chinesun 2003-08-21
  • 打赏
  • 举报
回复
to bencalie(Bencalie):
其实我的目的是指在有的时候,网页上显示的是一种风格,比如打印发票,显示时,显示发票的样子,包括表格,划线等,而打印时,发票的表格线没必要打,那就可以使用这种方式来调用打印。
DFlyingchen 2003-08-21
  • 打赏
  • 举报
回复
谢谢了,收藏
zhaoweiwei 2003-08-21
  • 打赏
  • 举报
回复
收藏 先
liuzxit 2003-08-21
  • 打赏
  • 举报
回复
收閱
bencalie 2003-08-21
  • 打赏
  • 举报
回复
网页头部的图片、尾部的版权声明、按钮都可以加上如下的样式,其实CSS最简单

<style>
@media print {
.noprint {display:none}
}
</style>
<button class="noprint">Print</button>
chinesun 2003-08-21
  • 打赏
  • 举报
回复
谢谢
hrong 2003-08-20
  • 打赏
  • 举报
回复
function printPreview() //将 DataGrid 打印预览
{
try
{
var printWindow = window.open("","_blank");
var str = "<OBJECT id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 width=0></OBJECT>"
var s = "<html>\r\n";
s += "<head>";
s += "<LINK href='../images/css.css' type='text/css' rel='stylesheet'>";
s += "<meta http-equiv='Content-Type' content='text/html; charset=gb2312'>";
s += "</head>";
s += "<body><center><br>";
s += "<div align=center style='width:96%'>";
s += document.all.dgAnswer.outerHTML;
s += "</div>";
s += "</center></body>";
s += "</html>";
printWindow.document.write(s);
printWindow.document.close();
printWindow.document.body.insertAdjacentHTML("beforeEnd", str);
printWindow.document.all.WebBrowser.ExecWB(7,1); //打印预览
//printWindow.document.all.WebBrowser.ExecWB(6,6);//直接打印
printWindow.close();
}
catch(e)
{
alert("您的浏览器版本太低,请升级您的浏览器!");
}
}
这是我写的一段代码, 也奉献出来大家参考参考.

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧