js或jquery实现页面打印

实现jQuery打印区域的实用技术指南 本文还有配套的精品资源,点击获取 简介:本文旨在介绍如何使用jQuery插件实现网页中特定区域的打印功能,以提高效率并节省纸张。文章首先介绍了jQuery库和其在DOM操作、事件处理和动画制作中的作用,然后讲解了实现局部打印功能所需借助的jQuery打印插件。文章以 jquery.printElement.js 和 jqPrint 插件为例,详细... 阅读详情
最近一直在做页面打印相关的页面。这里分享下用css、js或jQuery实现页面打印的几种方法。
1. 使用js打印当前窗口的内容:

<input type='button' value='打印整页' onclick='javascript:window.print();' />

2. 使用js打印当前窗口的内容:
<html>
<head>
<script type="text/javascript">
function printpage()
 {
 window.print()
 }
</script>
</head>
<body>
<input type="button" value="Print this page"
onclick="printpage()" />
</body>
</html>

注:方法2和方法1原理上是一样的

3. 使用css控制局部打印:适用于只有小部分区域的内容不显示:
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<body >
<style media=print type=”text/css”>
    .noprint{visibility:hidden}
</style>
要打印的内容。哈哈!
<p class="noprint">将不打印的代码放在这里。</p>
<a href="javascript:window.print()" target="_self">打印</a>
</body>
</html>

注:通过css设置打印样式,需要针对打印机做专门的设置:
@media print {

}
或者引用外部样式表:

<link rel="stylesheet" media="all" href="style.css")">

只对打印有效的样式:

<link rel="stylesheet" media="print" href="print.css")">

不过如果是新建空白页的话,有可能外部链接的打印样式表不会生效,因此只能将其改为<style>写入当前页内。

4. 使用js实现局部打印:方法一
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>haorooms js局部打印案例</title>
<script type="text/javascript">   
    function doPrint() {    
        bdhtml=window.document.body.innerHTML;    
        sprnstr="<!--startprint-->";    
        eprnstr="<!--endprint-->";    
        prnhtml=bdhtml.substr(bdhtml.indexOf(sprnstr)+17);    
        prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));    
        window.document.body.innerHTML=prnhtml; 
        window.print();    
}    
</script>
</head>
<body>
<p>1不需要打印的地方</p>
<p>2这里不要打印啊</p>
<!--startprint--><!--注意要加上html里star和end的这两个标记,之前没加,一直没效果,谁叫咱们菜呢~-->
<h1>打印标题</h1>
<p>打印内容~~</p>
<!--endprint-->
<button type="button" onclick="doPrint()">打印</button>
<p>1haorooms博客不打印的地方啊哈哈哈哈</p>
<p>2</p>
</body>
</html>
</html>
5. 使用js实现局部打印:方法二
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript">

    //自动在打印之前执行
    window.onbeforeprint = function(){
        $("#test").hide();
    };
    //自动在打印之后执行
    window.onafterprint = function(){
        $("#test").show();
    }
</script>
<body >
<div id="test">这段文字不会被打印出来</div>
<input type="button" onclick="window.print();" value="打印本页" />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<div>
    打印区域内容
</div>
<script src="js/jquery.js"></script>
</body>
</html>
6. 使用js实现局部打印:方法三
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<body >
<script>
    function myPrint(obj){
        var newWindow=window.open("打印窗口","_blank");//打印窗口要换成页面的url
        var docStr = obj.innerHTML;
        newWindow.document.write(docStr);
        newWindow.document.close();
        newWindow.print();
        newWindow.close();
    }
</script>
<div id="print">
    <hr />
    打印演示区域,点击打印后会在新窗口加载这里的内容!
    <hr />
</div>
<button onclick="myPrint(document.getElementById('print'))">打 印</button>
</body>
</html>
7. 通过WebBrowser组件打印:调用windows底层打印,报安全警告,不建议使用(不支持局部打印)
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<head>
    <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>
<p class="noprint">
    <OBJECT classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" height="0" id="wb" name="wb" width="0"></OBJECT>
    <input type="button" name="button_print" value="打印" onclick="javascript:printit()" />
    <input type="button" name="button_setup" value="打印页面设置" onclick="javascript:printsetup();" />
    <input type="button" name="button_show" value="打印预览" onclick="javascript:printpreview();" />
</p>
</body>

注:WebBrowser是IE内置的浏览器控件,无需用户下载.
WebBrowser控件: <object ID='WebBrowser' WIDTH=0 HEIGHT=0 CLASSID='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'></object>

