某同学医院收费系统的开发公司倒闭,现在用的半死不活,勉强可以凑合用,只是可以打印药品清单,没有提供发票格式打印。原来发票是一个古老的dos版本票据打印软件,现在要求增加一项公费医疗,要求打印公费医疗支付比例。所以让我帮他搞定这个问题
现在软件是实现了他们要求打印的功能,我也受了很多折磨,查阅了很多资料,差点万念俱灰了。
我把我碰到的问题一一列出,并给出我的方案,源码太简单就不贴出来了,需要人找我我会发给你们参考。高手就不要笑话俺们这些个低手了,俺们需要不断的学习的
1.首要问题是针式打印机自定义纸张大小问题?
感谢/ <summary>
/// 成都微创工作室(电子科技大学微创工作室)
/// Tell 028-82853098
/// Email zyspipi@163.com , you680@gmail.com
/// 打印机纸张的真正自定义部分代码
/// 2006-1-2
他们提供一个解决方案,调用api 实现自定义纸张大小的方法,这个是解决问题的关键,需要的去网上搜索他们的源码。
2. 小写金额转换大写的转换问题?
我用一个类实现
class Bigconvert
{
const string z0 = "零";
const string z1 = "壹";
const string z2 = "贰";
const string z3 = "叁";
const string z4 = "肆";
const string z5 = "伍";
const string z6 = "陆";
const string z7 = "柒";
const string z8 = "捌";
const string z9 = "玖";
// const string z10 = "拾";
private string wan;
public string Wan
{
get { return wan; }
set { wan = value; }
}
private string qian;
public string Qian
{
get { return qian; }
set { qian = value; }
}
private string bai;
public string Bai
{
get { return bai; }
set { bai = value; }
}
private string shi;
public string Shi
{
get { return shi; }
set { shi = value; }
}
private string yuan;
public string Yuan
{
get { return yuan; }
set { yuan = value; }
}
private string jiao;
public string Jiao
{
get { return jiao; }
set { jiao = value; }
}
private string fen;
public string Fen
{
get { return fen; }
set { fen = value; }
}
public static string z1daoyi(char i)
{
switch (i)
{
case '0':
return z0;
case ' ':
return z0;
case '1':
return z1;
case'2':
return z2;
case '3':
return z3;
case '4':
return z4;
case '5':
return z5;
case '6':
return z6;
case '7':
return z7;
case '8':
return z8;
case '9':
return z9;
default :
return "";
}
}
public static Bigconvert dx(string str)
{
Bigconvert dd = new Bigconvert();
char[] je =shoujuprint.Convert8(str).ToCharArray();
for (int i = 0; i <= 7; i++)
{
switch (i)
{
case 0:
dd.Wan = Bigconvert.z1daoyi(je[i]);
break;
case 1:
dd.Qian = Bigconvert.z1daoyi(je[i]);
break;
case 2:
dd.Bai = Bigconvert.z1daoyi(je[i]);
break;
case 3:
dd.Shi = Bigconvert.z1daoyi(je[i]);
break;
case 4:
dd.Yuan = Bigconvert.z1daoyi(je[i]);
break;
case 5:
break;
case 6:
dd.Jiao = Bigconvert.z1daoyi(je[i]);
break;
case 7:
dd.Fen = Bigconvert.z1daoyi(je[i]);
break;
}
}
return dd;
}
}
3.发票上项目金额小写右对齐问题?
我只是实现5位数字的不超过万位,
class fpshuziyouduiqi
{
public static string Convert8(string str)
{
if (str == "")
return "";
else
{
string i = "";
i = string.Format("{0:00000.00}", Convert.ToDouble(str));
return zh(i);
}
}
private static string zh(string a)
{
string b = "";
char[] d = a.ToCharArray();
for (int i = 0; i <= 7; i++)
{
if (i == 4 && d[4] == '0')
{
b = " 0";
b += d[5];
b += d[6];
b += d[7];
return b;
}
if (d[i] == '0')
b += " ";
else
{
for (int j = i; j <= 7; j++)
{ b += d[j]; }
return b;
}
}
return b;
}
}
4,打印事件实现?
其他都跟文本打印一样,不熟悉的看看帮助文档,主要是设置绘制的单位为毫米,就可以精确控制了打印输出了
就是这个 g.PageUnit = GraphicsUnit.Millimeter;
以上为基本思路,有些网友说用水晶报表解决,水晶报表我还没有去研究,有了这个思路,基本上解决其他精确套打的比如支票,快递单据都应该可以解决了。
希望对这个问题困惑的朋友能够多个小提示。可以qq跟我交流106782465