转自张善友大牛的博客http://www.cnblogs.com/shanyou/p/3185111.html

应用web化,不论对开发商,还是对用户来说,实在是一种很经济的选择,因为基于web的应用,客户端的规则很简单,容易学习,容易维护,容易发布。但对程序员来说,因为浏览器的局限性,却要面对很多挑战。怎么样来进行基于web的套打,就是这么一个令多数程序员头痛不已的问题。

基于web的套打,难度在于要将浏览器中呈现的html,精确地打印到票据中,而且能够实现对分页位置的控制。下面就ie浏览器所能采用的套打解决方案,来个汇总分析,希望对大家有所帮助。

jatoolsPrinter 是一款实现网页套打的免费工具。该工具的特点是可以直接对web页面进行精确的分页打印,这不仅使“会设计网页就会做网页套打”成为可能,也使项目经理们摆脱了预算紧张的压力。jatoolsPrinter通过在网页中嵌入控件,解决了web客户端精确打印,批量打印,打印配置自动保留等问题。jatoolsPrinter 官方正式免费版,支持ie6+,http://printfree.jatools.com。

功能特点:

真正免费,不加水印,没有ip或域名限制,不限时间,兼容ie6+

无须注册,下载即用

提供经过微软数字签名的cab自动安装包,安装更方便

长期升级保障,免费论坛支持,让你无后顾之忧

稳定可靠,启动速度远胜同类产品

常用功能集于一身,简约而不简单,软件大小只有84k

本文主要介绍jatoolsPrinter打印控件来完成web的打印功能,这个控件已经把打印功能封装的非常好,主要是把这个控件引入,之后写一些简单的js代码就能完成相应的打印功能。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

<title></title>

<!-- 插入打印控件 -->

<object id="jatoolsPrinter" classid="CLSID:B43D3361-D075-4BE2-87FE-057188254255"

codebase="jatoolsPrinter.cab#version=5,7,0,0">

</object>

<script type="text/javascript">

function doPrint(how) {

//打印文档对象

var myDoc = {

documents: document,    // 打印页面(div)们在本文档中

copyrights: '杰创软件拥有版权  www.jatools.com'         // 版权声明必须

};

// 调用打印方法

if (how == '打印预览...')

jatoolsPrinter.printPreview(myDoc);   // 打印预览

else if (how == '打印...')

jatoolsPrinter.print(myDoc, true);   // 打印前弹出打印设置对话框

else

jatoolsPrinter.print(myDoc, false);       // 不弹出对话框打印

}

</script>

</head>

<body>

<form id="form1" runat="server">

<div id='page1' style='width:300px;height:300px;'>

test

</div>

<input type="button" value="打印预览..." οnclick="doPrint('打印预览...')"/>

<input type="button" value="打印..." οnclick="doPrint('打印...')"/>

<input type="button" value="打印" οnclick="doPrint('打印')"/>

</form>

</body>

</html>

主要分几个步骤:

一、引入打印控件jatoolsPrinter

<!-- 插入打印控件 --> <object id="jatoolsPrinter" classid="CLSID:B43D3361-D075-4BE2-87FE-057188254255" codebase="jatoolsPrinter.cab#version=5,7,0,0"> </object>

二、给要打印的div取id名

三、编写js代码实现打印div的功能

(注意:在同一页面中,有多个可打印文档,他们可以用page_div_prefix属性来区别page_div_prefix前缀+page+页序号 构成可打印div的id,如前缀为 'report1' ,则找到以 'report1page1'为id的div作为文档首页该属性,默认值为空)

注意事项:

1. 控件在打印指定div对象时,如果纸张太小不够打印时,超出部分将被截掉(clip)。

2. 被指定的div中的内容,可以是html任何可见对象,图片,flash,或文本等等。

3. 控件打印时,边距可设,不设则取打印机默认值。

4. div的id必须连续,如果你的div,存在 'page1'、'page2'、'page4',而不存在'page3',则控件只打印前两页,'page4'不会被打印。

5. div对象在页面中的位置,可以是随意的,比如,page1显示在page2后面,也是合法的。

6. 指定的div会被打印,没被指定的html元素将不会被打印,比如,本示例中的‘打印’按钮,不会被打印。

7. copyrights属性是版权信息,必须写。

