实现AS400在HP打印机上的TCP/IP中文打印
很久没上这个论坛了,也很久没摸AS400了;今天无聊上来浏览了下发现没有一篇文章谈到用TCP/IP的LPD/LPR协议实现AS400的中文打印,以前PUSH过IBM拿出解决方案,估计没什么指望了。
我把我在6,7年前在HP 4000系列打印机上实现AS400中文打印的经验和大家分享一下,希望有更多的人去尝试不同类型和品牌打印机上的解决方案;希望对做400仿真打印厂商的生意不要造成影响。
AS400中英文的TCP/IP打印相信很多人都试过,对其打印输出的速度是各种打印方式中最快的这点应该没有异议吧?特别是异地或大量打印时。
下面我具体描述下实现过程,
CRTOUTQ 其中相关参数如下:
Remote system: 10.10.10.1 <-- HP打印机的IP地址
Remote printer queue: TEXT <-- 这个是IBM定义的,对HP的queue一定要用‘TEXT’ 其他打印机可以查IBM关于打印的红皮书。
Writers to autostart: 1 <-- 自动起虚拟设备的数量
Connection type: *IP <-- 肯定选IP咯
Destination type: *OTHER
Host print transform: *NO
Manufacturer type and model: *WSCST <-- 关键,IBM现成的选项,至少对HP而言不能实现中文打印,所以选自己定义workstation customization
Workstation customizing object: XXXXX <-- 自己开发的*WSCST类型目标的名字
Library: XXXXX <-- 目标所在的库
Destination options: 'XAIX XAUTOQ' <-- 此字符串是IBM 某个PTF的要求,具体解决什么忘了,照抄就是了。
。。。要去做晚饭了,明天继续WSCST怎么写。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
有机会试试看。。。牛人啊
有个地方打错了‘TIPS:DPI64,72,90效果很好,。。。’应该是‘72,90dots’ 不是DPI
在做WSCST之前,先介绍下HP打印机要注意的地方,必须安装HP专门用于其打印机的中文字库条/卡,好像几百块一条。另外,要花点时间学一下打印机的PCL语言,熟悉一下ESC代码;我当时是专门从HP买了一套HP PCL的手册;顺便提一下,好像每家打印机厂商的PCL都有些不同,如果要尝试其他打印机,最好还是弄套它们的手册,免得走弯路。
打印机字库条,据我所知也是有变化的,最初是象内存条的那种,以后又有SD卡的那种;这里先提下,后面会提到要注意的地方。
安装字库条后,从打印机面板上选到打印PCL字体,会出来一份PCL FONT LIST, 放在手边以后会用到。
对WSCST类型目标,我重来没找到过学习资料,只能自己摸索;先学习下IBM现成的WSCTS目标,用RTVWSCST命令获取一个和我要用的打印机最接近的IBM现成的Manufacturer type and model的打印机。随便放在一个SOURCE FILE里你可以获得一个TXT MEMBER,
我现在没AS400可以上,具体命令格式,有意者帮忙贴下。
我这里就直接贴我加工完成的了。
:WSCST DEVCLASS=TRANSFORM.
:TRNSFRMTBL.
RTDTASTRM
DATASTREAM=ESC/P.
:INITPRT
/* DATA ='1B451B266C2D3534305A'X. */
DATA ='1B451B266C2D39305A'X. <-- 这里是初始化打印机的PCL码,用ASCII码表,把它翻译成ESC码,然后查打印机的PCL手册,前面提到不同的字库条,还有不同型号的打印机,有可能这串码还不一样,而且手册上还没有。当时我是通过HP的客户经理(我们是HP的GLOBAL ACCOUNT)找到一个正真的专家,告诉他打印机型号和字库条的PART Number; 才拿到正确的指令。
:SPACE
DATA ='20'X.
:CARRTN
DATA ='0D'X.
:FORMFEED
DATA ='0C'X.
:LINEFEED
DATA ='0A'X.
:VARLSPC
VAROFFSET= 3
VARLEN= 3
VARTYPE=CHRDEC
CNVNUM= 1
CNVDEN= 48
DATA ='1B266C000000431B266C352E333343'X. <--调整打印位置
:CPI
CPI=10
DATA ='1B26743338501B283138431B28733170372E327630733062333733353754'X. <--这里定义你要打的字体和大小,这行对应CPI=10的AS400REPORT...下面几行类似,根据AS400的需求去改这里的设置,中文字体的ESCcode在PCL FONT LIST里面找。TIPS:DPI64,72,90效果很好,中文和英文可以完美对齐,其他不同设置大家可以自己去试。
:CPI
CPI=12
DATA ='1B26743338501B283138431B28733170372E327630733062333733353754'X.
:CPI
CPI=15
DATA ='1B26743338501B283138431B28733170372E327630733062333733353754'X.
RTORIENT
ORIENT=LANDSCAPE
DATA ='1B266C334F'X.
:FNTGRP.
:FNTGRPE
MINFID= 154
MAXFID= 200
FNTSTR='1B26743338501B283138431B28733170372E327630733062333733353754'X
FNTEND=''X
FNTWTH=
/* -0-1-2-3-4-5-6-7-8-9-A-B-C-D-E-F */
'22ADAEA78FBEA777EFABEF7F696869AA'X /* 00- */
'62624A48635892514E4EADAD93AD6B6B'X /* 01- */
'48526E7878D3BB52525278D352525252'X /* 02- */
'787878787878787878785252F0D3F06A'X /* 03- */
'D3AD95A3B29590ADB2525BA895D8B2AD'X /* 04- */
'8BAD9E8295B2ADE2ADAD9A5252527878'X /* 05- */
'786A786A786A52787843437843BB7878'X /* 06- */
'7878565B437878AD78786A6A786A78F0'X /* 07- */
'A3786A6A6A6A6A6A6A6A6A434343ADAD'X /* 08- */
'959ED3787878787878ADB2787878D378'X /* 09- */
'6A43787878B278786AD3D3D3D3526060'X /* 0A- */
'78AD7878A36AB178526A787878787878'X /* 0B- */
'6A6A78786A6A78786A6A78786A6A7878'X /* 0C- */
'AD43ADD36A43789EAD43ADB1954378AD'X /* 0D- */
'907890909078876A9EAD906AF0905BF0'X /* 0E- */
'F0D3F0F0ADADD3F0785252AD78567848'X /* 0F- */
EURODATA=''X.
:EFNTGRP.
:EWSCST.
做完之后用CRTWSCST命令创建自己的WSCST,把它放到CRTOUTQ的参数里。
从小语文就不太好,大家将就看吧。有什么要帮忙的就留言给我,只要在能力范围内,我尽力吧。