smsx.cab插件实现打印的依赖的是ActiveX控件,所以缺点很明显:页面得允许运行ActiveX控件,而ActiveX控件只有IE支持,所以局限性很强。

页面基本结构:

<div  id="floatDiv" align="right"><input style="color: #fff; font-size: 16px" οnclick="printTures();" type="button" value="打印"/><input style="color: #fff; font-size: 16px" οnclick="printpage();" type="button" value="打印预览"/><input style="color: #fff; font-size: 16px" οnclick="pageReSet();" type="button" value="页面设置"/>
</div>
<div id="page"></div>

JS实现:

//打击“打印”按钮时触发该事件
function printTures(){$("body").append("<OBJECT id=\"factory\" codeBase=\"redist/smsx.cab#Version=6,3,434,26\" height=\"0\" width=\"0\" classid=\"clsid:1663ed61-23eb-11d2-b92f-008048fdd814\" viewastext></OBJECT>");//取消打印区域的浮动var printdiv = document.getElementById("page");printdiv.style.overflow="";printBase();//进行打印设置//将打印按钮和打印预览按钮隐藏掉document.getElementById("floatDiv").style.display = "none";// 隐藏按钮//进行打印:无确认打印,true时打印前需进行确认factory.printing.Print(false);//打印完成返回项目列表$("#factory").remove();
}//打击“打印预览”按钮时触发该事件
function printpage(){$("body").append("<OBJECT id=\"factory\" codeBase=\"redist/smsx.cab#Version=6,3,434,26\" height=\"0\" width=\"0\" classid=\"clsid:1663ed61-23eb-11d2-b92f-008048fdd814\" viewastext></OBJECT>");//取消打印区域的浮动var printdiv = document.getElementById("page");printdiv.style.overflow="";printBase();//进行打印设置//将打印按钮和打印预览按钮隐藏掉document.getElementById("floatDiv").style.display = "none";// 隐藏按钮//进行预览factory.printing.Preview();//打印完成返回项目列表printdiv.style.overflow="auto";//将打印按钮和打印预览按钮隐藏掉document.getElementById("floatDiv").style.display = "block";// 隐藏按钮$("#factory").remove();
}/**页面设置 */
function pageReSet(){printBase();factory.printing.PageSetup();
}// 用于设置打印参数
function printBase() {factory.printing.header = ""; // 页眉factory.printing.footer = ""; // 页脚factory.printing.portrait = true; // true为纵向打印,false为横向打印factory.printing.leftMargin = 19.05;factory.printing.topMargin = 0;factory.printing.rightMargin = 0;factory.printing.bottomMargin = 0;
}

注意: <Object>标签中的codeBase=\"redist/smsx.cab#Version=6,3,434,26\"目录下得有对应的文件

用这个插件唯一的感受就是:调顺了很好使,调不顺了很麻烦。一旦出问题了调试起来也麻烦,因为它跟浏览器挂钩它还要往操作系统中写东西,这就牵扯到安全性问题了,反过来若是浏览器或操作系统的设置有变化它也可能被影响到,所以对于它来说“上午用的好好的下午就不能用了是常态”。

可能碰到的问题:若是页面上同时存在“打印”和“打印按钮”,且两个按钮都点击了(如先点打印不刷新的情况下再点打印预览),那么点第二个按钮时可能会报错:only one scriptx object can be used per browser window。解决方法可以参考这个链接:http://blog.csdn.net/zhao19861029/article/details/8283347

跟Jquery打印一样,说下优缺点:

缺点:兼容性不好,只能IE使用;容易出问题,且调试麻烦;

优点:可预览;配置好之后打印时不会弹出打印框让选打印机,也可以设置页眉页脚、页边距;

最后贴几个对smsx.cab插件有帮助的链接:

1、 针对web打印控件的使用心得 :http://blog.csdn.net/zhao19861029/article/details/8283347

2、IE下使用smsx.cab组件实现打印和打印预览功能:http://blog.csdn.net/zhao19861029/article/details/8270194

3、ScriptX,smsx打印控件安装的终极解决办法:http://blog.csdn.net/yjlwl1213/article/details/3929848