关于这个组件的用法,列举如下:
WebBrowser.ExecWB(1,1) 打开
Web.ExecWB(2,1) 关闭现在所有的IE窗口,并打开一个新窗口
Web.ExecWB(4,1) 保存网页
Web.ExecWB(6,1) 打印
Web.ExecWB(7,1) 打印预览
Web.ExecWB(8,1) 打印页面设置
Web.ExecWB(10,1) 查看页面属性
Web.ExecWB(15,1) 好像是撤销,有待确认
Web.ExecWB(17,1) 全选
Web.ExecWB(22,1) 刷新
Web.ExecWB(45,1) 关闭窗体无提示

8. 使用jQuery插件:jqprint()打印
<!doctype html>

<html>
<head>
<meta charset="utf-8">
<title>jQuery打印插件jqprint</title>
<script language="javascript" src="jquery-1.4.4.min.js"></script>
<!-- 
如果您使用的是高版本jQuery调用下面jQuery迁移辅助插件即可
<script src="http://www.jq22.com/jquery/jquery-migrate-1.2.1.min.js"></script>
-->
<script language="javascript" src="jquery.jqprint-0.3.js"></script>
<script language="javascript">

function aa(){
   $("#ddd").jqprint();
}
</script>
</head>

<body>
<div id="ddd">
  <table>
    <tr>
      <td>test</td>
      <td>test</td>
      <td>test</td>
      <td>test</td>
      <td>test</td>
    </tr>
    <tr>
      <td>test</td>
      <td>test</td>
      <td>test</td>
      <td>test</td>
      <td>test</td>
    </tr>
    <tr>
      <td>test</td>
      <td>test</td>
      <td>test</td>
      <td>test</td>
      <td>test</td>
    </tr>
    <tr>
      <td>test</td>
      <td>test</td>
      <td>test</td>
      <td>test</td>
      <td>test</td>
    </tr>
    <tr>
      <td>test</td>
      <td>test</td>
      <td>test</td>
      <td>test</td>
      <td>test</td>
    </tr>
  </table>
</div>
<input type="button" onclick="aa()" value="打印"/>
</body>
</html>

设置模板打印:

$("#printContainer").jqprint({
   debug: false, //如果是true则可以显示iframe查看效果(iframe默认高和宽都很小,可以再源码中调大),默认是false
   importCSS: true, //true表示引进原来的页面的css,默认是true。(如果是true,先会找$("link[media=print]"),若没有会去找$("link")中的css文件)
   printContainer: true, //表示如果原来选择的对象必须被纳入打印(注意:设置为false可能会打破你的CSS规则)。
   operaSupport: true//表示如果插件也必须支持歌opera浏览器,在这种情况下,它提供了建立一个临时的打印选项卡。默认是true
});
9. 使用jQuery插件:query.PrintArea.js实现局部打印
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>index</title>
</head>
<body>
<div style="text-align:center; margin-top: 30px">
    <div id="printArea">
        <div>......文本打印区域......</div>
        <div>......文本打印区域......</div>
        <div>......文本打印区域......</div>
        <div>......文本打印区域......</div>
        <div>......文本打印区域......</div>
    </div>
    <br>
    <br>
    <input id="btnPrint" type="button" value="打印文本区域" />
    <input id="btnPrintFull" type="button" value="全屏打印" />
</div>
</body>
<script src="js/jquery.js"></script>
<script src="js/jquery.PrintArea.js"></script>
<script>
    $("#btnPrint").click(function(){
        $("#printArea").printArea();
    });

</script>
</html>


