说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

用CSS样式展现可打印页面

HTML文档下载 WORD文档下载 PDF文档下载
有许多创建可打印WEB页面的技术,许多都是复制页面并删除不需要的元素,许多都使用服务器端脚本(如:ASP,PHP,PERL,...)打开一个可打印的页面。我采用样式表来实现。

原作者:Per S

翻译:http://www.okbase.net/home/haobao

 

有许多创建可打印WEB页面的技术,许多都是复制页面并删除不需要的元素,许多都使用服务器端脚本(如:ASP,PHP,PERL,...)打开一个可打印的页面。我采用样式表来实现。

样式表

用样式表来实现是非常简单优雅的,你可以创建一个独立的样式表专门用于打印:
设置背景色为白色(background:#ffffff)
下划线(text-decoration:underline),对于彩色打印机,我们可以设置为蓝色
用display:none;隐藏不需要打印的内容

附加样式表:

<head><link rel="stylesheet" type="text/css" href="..." media="print" /></head>

media="print" (IE 4+, Netscape 6+, Opera 3.62+) 告诉浏览器这个样式只在打印时用。

我的代码是这样写的:

<link rel="stylesheet" type="text/css"    href="css/print.css" media="print" />

你也可以根据需要添加附加的样式:

body {     color : #000000;     background : #ffffff;     font-family : verdana,arial,sans-serif;    font-size : 12pt;}h2 {    font-size : 14pt;}a {     text-decoration : underline;    color : #0000ff;}#logo,#head,#menu,#tail,#printicon, {    display : none;}#appendedlinks {    page-break-before: always }

对于链接,我们可以用JavaScript统一修改:

// // IE only: attach eventhandlers.// They trigger when a user  prints a web page; //     From File->Print, File->Print Preview or//     by executing a window.print() command //window.onbeforeprint=beforePrintwindow.onafterprint=afterPrintfunction beforePrint() {    appendlinks(content);}function afterPrint() {    removelinks(appendedlinks);}//// Generic print function, called from the web page//function printContent() {    if (window.print) {           window.print();    } else {        alert("your browser doesn't support this function")    }}// // When appending links to the document, do not // append links pointing to the following domains / sites//var excludedomains=["soderlind.no", "soderlind.org","localhost"]var excludedomains=excludedomains.join("|")rexcludedomains=new RegExp(excludedomains, "i")//// appendlinks(id)// id = id of the part of the web page you want to extract links from//      ex: document.body//function appendlinks(id){        var strD = "<p/>";    var num = 0;    if (document.getElementById){        var links=id.getElementsByTagName("A")            var total=links.length        strD += "<dl id=\"appendedlinks\" border=0>"        strD += "<dt><h2>Links extracted from the document:</h2></dt>"        for (i=0;i<total;i++){            if (links[i].hostname.search(rexcludedomains)==-1                 && links[i].href.indexOf("http:")!=-1) {                strD += '<dt>'+links[i].innerText+'</dt>'                strD += '<dd>'+links[i]+'</dd>'                num++;            }        }        strD += "</dl>"        if (id.insertAdjacentHTML && num>0)            id.insertAdjacentHTML("beforeEnd",strD);    }}//// removelinks(id)// After the print job is done, remove the appended links from the document// id = appendedlinks//function removelinks(id) {    if (document.getElementById){        id.removeNode(true);    }}

当然,你也可以用JQuery使这一过程更简单,祝你编码愉快。

 

《近匠》AppCan:打造成云生态的移动PaaS平台 WhatsApp壮举:活跃用户超五亿、日7亿幅照片和1亿个视频 如期而至,GCC 4.9.0正式版发布! 【走近讲师】孙昌勋:容联云通讯构筑通讯能力云平台生态圈 最新版本的Hive 0.13发布,增加ACID特性 开发中的“软”与“硬”:高画质移动游戏开发之道 从国际编码竞赛来看编程语言受众度 AMD迎接变革:加速OpenCL的未来 角逐Hadoop市场,Cloudera与Hortonworks竞争白热化 OpenStack将提供对Docker的支持 Facebook Q1财报:营收25.02亿美元、59%来自于移动 黑客们盯上了卫星,IOActive的惊人发现 开发汽车应用之前,你必须了解的7件事 埃森哲:智能电视潮流,势不可挡 直接拿来用!Facebook移动开源项目大合集 高大上Hadoop技术培训:Hadoop在企业中的应用实战 【走近讲师】新浪丛磊:通过MAE构建企业内部私有PaaS平台 API增长新趋势 消息应用类独占鳌头 软件项目为何会失败? 严澜:搭建高可用的MongoDB集群(二) 微软、思科、Google、Facebook等联合推出CII 狙击“Heartbleed” 这是个神奇的国度:细数五大印度裔IT牛人CEO Atmel CMO Sander Arts眼中的创客运动 Unity“三巨头”:全心全意为开发者服务 全球移动广告现状报告:哪种平台、应用最赚钱? 《近匠》Smart Wallit,钱包找不到了?给它“打个电话”吧 Mozilla新CTO:JavaScript、 Firefox OS专家Andreas Gal 李彦宏发布百度大数据引擎,及与谷歌、亚马逊等类似项目对比 大数据领域,实时打击欺诈犯罪的4个战场 一周消息树:谷歌Project Ara,将开启下一个智能手机时代 数据恢复服务商的6个最佳实践 CSDN出的《JBuilder实用技术手册》到底怎么样呀?我看目录怎么像垃圾? 在jsp怎么取得用javabean连接得数据库中得记录总数 请教各位大师,如何用VB做一个象ComboBox一样的控件 web Service里的Application的问题 有没有能够打印固定行数的报表? 对XML不太熟悉,麻烦大家再看看! 关于bho及控制ie行为的问题, 如何动态的设置datawindow的计算域的表达式,及从程序中如何得到该计算域的值 [我贴我灌]巴塞罗那凯旋归来 “花样姑娘”泪洒观澜湖 一个到现在还没有解决的问题!我着急用啊!请哪位高手帮忙解决了,有高分相送! WIN32 CONSOLE APPLICATION 中怎么调用DLL (动态连接库) 怎么增加不了行,插入不了了?请大虾给个提示 50美元求作业! 如果没有学过C语言,能不能学J2SE啊? 100分请教:一个串行接口通信的问题————在线等待?!!!! 急,给个jb8中解决编辑jsp问题的补丁。谢谢 关于sendmail的设置以及PostNuke的安装 关于XML,XSL的兼容性问题 在SQL SERVER的视图不支持CASE语句吗?若要实现该如何写呢? 现在最标准的软件开发预算,各阶段的百分比是多少? ==========天哪!怎么会这样呢?我在全屏窗口中打开的任何窗口都是全屏显示的,可我不希望在全屏幕窗口中打开的窗口也是全屏怎么办啊?== 如何在远程服务器上安装web服务程序? 考虑到类的属性(表的字段)以后会增加,应该用怎样的设计模式或设计方法。 如何在子目录下获得根目录的网络路径? 急,IE每次打开都是最小化状态,怎样实现每次打开时将其最大化! 希望和大家讨论一下关于WebService的事务继承性的问题 请教一个关于日期使用的问题 急!!一个建表问题 WSAD怎么显示代码行号?? 50美元求作业!access 有没有能够打印固定行数的报表? 请教接收视频信号的问题 VBscript转换为JScript? treeview的初级问题(解决立刻给分),关于节点的OnSelectedIndexChanged事件? 如何知道Clientdataset中哪些记录改变了? 如何构建Access数据库? 有没有soap client for ce 呀? 关于在不同环境下的时钟问题!!! 关于在一张图上标识位置的问题 vs.net 2003的msdn 安装好后为何不能使用? 如何在asp中post一段xml包到一个地址 vc1.0编译的问题 怎麽在Jbuilder中调用带参数的ORACLE数据库中的存储过程 如何用VB来写配置IIS的程序? 如何卸载xp? 如何知道DBGrid中当前编辑的字段的长度? 绝对经典 如何在安装程序中注册windows service,up有分!! 程序异常终止了,那么函数中的对象会被析构吗、变量空间会被归还吗 为什么能用网页打开一个url,用流读却出错,是不是端口被封了阿? 请问各位高手:关于建库后的几个疑点! 情人之间应该保持怎样的距离?爱是一种誓言,一种承诺.说出口就要彼此相依.可年轻幼稚的我们并不知和他(她)保持一段怎样的距离,请有经验的谈谈我们应该做 情人之间应该保持什么样的距离为好 搬弄是非 类似的成语 情侣之间是否应该保持适当的距离?那么,这个适当的距离是多远呢? 情人之间应该保持怎样的温度和距离 《未来日记》问题:雪辉的日记到底是什么意思第二话中说雪辉的日记不能记有关自己的事 只能记观察到的事 可是自己观察到的不就是自己的事吗 自己会走那条路自己会碰到什么之类的 第 I have to get what I want 内蒙古锡盟是个什么地方?我男友要去那里出差,可我从没听说过这个地方,他说的锡盟是锡林郭勒盟吗?那锡林郭勒盟又是个什么级别呢?是相当于省吗?如果是相当于省,那跟内蒙又是什么关系啊 DěJINY KRáSY怎么样 人为什么会有两只眼睛?哈哈,有胆的近来卡卡卡侃侃! 人为什么有两只眼睛如果没有地球,我们人类还能生存吗 暴风雨影响法国数万家庭用电16岁少女网聊遭2名男子下药轮奸 醒男子将手伸进女子短裤乱摸日媒:中日论坛达成共识力避冲突 赵启中央财政采取多种措施 加快拨付农业综斯诺克国锦赛丁俊晖晋级次轮 手握赛点跨境电商游走政策灰色地带 诸多问题仍“永康车王”陈宏辉集资诈骗14亿 被能源局施压国网加码治顽疾 规划滞后等浙江释疑吴英资产处置:困难重重 已追托雷斯被\"激活\"进绝杀球 穆里尼从未做过如此方案,不实传言请勿轻信两起骗局被当场戳穿恒大会是一条鲶鱼吗?一老赖被拘,两老赖乖乖还钱钱哥私募选股表现抢眼让改革旗帜高高飘扬failed: 粤剧的春天国足,今晚你会以哪种方式上头条回老家探亲,义乌兵哥哥勇斗持刀歹徒failed: 要命的“激情”……failed: 以放权市场 应对房产
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