批量打印之smsx.cab打印相关推荐

  1. ScriptX.cab与Smsx.cab打印代码

    <!--前提为必须设置了打印机,即为有默认的打印机,否则此页的弹出窗口不会显示--> <!--media=print 这个属性可以在打印时有效,设置打印时,打印按钮不显示的样式--& ...

  2. Web的打印方案:WebBrowser(WScript.Shell)、ScriptX(即smsx.cab)

    WebBrowser 我们可以方便地通过 Internet Explorer 用户界面更改页边距.页眉和页脚设置和默认 Internet Explorer 打印机,IE也提供了一个叫WebBrowse ...

  3. 批量打印之jquery局部打印

    上个月弄了个批量打印的功能,觉得以后可能用得着,就写个博客记一下,免得忘记了.说这个之前,先来说一下我用过的两个打印插件,一个是Jquery打印插件(这次开始用的),一个是smsx.cab控件的打印插 ...

  4. js 页面打印,兼容单个打印和分页批量打印,自定义页眉和简单页脚

    场景: 最近在公司做开发,有个需求需要页面打印功能,作为前端半桶水都不到,只会改页面的我,一脸懵逼,公司里也没人系统的做过,按照惯例,本着有事找度娘的心态(我一直认为我们现在遇到的70%-80%的问题 ...

  5. ScriptX.cab打印经验交流

    ScriptX.cab打印经验交流 WEB打印一直困扰着大家,小弟最近做一项目,稍有心得,特来跟大家交流交流. 我在那个项目中是利用ScriptX.cab这个控件来解决问题的,包括各种汇总表,详细清单 ...

  6. 【板栗糖GIS】arcmap—如何批量将tiff转换为方便打印的轻量jpg格式

    [板栗糖GIS]arcmap-如何批量将tiff转换为方便打印的轻量jpg格式 目录 1. 数据准备 2. 数据处理 3. 使用脚本 4. 不使用脚本的方法 1. 数据准备 需要的数据--有正确坐标的 ...

  7. 怎么批量打印CAD图纸?打印需要注意哪些问题。

    从事CAD设计的朋友都比较熟悉,打印CAD文件中有很多需要掌握的知识点,一般情况下对于CAD打印我们可以在打印中批量设置属性,比如颜色.尺寸等.今天我们就给大家介绍一下怎么批量打印CAD图纸,打印过程 ...

  8. 票据打印, 银行账单打印, 标签印刷, 文档打印, 条码打印, 批量打印, 包装纸打印与设计,可变数据打印,数据库印刷,HMI报表打印,VC++源码库解决方案

    票据打印, 银行账单打印, 标签印刷, 文档打印, 条码打印, 批量打印, 包装纸打印与设计,可变数据打印,数据库印刷,HMI报表打印,VC++源码库解决方案 -- 全球领先.100%源码全开放.可用 ...

  9. java调adobe打印_Java报表工具打印方案集锦 | 改变自己

    本文试图对市面上流行的纯java实现的web报表工具,jasperreport . stylereport .杰表.润乾报表.快逸.finererport为例,分析各报表工具采用的web打印技术的异同 ...

最新文章

  1. AI新浪潮:截止2022年,全球74%的计算将来自端侧
  2. snippets vscode 配置_VSCode 利用 Snippets 设置超实用的代码块
  3. Android开发 ---多线程操作:Handler对象,消息队列,异步任务下载
  4. [Apple开发者帐户帮助]八、管理档案(2)创建临时配置文件(iOS,tvOS,watchOS)...
  5. 帝国cms 未审核 showinfo.php,帝国CMS批量修改文章未审核状态及批量修改上线时间...
  6. Auto Highlight for Mac(Safari文本自动高亮插件)
  7. 【POJ 3469】Dual Core CPU【最小割】
  8. android 高德路线,【Android呼叫高德路线规划】
  9. 有一群海盗(不多于20人),在船上比拼酒量。
  10. MJ对2008年10月6日大盘预测(节后第一天)
  11. 程序员面试金典 - 面试题 10.11. 峰与谷
  12. 使用 Quagga 实现 Linux 动态路由
  13. SpringBoot+Vue项目实现身体健康诊疗系统
  14. HTML文件命名_批量重命名工具
  15. Axure RP9 ——原型预览
  16. geopandas实现坐标点在对应的地图上显示
  17. 人脸变身“门禁卡”!人脸识别门禁打造智能物业管理
  18. 快速学习:如何在Java中以编程方式将PNG或JPG图像转换为PSD?
  19. ENVI+ArcGIS利用哨兵2图像做NDVI
  20. SequoiaDB巨杉数据库-错误码

热门文章

  1. 把Excel里的url链接转换为图片显示
  2. dos命令为java程序赋值_在DOS命令行状态下,如果源程序HelloWorld.java在当前目录下,那么编译该程序的命令是() (5.0分)_学小易找答案...
  3. CodeForces-B
  4. 计算机的内存条比硬盘,电脑硬盘比内存条还小,全是这个协议的功劳!
  5. ps拾取颜色设置文字颜色
  6. pythonocc view coordinate_pythonOCC例子搬运:4.经典瓶子造型
  7. krita和ps比较_使用Krita,Scribus和Inkscape设计海报
  8. 看了一篇别人的年终总结,感觉对自己的启发挺大的
  9. Leetcode刷题——栈与队列
  10. 今年流行的3步走,学习前端方法路径总结