c# 打印固定格式的针式打印机 求救!!! 这其实就是套打,很简单了,量好尺寸,换算成像素,设置好纸张类型,放一个Group和几个Label上去。然后按客户号字段进行Group,每个Group后面加个PageBreak就行了。具体打几号到几号的选择在传数据给打印函数的时候进行选择,跟打印函数无关。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 针式打印机 打印 小票(长12cm 宽7cm)可是如何自动连续打印?光说是套打,可是怎么套打的啊!!!还有就是 怎么指定是哪个针式打印机...... 楼主跟我做合格证打印是一样,一次可能打印几百张。一个数据表传给打印函数,打印函数foreach这个表,生成打印文档进行打印就行了针式打印机是提供打印的列表供用户选择,选择一次以后保存选项到配置文件,下次加载默认这个打印机就行了。 没有单独的例子,我找几段代码这个是加载打印机的public void LoadPrinter() { cbo.Properties.Items.Clear(); if (_allownull) cbo.Properties.Items.Add("请选择……"); ManagementObjectSearcher query = new ManagementObjectSearcher("Select * from Win32_Printer"); ManagementObjectCollection queryCollection = query.Get(); foreach (ManagementObject mo in queryCollection) { cbo.Properties.Items.Add(mo["Name"].ToString()); } cbo.SelectedIndex = 0; }用户选择了打印机以后保存在配置文件里,这个根据你使用什么文件保存而定,就不贴了,加载的时候把上次保存的打印机取出来。 下面是打印函数,我这里是根据数据进行自动分割,比你那个要复杂点,你可以一行数据一张卡。public static void PNT_HGZ(XS_DJ cls, int maxsl, DataTable dt, string printer) { string rq = DateTime.Today.ToString("yyyy-M-d"); Top_Cust tc=new Top_Cust(cls.CIDX); string customer = tc.CustID; foreach (DataRow dr in dt.Rows) { string mm = dr["mmstr"].ToString(); string kh = dr["kh"].ToString(); string ys = dr["ys0"].ToString(); string gg = dr["ggstr"].ToString(); int sl = Function.CINT(dr["sl"], 0); int ms = Function.CINT(dr["maxsl"], 0); if (ms == 0) ms = maxsl; if (ms < 0) continue; while (sl > 0 && ms > 0) { int x = 0; if (sl > ms) { x = ms; sl = sl - ms; } else { x = sl; sl = 0; } RPT_HGZ rpt = new RPT_HGZ(); rpt.L_PH.Text = cls.PH; rpt.L_MM.Text = mm; rpt.L_KH.Text = kh; rpt.L_YS.Text = ys; rpt.L_GGStr.Text = gg; rpt.L_SL.Text = x.ToString(); rpt.PrintingSystem.ShowMarginsWarning = false; rpt.Print(printer); } } } 怎么做打印文件这个不用说了,照你的要求,就是量好尺寸,设置好纸张大小,拖几个Label上去就去,然后慢慢测试调位置吧。现在一般企业里发货单什么的都很少用套打了,基本都是空白纸打印,合格证和流程卡比较特殊,套打的比较多,合格证因为要印刷公司logo,流程卡因为工序不同工艺会不一样,而且印刷好的硬一点的卡片在生产流通过程中会更方便点,普通打印纸容易破。 类型 form窗体给某一网页传值? DataSet怎么转化成Access数据 c#如何读取XML节点下某些字段的内容 List的Select问题 C#高级编程里不懂的地方,50分 如何得到服务器时间而不是本地系统时间/? C#中转换问题 求救,关于DataGrid 的VisibleRowCount为什么与实际显示的行数不符合!?(OnLine) 假如有两个窗体,如何显示子窗体。但不是在第一个窗体容器内显示,我想让第二个窗体像对话框一样弹出来显示 问题标签用户 本机上没有Microsoft Excel 应用程序组件 2个线程同时做同一个操作,不影响主线程的其他操作
可是如何自动连续打印?光说是套打,可是怎么套打的啊!!!
还有就是 怎么指定是哪个针式打印机......
一个数据表传给打印函数,打印函数foreach这个表,生成打印文档进行打印就行了
针式打印机是提供打印的列表供用户选择,选择一次以后保存选项到配置文件,下次加载默认这个打印机就行了。
public void LoadPrinter()
{
cbo.Properties.Items.Clear();
if (_allownull) cbo.Properties.Items.Add("请选择……"); ManagementObjectSearcher query = new ManagementObjectSearcher("Select * from Win32_Printer");
ManagementObjectCollection queryCollection = query.Get(); foreach (ManagementObject mo in queryCollection)
{
cbo.Properties.Items.Add(mo["Name"].ToString());
} cbo.SelectedIndex = 0;
}
用户选择了打印机以后保存在配置文件里,这个根据你使用什么文件保存而定,就不贴了,加载的时候把上次保存的打印机取出来。
public static void PNT_HGZ(XS_DJ cls, int maxsl, DataTable dt, string printer)
{
string rq = DateTime.Today.ToString("yyyy-M-d");
Top_Cust tc=new Top_Cust(cls.CIDX);
string customer = tc.CustID;
foreach (DataRow dr in dt.Rows)
{
string mm = dr["mmstr"].ToString();
string kh = dr["kh"].ToString();
string ys = dr["ys0"].ToString();
string gg = dr["ggstr"].ToString();
int sl = Function.CINT(dr["sl"], 0);
int ms = Function.CINT(dr["maxsl"], 0);
if (ms == 0) ms = maxsl;
if (ms < 0) continue; while (sl > 0 && ms > 0)
{
int x = 0;
if (sl > ms)
{
x = ms;
sl = sl - ms;
}
else
{
x = sl;
sl = 0;
} RPT_HGZ rpt = new RPT_HGZ();
rpt.L_PH.Text = cls.PH;
rpt.L_MM.Text = mm;
rpt.L_KH.Text = kh;
rpt.L_YS.Text = ys;
rpt.L_GGStr.Text = gg;
rpt.L_SL.Text = x.ToString(); rpt.PrintingSystem.ShowMarginsWarning = false;
rpt.Print(printer);
}
}
}