打印直接输出到LPT口,字符对齐有困难 ( 积分: 100 )

  • 主题发起人 主题发起人 winxsm
  • 开始时间 开始时间
W

winxsm

Unregistered / Unconfirmed
GUEST, unregistred user!
在小票打印时,采用 打印直接输出到LPT口 但这时输出的内容总是不能对齐,如下:
--------------------------------
芦荟汁 30.0
纯牛奶 30.0
康师傅绿茶 15.0
人参乌龙茶 28.0
红茶 10.0
--------------------------------
打印出来的是:
--------------------------------
芦荟汁 30.0
纯牛奶 30.0
康师傅绿茶 15.0
人参乌龙茶 28.0
红茶 10.0
--------------------------------
晕! 请各位帮忙解决!谢谢
 
在小票打印时,采用 打印直接输出到LPT口 但这时输出的内容总是不能对齐,如下:
--------------------------------
芦荟汁 30.0
纯牛奶 30.0
康师傅绿茶 15.0
人参乌龙茶 28.0
红茶 10.0
--------------------------------
打印出来的是:
--------------------------------
芦荟汁 30.0
纯牛奶 30.0
康师傅绿茶 15.0
人参乌龙茶 28.0
红茶 10.0
--------------------------------
晕! 请各位帮忙解决!谢谢
 
使用TAB字符,我想应该可以对齐的吧.
 
请具体说明一下,我不太清楚 TAB字符怎么做?
其实在打印的时候,一个汉字不等于 两个字母的宽度,要小一点;
32 个字母 与 16个汉字不是相同的宽度,汉字的长度要小三个字母的宽度
12345678901234567890123456789012
--------------------------------
中中中中中中中中中中中中中中
(注:以上的汉字只有14个,这个只是为了说明,打印出来的结果是如上的样子)
 
我也很想知道答案,一旦用直接输出到LPT口时就会出现这样的情况,不知道如何解决
 
为什么直接输出到 LPT 口时 字体打印印出来都很正常(指看的清晰) 采用 TPrinter打印的就很差! why
 
[^][:(][:D][:)][:(!][^]
代码:
 
tab字符好像是ascii 9吧.你在记事本里边输上一串,然后type *.txt >prn.打印机应该支持TAB的
 
好不意思!直接输出根本就不支持 Tab 字符!麻烦各位想想办法啊!
 
用格式化呀,你左边的文字格式先定个长度,不足的用空格补足,后面的金额也用格式化输入,如:
assignfile(f,'lpt1');

rewrite(f);
writeln(f,+格式化文字+format('%*.*f',[13,2,Money]));
closefile(f);
 
我估计你没有看完所有回帖吧! 一个汉字不等于两个空格。所以打印出来才不会对齐,估计是没有办法搞定了
主要不要对齐的原因是汉字引起的。
 
var F:TextFile;
aStr:String;
begin
assignfile(f,'lpt1');
rewrite(f);
astr:='芦荟汁';
writeln(f,astr+format('%*.*f',[30-Length(astr),2,23.303]));
astr:='康师傅绿茶';
writeln(f,astr+format('%*.*f',[30-Length(astr),2,2023.30]));
astr:='白糖';
writeln(f,astr+format('%*.*f',[30-Length(astr),2,2.30]));
writeln(f,'');
writeln(f,'');
astr:='不会';
writeln(f,astr+format('%*.*f',[30-Length(astr),2,3222.333]));
astr:='就不要说不行';
writeln(f,astr+format('%*.*f',[30-Length(astr),2,3.33]));
astr:='也不要';
writeln(f,astr+format('%*.*f',[30-Length(astr),2,0.20]));
astr:='瞎说';
writeln(f,astr+format('%*.*f',[30-Length(astr),2,2.20]));
closefile(f);
 
把品种和金额分开发送到打印机,可以吗
 
当然可以
writeln(f,品种+format('%*.*f',[30-Length(astr),2,金额]));
就可以了,把它改成一个过程后很好用了!
上面只是我刚写的测试代码,回驳某些人的狂妄![:(]
 
你的对齐方式能说明在机上能对齐,但是打印出来的时候就不对齐。
我采用打印机是 EPSON TM210 的,不知你的打印机是什么类型的。
 
我用的是EPSON 300K+ ,在其它机上都通用呀!我的软件用在好多场合的。
不过说起EPSON TM210,我没用过,但EPSON TM-U210我就用过,曾经我就发现U210有很多问题不能解决,还至电到EPSON(售后服务电话:800-810-9977),最主要就是速度太慢。但他们却说U210已是同型号中最快的了,不敢相信。
你要不信,你可以换个打印机试试!
 
主要是中/英字符宽度不一致造成的,用rixwy的直接加空格的方法是不起作用的,EPSON TM210的英数字符宽度是:9X9,而一个汉字的宽度是:16X16,造成两个英数字符比一个汉字宽2个点,在加空格时应考虑这个差值。
 
感谢特尔斐,但是我不太明白如何去控制这个差值啊!
 
后退
顶部