当设置了 myDoc
的settingsId
属性,则jcp
打印后,会将本次打印的设置保存在注册表,如下所示:
复制内容到剪贴板
代码:
var myDoc = {
settings : {
paperName : "A4",
portrait : true, // 纵向
marginLeft : 5, //设置左边距,单位为mm
marginTop : 5,
marginRight : 5,
marginBottom : 5
},
settingsId:"mysettings1", // 打印后,将打印参数保存到注册表项目 mysettings1 中
documents : document,
copyrights : '杰创软件拥有版权 www.jatools.com'
};
getJCP().print(myDoc);
到下次打印时,jcp
将忽略myDoc
的设置,直接使用注册表中的参数进行打印。
可以保存在注册表中的打印参数包括:
printer
| 输出打印机
|
paperHeight
| 纸张高度
|
paperWidth
| 纸张宽度
|
marginLeft
| 左边距
|
marginRight
| 右边距
|
marginTop
| 上边距
|
marginBottom
| 下边距
|
noMargins
| 是否零边距
|
orientation/portrait
| 纸张方向
|
copies
| 打印份数
|
collate
| 是否逐份打印
|
为什么需要保存设置功能?
保存设置功能,通常用在以下两种情况:
(1
)一个套打系统,由于各客户端打印机不同,或者进纸盒的位置不同,或者其他原因,可能引起打印出来的票据位置发生偏移,用户希望能根据自己打印机的状况,自行调整边距以纠正位置,但不希望每次打印前,都进行一次手工调整。
(2
)一个客户端配置了多台打印机,分别用于打印不同类型的文档,用户不希望每次打印一个文档前,选择一次打印机;
对于第一种情况,你可以这样解决:
1.
页面中设置两个按钮,一个"
直接打印"
,一个"
打印预览"
;
2.
当客户发现位置有偏移时,可以点击"
打印预览"
按钮,调整左、上边距,并打印这个页面;
3.
如果发现位置还不理想,则重复第2
步,如果正确,则下一次打印这个票据时,只需点击"
直接打印"
即可保证位置正确。
对于第二种多种打印机的情况,你可以这样解决:
1.
页面中设置两个按钮,一个"
直接打印"
,一个"
打印预览"
;
2.
第一次打印时,可以点击"
打印预览"
按钮,选择你想要的打印机进行打印;
3.
则下一次打印这个票据时,只需点击"
直接打印"
即可保证输出到正确的打印机。
提一点建议:因为"
打印预览"
按钮不常用,最好不要跟"
直接打印"
按钮并排放在一起,以避免干扰。
保存设置参数的工作原理是怎样的?
控件是如何保留设置参数的,有些用户感觉困惑,下面介绍一下保留与加载打印参数的工作原理。
保存设置参数原理:
1.
客户打印一个文档到打印机后;
2.
控件触发打印完成事件;
3.
控件响应打印完成事件,查询本次打印是否有myDoc.settingsID
属性,如果有,则保存本次打印的配置参数到注册表(
如果注册表中存在该id
设置,则替换以前设置)
。
所以,保存打印参数的前提是:已经输出到打印机,并且设置了myDoc.settingsID
。有些用户,只在控件的预览窗口中设置了边距等,而不实际打印,这样,控件是不会保留你的设置的。
加载打印参数原理:
1.
客户在预览或打印前,控件查询是否有myDoc.settingsID
属性;
2.
如果有myDoc.settingsID
属性,控件尝试从注册表中读入该id
相关的配置参数,如果存在,则用该配置参数来设置打印机(即忽略myDoc.settings
里的设置),转第4
步;
3.
根据用户的myDoc.settings
里的设置,设置打印参数;
4.
根据设置,启动打印或打印预览。