在没有字库的打印机上打印汉字。(200分)

  • 主题发起人 主题发起人 阿蛮
  • 开始时间 开始时间

阿蛮

Unregistered / Unconfirmed
GUEST, unregistred user!
本人的一台TM88II打印机,因客户需要直接写并口打印,且又不能安装打印机驱动程序,
由于打印机没带字库,所以打印出来的都是乱码,从说明书上看的用ESC t n是设置字符代码
表,但只有美国英语、日文片假名、多语言,葡萄牙、法文、北欧。没有中文,用以上任一
种都不能打印中文,麻烦哪位同胞帮个忙。分不够再加。
 
只要打印机支持图形打印方式就应该可以打印汉字,你可以提取汉字字模,然后将字模以图
形打印方式打印输出就应该可以的!
 
我在epson lq1600k上做过特殊控制编程。
你再细读一下打印机手册,查找图形模式打印
的命令,然后按要求格式传送字符点阵数据。
字符点阵可以通过Delphi的canvas取得。
如果你的打印机不支持图形打印模式,还有
一种办法就是利用打印机的自造字功能,先
造出若干字符,然后用文本模式打印。
 
我做过类似的开发,你仔细的阅读说明书,看看命令字,如果说明书中说明能出汉字,
那应该可以的!
 
可以读取label上中文字符各点的信息,设黑点为1,白点为0,
再将得到的2进制数转换成16进制数打印,即是打印图形
 
多谢各位。
to zhukewen, qiya, bowl: 能否再详细些,或是提供一段DEMO代码片段。
 
你可以直接输出成打印格式文件,然后到哪里都一样的
 
你应当先确定你的打印机支持图形还是造字,
你先查一下打印机手册图形命令格式和图形数据格式
 
for y:=0 to label.height-1 do
begin
ss:='';
for x:=0 to label.Width-1 do
begin
if label.Canvas.Pixels[x,y]=clwhite then
ss:=ss+'0'
else
ss:=ss+'1';
end;
end;
 
to zhukewen :我的打印机支持图形打印。
to bowl: 你的代码我试了,怎么打出来的全是1111111呀。
to 轩辕散光: 具体怎么做呢?
 
sorry 忘了跟你说label的底色设为白色
 
to bowl:唉,不行啊,打出来的全是000000000,能不能把全部代码写出来看看。
 
打印时选择打印到文件,输出一个prn(好像是)然后在其他的打印机上打印
 
to: 我能对用户说,我已把要打印的东东输出到一个prn,然后你把它拿到其他的打印机上打印吧?
 
谁说要打出来啦?这才是2进制数呐,还要转换成16进制的。2进制数你先转到memo里看看,
应该是0、1间隔的那种格式 如:001001010011
 
不明白,能否给段完整代码。
 
在Windows打印是不需要字库的
只要找人写个打印驱动程序出来不就成了。这才是通用的解决办法。
用delphi作这些事, 恐怕要累死人了, 呵呵
 
to htw: 不能装驱动程序啊,只能通过写并口,这是需求上的。
 
后退
顶部