wince6.0 设备 打印定长字符串问题
本帖最后由 ysjydss 于 2013-06-22 18:31:53 编辑
pda 售货时,打印售货小票,其中商品名称有汉字,有英文,字符长度有长有短,所以定长打印8个汉字,16个长度,不足补空格,问题来了
foreach (DataRow row in dt.Rows)
{
string spmc = row["商品名称"].ToString();
string spmctxt = spmc + new string(' ', 16 - Encoding.GetEncoding("gb2312").GetBytes(spmc).Length);
MessageBox.Show(spmctxt.Length.ToString());//这里是不管汉字还是英文,都算一个字符长度,所以字符长度有长有短。
MessageBox.Show(Encoding.GetEncoding("gb2312").GetBytes(spmctxt).Length.ToString());//这里显示定长16个长度
string spdj = row["单价"].ToString();
decimal sl = Convert.ToDecimal(row["数量"].ToString());
decimal je = Convert.ToDecimal(row["金额"].ToString());
pr.PrintLine(spmctxt + spdj.PadRight(4) + sl.ToString().PadRight(6) + je.ToString());//可是打印后,并不是一样的长,造成小票对不齐,非常难看。
}
哪位大神指点指点吧。。。。。
------解决方案--------------------打印内容的长短与编码方式无关,得改字体和字号啊,换等宽字体吧,比如“宋体”
------解决方案--------------------一,使用等宽字体,新宋体才是等宽字体
二,如果允许超长就换行,可以在矩形内画然后自动换行
------解决方案--------------------pr.PrintLine 是个什么方法,如果只是发送字符串就可以打印了,那得找找打印机有没有相关字体的设置。