关于打印,还有以下几个需要注意的:
  • 强制分页的代码:<div style="page-break-after: always;"></div>

  • 大多数的浏览器会自动根据打印更改颜色,以节省打印原料,但是我们还是尽可能的手工设置一下。 为了达到最佳效果,使颜色清晰明了,我们至少需要包含一下基本的打印样式:
    @media print { body { color: #000; background: #fff; } }

  • 为了保证不被跨页打印,如一个标题和内容在页面底部被分开:h2, h3 { page-break-after: avoid;}

  • 另一种情况是要防止图片过宽而超出纸张边缘:img {max-width: 100% !important;}
  • 第三个要点是确保 articles 文章标签的内容,在新的一页开始:article {page-break-before: always;}
  • 还要注意列表和图片不被分开在不同的页:ul,img {page-break-inside: avoid;}
打造无插件Web打印功能:jQuery与CSS应用指南 本文还有配套的精品资源,点击获取 简介:本文探讨了如何仅使用纯JavaScript(jQuery库)和CSS来实现Web应用中的打印功能,无需依赖浏览器插件或控件。通过分析jQuery库和其jqPrint插件的使用方法,以及创建专门的打印样式表(print.css),开发者可以灵活控制打印内容并优化打印效果。本文还提供了在HTML页面中触发打印操作的实际代码示例,帮助开发者... 阅读详情

相关推荐

JS控制打印指定div(且控制css样式)的一种另类思路

打印指定div的插件并不多,使用JPrintArea进行指定div打印也并不好控制,此段js代码是在他人基础上融入了自己的想法,经过测试,纸张打印出来的样式在多个浏览器(ie6、ie7、ie8、火狐、谷歌)上可以做到基本统一,并且可以简单的设计自己想要打印的样式。

Jquery Jqprint—借助Jquery Jqprint实现网页打印功能

Jquery Jqprint—借助Jquery Jqprint实现网页打印功能

gaohuanjie的专栏 1万+

原生JS打印插件之jQuery.EasyPrint.js使用文档

原生JS打印插件之jQuery.EasyPrint.js使用文档 调用浏览器自带打印功能,使用JavaScript的 window.print(); 方法。 使用JS实现打印功能;JavaScript 实现打印操作;javascript打印大全;通用;js实现打印的方式;JS怎么实现页面打印呢?JavaScript 实现打印,打印预览,打印设置;JS打印和报表输出;原生js打印插件Print.js;js控制分页打印、打印分页示例;js 打印插件;js使用window.print()实现打印功能;代码仅5kb; 自主研发的一个轻量级超简单的js打印插件。

php打印局部网页,JavaScript_js或jquery实现页面打印可局部打印,js或jquery实现页面打印(局部打 - phpStudy...

js或jquery实现页面打印可局部打印js或jquery实现页面打印(局部打印)1、js实现(可实现局部打印)js打印.noprint{display : none }不需要打印的地方function preview(oper){if (oper < 10){bdhtml=window.document.body.innerHTML;//获取当前页的html代码sprnstr="";//设...

weixin_28941265的博客 237

JavaScript 实现打印,打印预览,打印设置

WebBrowser是IE内置的浏览器控件,无需用户下载. 一、WebBrowser控件 <object ID=’WebBrowser’ WIDTH=0 HEIGHT=0 CLASSID=’CLSID:8856F961-340A-11D0-A96B-00C04FD705A2′></object> 二、WebBrowder控件的方法 //打印 WebBrowser1.ExecWB(6,1); //打印设置 WebBrowser1.ExecWB(8,1); //打印预览 WebBrowser1.ExecWB(7,1); 关于这个组件还有其他的用法,列举如下: WebBrowser.ExecWB(1

光储微电网混合储能系统的控制策略

随着社会生产力的不断提高,对不可再生资源的大量消耗,人们已经意识到发展可再生能源的重要性,因此微电网技术作为再生能源利用的有效形式被快速发展。蓄电池容量无限大是传统光储微电网混合储能系统控制策略一种理想形式,但实际上蓄电池的容量是有限度的,传统控制策略在蓄电池剩余电量达到阖值时将无法正常使用,由此提出了光储微电网混合储能系统的新型控制策略,又结合实际情况,对开关进行了改进,利用开关与二极管并联,使其拥有四种工作状态,当储能元件剩余电量达到阈值时,可自动恢复电量降低成本,提高并输出电池电能质量。

nhkg888的博客 1739

js或jquery实现页面打印可局部打印

js或jquery实现页面打印(局部打印) 1、js实现(可实现局部打印) 代码如下: js打印 .noprint{display : none } 不需要打印的地方 function preview(oper) { if (oper < 10) { bdhtml=window.document.body.innerHTML;//获取当前页的html代码 spr

黄啊码 6647

LilyGO T-Watch学习(一)环境搭建,编译下载

1、安装arduino IDE, 安装后按照说明添加lib IDE上选择“项目->加载库->添加.ZIP库”,选择C:\Users\用户名\Documents\Arduino\libraries\下的TTGO_TWatch_Library-master.zip; 查看是否添加成功: 项目->加载库,滑到最后可看见已添加的TTGO... 参考:https://github.com/Xinyuan-LilyGO/TTGO_TWatch_Library 2、安装esp32 ardui

hxl5955的博客 2906

js或jquery实现页面打印(局部打印)

js或jquery实现页面打印(局部打印) 1、js实现(可实现局部打印) js打印 .noprint{display : none } 不需要打印的地方 function preview(oper) { if (oper < 10) { bdhtml=window.document.body

caiyl1314的专栏 1万+

基于STM32与ESP8266的MQTT协议实现阿里云物联网平台远程LED控制

本文详细介绍了如何利用STM32单片机与ESP8266 Wi-Fi模块,通过MQTT协议连接阿里云物联网平台,实现远程控制LED灯的完整物联网项目。内容涵盖硬件连接、阿里云平台配置、MQTT协议与AT指令解析、STM32代码实战以及数据解析与调试技巧,为嵌入式开发者提供了一个清晰、实用的物联网入门实践指南。

svm4gardener的博客 791

innovus:set_clock_latency与insertion_delay

当1ns clock latency设置在capture上,在report_timing报告中体现在other end arrival time以及capture clock path的Arrival Time上。因为-1ns的insertion delay存在,所以skew group报告中显示的Arrival (ns)是减1ns的结果,即1.819-1=0.819 ns。CTS阶段create_ccopt_clock_tree_spec之后,spec中会产生对应的insertion_delay命令。

m0_61544122的博客 1621

jqprint 分页打印_javascript如何实现打印页面?

我们在网页开发过程中经常会有打印页面的需求,通过JS来实现的方法有很多。下面本篇文章就来给大家介绍几种使用JavaScript打印页面的方法,希望对大家有所帮助。方式一:window.print()print() 方法用于打印当前窗口的内容。调用print()方法所引发的行为就像用户单击浏览器的打印按钮。通常,这会产生一个对话框,让用户可以取消或定制打印请求。使用window.print()方法打...

weixin_39751679的博客 552

127. 答网友疑问:ABAP Function Module 如何支持内表结构不确定的动态输入参数

ABAP RTTI 的全称是 Runtime Type Identification. 使用 RTTI,ABAP 开发人员可以在运行时获取关于数据对象的各种信息,包括其数据类型、字段列表(如果数据是Structure 或者内表的话)以及这些字段的技术属性,比如字段名称,字段数据类型,长度等等。对于这些字段信息,ABAP 提供了一组特殊的类和接口,包括 CL_ABAP_TYPEDESCR、CL_ABAP_STRUCTDESCR、CL_ABAP_TABLEDESCR 等等。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1763

js网页打印,js打印,javascript局部打印,网页局部打印方法

一、css控制网页局部打印 举例: <div class="noprint" > <table style="margin:0 auto;width:500px;"> <tr align="center" ><td> <object id="WebBrowser" classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" height="0"

txun123的博客 2820

Transformer实战(39)——多模态生成式Transformer

能够理解多种类型输入的模型被称为多模态模型。多模态学习是人工智能 (Artificial Intelligence, AI) 领域的重要研究方向之一,长期受到众多研究人员的关注。本节将介绍使用多模态模型的生成式 AI,包括文本到图像 (text-to-image) 和文本到音乐 (text-to-music) 的生成模型。将介绍 Stable Diffusion 及其工作原理,同时也将介绍 MusicGen 和 AudioGen 模型。

盼小辉丶的博客 2437

0基础学习diffusion_model扩散模型【易理解的公式推导】Denoising Diffusion Probabilistic Models

去噪扩散概率模型。本文是笔者在学习扩散模型时的一些笔记与心得,在公式推导过程中能够保证自己是一步一步去推导并且理解了的。概述是我认为比较重要的部分能够帮助理解公式的推导,具体的公式推导在每一小节中进行。1、扩散过程:如上图所示,扩散过程为从右到左X0→XTX0​→XT​的过程,表示对图片逐渐加噪,且Xt1X_{t+1}Xt1​是在XtX_{t}Xt​加躁得到的,其只受XtX_{t}Xt​的影响,因此扩散过程是一个马尔科夫过程。X0X_0。

zik的博客 2397

jq jqprint 设置页脚_jQuery 插件 jqprint 实现浏览器页面打印和设置页眉页脚

使用 jqprint 插件实现浏览器页面打印,需要用到两个js文件,jquery.js 和 jqprint.js,本文使用 jquery-1.4.4.min.js,jquery.jqprint-0.3.js 版本的 js 源文件。HTML代码:HelloJqprintxiaozhang023xs.cnHelloJqprintxiaozhang023xs.cnHelloJqprintxiaoz...

weixin_32809369的博客 1757

Open3D点云数据处理(二):读写点云,你真的会吗?

本文详细介绍了open3d加载点云、保存点云的方法,同时打印点云坐标、颜色、法向量等字段信息。

孙悟空 2604

jqprint 分页打印_Jqprint实现页面打印

好些项目需要实现页面打印,特别是一些后台管理类系统,下面介绍一款轻量级的打印插件:1、实现页面打印要引入jQuery和Jqprint。点击下载Jqprint插件2、HTML代码:testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest3、JavaScrip...

weixin_39658966的博客 747

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

上一篇: 谈谈行内元素和块元素的区别和居中问题
下一篇: js设置cookie、读取cookie和删除cookie
敲代码的猫
博客等级 码龄10年 70粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值