分享一个无水印的web打印组件相关推荐

  1. 分享一个基于Vue3+TS构建Cesium组件库

    分享一个基于Vue3+TS构建Cesium组件库 点击进入 Vue Cesium官网 //vc-navigation <template><el-row ref="view ...

  2. 基于http请求web打印组件,实现浏览器、移动端、服务端无预览打印

    打印功能在项目开发中比较常用,尤其是工业级应用十分广泛,且无预览打印,而因浏览器安全机制,无法直接实现无预览打印,根据项目需求,做了一个打印的插件,可以实现无预览打印,且模板调整十分便捷 环境:Bar ...

  3. Web打印组件jatoolsPrinter

    应用web化,不论对开发商,还是对用户来说,实在是一种很经济的选择,因为基于web的应用,客户端的规则很简单,容易学习,容易维护,容易发布.但对程序员来说,因为浏览器的局限性,却要面对很多挑战.怎么样 ...

  4. 分享一个VS写的PDF打印控件

    控件CLSID A04AC669-CB70-4E8B-9CC0-9B73FC153784 功能描述 自己写的一个控件,某人寿公司的需求,可惜最后没用到. 需求如下: 1.给你一个一个PDF文档,让你打 ...

  5. 4Fang Web打印组件使用心得

    前几天一个朋友让帮忙调个打印发票的例子, 发现4Fang的这个组件用起来很方便,很容易实现精确定位打印,  设置纸张大小, 调用方便, 更主要的是可以收到免费许可授权! 下载地址: PAZU 的永久主 ...

  6. 分享一个Vant Weapp小程序UI组件库

    Vant Weapp官方地址:https://youzan.github.io/vant-weapp/#/ Vant Weapp 是有赞移动端组件库 Vant 的小程序版本,两者基于相同的视觉规范,提 ...

  7. android评论功能带emoji,分享一个自己写的emoji-comments评论组件

    dependencies :{ "jquery": "^3.5.1", "ant-design-vue": "^1.6.4&quo ...

  8. 记录一个无水印 免费的录屏软件 【需要登录哔哩哔哩账号】

    界面: 1,下载链接: https://live.bilibili.com/liveHime?visit_id=6efnb4m00rw0 2,可以根据自己的电脑的配置来动态调整录制视频的参数信息: 3 ...

  9. 【华为云技术分享】一行代码就能写一个日志打印组件,你信吗?为你揭晓LiteOS中日志打印组件的核心

    1. 做实验引发的思考 在学习LiteOS日志打印组件使用的时候,我记录了一篇博客:atiny_log | LiteOS 物联网操作系统中的日志打印组件使用分享,关于实验的具体内容,请阅读这篇博客. ...

最新文章

  1. 细说firewalld和iptables
  2. Tomcat原理详解和各种集群的实现(转自:http://harisxiong.blog.51cto.com/7513022/1304746)
  3. Canvas-图片旋转
  4. 基于Maven的SSH框架搭建
  5. ElasticSearch启动报错,报ERROR: [3] bootstrap checks failed
  6. ylbtech-Bill(发票管理)-数据库设计
  7. python中pass的用法_python学习之getpass模块使用
  8. python模拟手机app签到_Python实现云之家自动签到
  9. 防不胜防 这些游戏被外挂活生生地毁了
  10. 现在1分、2分、5分硬币的收藏价格如何呢?
  11. Python最详细的 机器学习算法:逻辑回归的推导及实战 你值得拥有!
  12. Java并发编程73道面试题及答案 —— 面试稳了 侵立删
  13. Windows xp .iso下载大全——超全面超难找的收藏版(一)
  14. 什么是ADB,ADB有什么作用?
  15. js 排班插件_排班小程序
  16. 不同尺寸的手机屏幕其需要图片的分辨率和尺寸
  17. 思科前员工为报复恶意删除400多台虚拟机,公司损失超1600万
  18. 服务创新产品“在线智能问诊”——互联网平台建设...
  19. 软件测试未来主要发展的5个趋势
  20. AndroidX深入浅出Jetpack全面介绍

热门文章

  1. IE-LAB网络实验室:CCNA在哪考?都准备些什么?
  2. 戏说 .NET GDI+系列学习教程(二、Graphics类的方法)
  3. html5公开课宣传文案,《自信演讲》公开课文案
  4. OpenCL Introduction - OpenCL 概述
  5. PLSQL绿色版安装及配置
  6. 2023重庆交通大学计算机考研信息汇总
  7. random: crng init done太慢影响程序运行
  8. ELMO实战-命名实体识别
  9. 获得更多tick是否能改善算法交易业绩?
  10. 我的一天我做主(Enjoy)- 1