杰表技术论坛 's Archiver

admin 发表于 2018-5-24 11:01

不想每次设置打印机,纸张怎么办?

你可以使用 jcp 的 预设打印参数到注册表 功能,如下:

admin 发表于 2018-5-24 11:23

[font=Calibri, sans-serif][size=10.5pt][font=宋体]想像一下,有这样的需求:既要允许用户自己设置打印机,纸张,又能让用户不必每次都去设置这些参数,以简化打印操作,我们可以利用[/font]JCP[font=宋体]保存打印参数到注册表的功能来实现。[/font][/size][/font][font=Calibri, sans-serif][size=10.5pt]
[/size][/font]
[font=Calibri, sans-serif][size=10.5pt]JCP[font=宋体]保存打印设置到注册表,就是将打印参数,如打印机、纸张类型、边距等,事先保存到注册表,并以一个[/font]ID [font=宋体]标记,以后,直接打印时只要告诉[/font] JCP [font=宋体]这个[/font]ID[font=宋体],[/font]JCP[font=宋体]就会到注册表中找到对应的设置来打印了。以下是打印设置保存到注册表中的样子:[/font][/size][/font]
[font=Calibri, sans-serif][size=10.5pt][img=601,359]http://print.jatools.com/doc/guide.doc.files/image003.jpg[/img][/size][/font]
[font=Calibri, sans-serif][size=10.5pt][font=宋体]所有的打印设置,被保存在[/font] HKEY_CURRENT_USER\Software\jatools\jatoolsPrinter [font=宋体]下,左侧注册项名称是设置[/font]ID[font=宋体],右侧是具体的打印设置。[/font][/size][/font][font=Calibri, sans-serif][size=10.5pt]
[/size][/font]
[font=Calibri, sans-serif][size=10.5pt][font=宋体]假设给用户的界面是这样的:[/font][/size][/font]
[font=Calibri, sans-serif][size=10.5pt][img=522,331]http://print.jatools.com/doc/guide.doc.files/image004.jpg[/img][/size][/font]
[font=Calibri, sans-serif][size=10.5pt]
[/size][/font]
[font=Calibri, sans-serif][size=10.5pt][font=宋体]用户多数情况下,都是点直接打印(不弹任何对话框)来打印,只有在第一次打印或者需要更改打印设置时,才点击[/font] [color=#548dd4][i][font=宋体]设置打印参数[/font][/i][/color][font=宋体],[/font][/size][/font]
[font=Calibri, sans-serif][size=10.5pt][color=#548dd4][i][font=宋体]设置打印参数[/font] [/i][/color][font=宋体]的作用是,显示一个打印参数设置面板,让用户可以在此面板中来设置参数,并保存到注册表,以下是点击后显示的面板效果[/font]([font=宋体]该面板你可以自由定制[/font])[font=宋体]:[/font][/size][/font][font=Calibri, sans-serif][size=10.5pt]
[/size][/font]
[font=Calibri, sans-serif][size=10.5pt][img=522,331]http://print.jatools.com/doc/guide.doc.files/image005.jpg[/img][/size][/font]
[font=Calibri, sans-serif][size=10.5pt]
[/size][/font]
[font=Calibri, sans-serif][size=10.5pt][font=宋体]保存设置到注册表的代码:[/font][/size][/font]
[font="][align=left][code]function saveSettings() {  
    var settings = {  
        printer : document.getElementById('printer-list').value,// 设置选中的打印机  
        paperName : document.getElementById('paper-list').value,// 设置选中的纸张  
        orientation : document.getElementById('portrait').checked ? 1 : 2,  // 方向  
        marginLeft : parseFloat(document.getElementById('leftmargin').value), // 边距  
        marginTop : parseFloat(document.getElementById('topmargin').value),  
        marginRight : parseFloat(document.getElementById('rightmargin').value),  
        marginBottom : parseFloat(document.getElementById('bottommargin').value)  
    }  

    getJCP().setLastSettings("订单", settings);  
}  [/code]
[/align][/font]
[font=Calibri, sans-serif][size=10.5pt][font=宋体]代码先从界面上收集到设置的参数,放到一个[/font]js [font=宋体]对象中,然后用[/font] JCP [font=宋体]的[/font] [i]setLastSettings[/i][font=宋体]方法将设置保存到注册表,该方法的第一个参数是设置[/font]ID[font=宋体],在直接打印代码中要用到,第二个参数是具体设置。[/font][/size][/font]
[font=Calibri, sans-serif][size=10.5pt][font=宋体]直接打印按钮要执行的代码:[/font][/size][/font]
[font="][align=left][font=&quot][code]function doPrint() {
var myDoc = {
settingsId : '订单', // 引用设置id
documents : document,
copyrights : '杰创软件拥有版权 www.jatools.com'
};

getJCP().print(myDoc, false); // 不弹出对话框打印
} [/code][/font][/align][/font]
[font=Calibri, sans-serif][size=10.5pt][font=宋体]直接打印时,不设置具体的打印参数,而代之以通过设置[/font][color=#548dd4][i]myDoc. settingsId[/i][/color]
[font=宋体]的方式,让[/font]JCP[font=宋体]使用保存在注册表中的设置,如果在注册表中,没有这个设置,[/font]JCP[font=宋体]会使用系统的默认设置,如默认打印机,默认纸张等。[/font][/size][/font][font=Calibri, sans-serif][size=10.5pt]
[/size][/font]
[font=Calibri, sans-serif][size=10.5pt][font=宋体]可以保存在注册表中的打印参数包括:[/font][/size][/font]
[table][tr][td=1,1,140][font=Calibri, sans-serif][size=10.5pt][i]printer[/i][/size][/font]
[/td][td=1,1,274][font=Calibri, sans-serif][size=10.5pt][font=宋体]输出打印机[/font][/size][/font]
[/td][/tr][tr][td=1,1,140][font=Calibri, sans-serif][size=10.5pt][i]paperHeight[/i][/size][/font]
[/td][td=1,1,274][font=Calibri, sans-serif][size=10.5pt][font=宋体]纸张高度[/font][/size][/font]
[/td][/tr][tr][td=1,1,140][font=Calibri, sans-serif][size=10.5pt][i]paperWidth[/i][/size][/font]
[/td][td=1,1,274][font=Calibri, sans-serif][size=10.5pt][font=宋体]纸张宽度[/font][/size][/font]
[/td][/tr][tr][td=1,1,140][font=Calibri, sans-serif][size=10.5pt][i]marginLeft[/i][/size][/font]
[/td][td=1,1,274][font=Calibri, sans-serif][size=10.5pt][font=宋体]左边距[/font][/size][/font]
[/td][/tr][tr][td=1,1,140][font=Calibri, sans-serif][size=10.5pt][i]marginRight[/i][/size][/font]
[/td][td=1,1,274][font=Calibri, sans-serif][size=10.5pt][font=宋体]右边距[/font][/size][/font]
[/td][/tr][tr][td=1,1,140][font=Calibri, sans-serif][size=10.5pt][i]marginTop[/i][/size][/font]
[/td][td=1,1,274][font=Calibri, sans-serif][size=10.5pt][font=宋体]上边距[/font][/size][/font]
[/td][/tr][tr][td=1,1,140][font=Calibri, sans-serif][size=10.5pt][i]marginBottom[/i][/size][/font]
[/td][td=1,1,274][font=Calibri, sans-serif][size=10.5pt][font=宋体]下边距[/font][/size][/font]
[/td][/tr][tr][td=1,1,140][font=Calibri, sans-serif][size=10.5pt][i]noMargins[/i][/size][/font]
[/td][td=1,1,274][font=Calibri, sans-serif][size=10.5pt][font=宋体]是否零边距[/font][/size][/font]
[/td][/tr][tr][td=1,1,140][font=Calibri, sans-serif][size=10.5pt][i]orientation/portrait[/i][/size][/font]
[/td][td=1,1,274][font=Calibri, sans-serif][size=10.5pt][font=宋体]纸张方向[/font][/size][/font]
[/td][/tr][tr][td=1,1,140][font=Calibri, sans-serif][size=10.5pt][i]copies[/i][/size][/font]
[/td][td=1,1,274][font=Calibri, sans-serif][size=10.5pt][font=宋体]打印份数[/font][/size][/font]
[/td][/tr][tr][td=1,1,140][font=Calibri, sans-serif][size=10.5pt][i]collate[/i][/size][/font]
[/td][td=1,1,274][font=Calibri, sans-serif][size=10.5pt][font=宋体]是否逐份打印[/font][/size][/font]
[/td][/tr][/table][font=Calibri, sans-serif][size=10.5pt]
[/size][/font]

admin 发表于 2018-5-24 11:30

在线示例: [url=http://print.jatools.com/jcp/0.99/setlastsettings.htm]http://print.jatools.com/jcp/0.99/setlastsettings.htm[/url]

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.