ScriptX控件如何在不跳转页面的情况下将要打印的内容打印出来

来源:互联网 发布:淘宝服装店如何推广 编辑:程序博客网 时间:2024/05/19 23:01

需求:如医生给患者开了很多的处方,在处方总列表界面有发送按钮,发送到收费系统的时候要求系统自动打印所有的处方

西药草药检查治疗等打印格式是不一样的,分别有对应的html打印文件,如果在每一个打印文件中都引入了ScriptX打印对象或者是jatoolsPrint打印对象,那就只能挨个进去后查看样式才能打印了,但用户要求不需要点进去查看是什么样的,只需要在处方汇总列表界面点一下按钮就能全部打印出来。
处理方法:用jatoolsPrint打印控件或者ScriptX打印控件,jatoolsPrint控件反应快且支持一个浏览器窗口内同时开启多个打印文件并都能正常打印,ScriptX控件反应慢一些,ScriptX控件还有一个缺点就是一个浏览器窗口只能有一个ScriptX打印对象。

思路:假如已知一个处方列表界面叫List.html,创建一个autoPrint.html文件,在这个文件中会根据打印处方的多少动态创建相应数量的iframe出来,每个iframe对应一个处方文件,即相当于把所有要打的内容都集中到一个文件中了,单个处方文件中不需要引入ScriptX对象,但是这个文件怎么引入呢,不能在List.html中创建iframe引入autoPrint.html(不能让autoPrint.html成为List.html的子界面),因为处方汇总界面在发送完之后用户会要求有个状态的变化,即需要刷新List.html,所以不能这样创建,但是List.html的父界面不需要刷新,那么我就考虑在List.html的父界面创建一个iframe,指向autoPrint.html,即autoPrint.html与List.html是平级关系.在autoPrint.html中引入ScriptX对象就可以打印所有的处方了。

这时候可能还会遇到一个问题,那就是打印处方用的是A5纸,而ScriptX免费版只支持A4纸打印,如果autoPrint.html中内容过多如何让其自动分页呢?
如果autoPrint.html内各个iframe的高度都不是太高,势必会造成自动分页的时候格式出错,那就把高度设置成比较大的数值,比如900px,这样打印的时候虽然打印机放的是A5纸,但是会按照A4纸的打印样式打印,这时候需要的部分正好显示在了A5纸上,打印文件的空白部分正好是A5纸对比A4纸所缺的那一块。

还要特别注意一个现象:List.html的父界面中创建的iframe,如果用的是jatoolsPrint控件,这个iframe可以隐藏,如果用ScriptX打印控件,这个iframe必须不隐藏,只需要将这个iframe的wdith与height都设为0即可,否则打印的内容就不是你想要的内容了!

0 0
原创粉丝点击