第三张贴,票据打印问题。

bapiyang006 2010-10-20 03:21:05
票据打印类参考:http://www.csharpwin.com/csharpspace/9090r8371.shtml

思路是不是这样的:利用C#中封装好的类,去调用装好的WindowsAPI驱动程序,然后控制打印。

问题1:是不是不同的打印机需要写不同的“调用Windows驱动程序”的程序代码?有没有通用的代码?
问题2:票据是要设置格式的,应该在什么位置进行设置?
问题3:调用“WindowsAPI”时要用到哪些实例,怎样调用的,有没有实例可供参考下?
...全文
180 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
盜令玊 2010-10-28
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 bapiyang006 的回复:]

引用 6 楼 urhp02857 的回复:
C# code

public class PrintCase
{
private float LineHeight = 0f;
private const int Lines = 13;
private LinePointInfo[] LinesPoints = new LinePointInfo[13];
……


怎样设置打……
[/Quote]
e.Graphics.DrawString("CompanyCaption", this.prFont, Brushes.Black, x, y, new StringFormat());
这里的CompanyCaption就是打印CompanyCaption
我给的是一个例子 通过外部参数传递要打印的值就能实现
特别 2010-10-26
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 dunao 的回复:]

看看这个我写的发票打印程序

主要设计器源程序
[/Quote]
+1

参考dunaohttp://blog.csdn.net/dunao/archive/2008/10/04/3016113.aspx

绝对可以设计一个通用的打印程序,不管是单据套打还是报表
bapiyang006 2010-10-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 urhp02857 的回复:]
C# code

public class PrintCase
{
private float LineHeight = 0f;
private const int Lines = 13;
private LinePointInfo[] LinesPoints = new LinePointInfo[13];
……
[/Quote]

怎样设置打印内容呢?打印机怎么知道打印哪些内容?
bapiyang006 2010-10-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wupeng7654111 的回复:]
可以把对应的数据字段绑到报表里啊,这样在打的时候就会显示出指定的数据了。
[/Quote]

报表?何为报表,怎样帮到报表?
wupeng7654111 2010-10-25
  • 打赏
  • 举报
回复
可以把对应的数据字段绑到报表里啊,这样在打的时候就会显示出指定的数据了。
盜令玊 2010-10-20
  • 打赏
  • 举报
回复

public class PrintCase
{
private float LineHeight = 0f;
private const int Lines = 13;
private LinePointInfo[] LinesPoints = new LinePointInfo[13];
private PrintDocument prDoc = null;
private Font prFont = null;
private readonly int StringTop = 8;
public PrintCase()
{
this.prDoc = new PrintDocument();
this.prDoc.PrintPage += new PrintPageEventHandler(this.prDoc_PrintPage);
}

private void prDoc_PrintPage(object sender, PrintPageEventArgs e)
{
//
//TODO: 在这里计算要打印内容的位置
float x = 0f;
float y = 0f;
this.prFont = new Font("华文新魏", 18f, FontStyle.Bold);
x = e.MarginBounds.Left + ((e.MarginBounds.Width - (this.szCaption.Length * this.prFont.Size)) / 4f);
y = this.prFont.GetHeight(e.Graphics);
e.Graphics.DrawString("CompanyCaption", this.prFont, Brushes.Black, x, y, new StringFormat());
x += 60f;
y += Convert.ToSingle((double) (this.prFont.GetHeight(e.Graphics) * 1.5));
e.Graphics.DrawString("szCaption", this.prFont, Brushes.Black, x, y, new StringFormat());
x += 200f;
this.prFont = new Font("MS UI Gothic", 18f, FontStyle.Bold);
e.Graphics.DrawString(WebSiteCaption, this.prFont, Brushes.Black, x, y, new StringFormat());
Font font = new Font("华文细黑", 16f, FontStyle.Bold);
//
e.HasMorePages = false;
}

public readonly string strConfigFile = Application.StartupPath + "\\PrintConfig.xml";

public void Print()
{
string strPrinterName = @"\\ZUOXI04\EPSON LQ-300K+ ESC/P 2";//打印机名称

PrinterSettings settings = new PrinterSettings();
settings.PrinterName = strPrinterName;
PageSettings defaultPageSettings = this.prDoc.DefaultPageSettings;
foreach (PaperSize size in settings.PaperSizes)
{
if (size.PaperName == "Custom Format")
{
defaultPageSettings.PaperSize = size;
break;
}
}
defaultPageSettings.PrinterSettings = settings;
this.prDoc.PrinterSettings = settings;
this.prDoc.DefaultPageSettings = defaultPageSettings;
this.prDoc.Print();
}

public void ShowPreview() //打印预览
{
PrintPreviewDialog dialog = new PrintPreviewDialog();
dialog.Document = this.prDoc;
dialog.ShowDialog();
}

[StructLayout(LayoutKind.Sequential)]
private struct LinePointInfo
{
public PointF LeftTop;
public PointF LeftBottom;
public PointF RightTop;
public PointF RightBottom;
public void Init()
{
this.LeftTop = new PointF(0f, 0f);
this.LeftBottom = new PointF(0f, 0f);
this.RightTop = new PointF(0f, 0f);
this.RightBottom = new PointF(0f, 0f);
}
}
}

以前写过的一个自动打印的类,但是要打印的内容比较多的时候做的打印测试及代码的量比较多,因为要计算每个打印内容的位置。
后来考虑过用Excel编辑好要打印的模板,然后把相印的内容填充响应的单元格,然后打印输出,这个代码暂没有。
laomengzi 2010-10-20
  • 打赏
  • 举报
回复
买打印机的时候,会给你光盘的上面有驱动。
bapiyang006 2010-10-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 air123456789 的回复:]
嘿嘿,水平和我差不多。
[/Quote]

哦,一起学习吧。。。
air123456789 2010-10-20
  • 打赏
  • 举报
回复
嘿嘿,水平和我差不多。
【重要提示】本资源设置为0积分下载,若非0积分请勿轻易下载 亲爱的CSDN用户: 首先感谢你点进这个资源页面。我需要提前说明一个重要情况: 本资源原本已设置为“0积分下载”,即作者希望完全免费共享。但CSDN平台有时会根据文件的下载热度、文件大小、用户权限等因素,自动将部分资源的积分调整为非0数值(如1积分、2积分、5积分等)。这是平台系统的自动行为,而非作者本人的设定。 因此,如果你当前看到该资源的下载所需积分不是0(例如显示为1、2、3……),请谨慎决定是否下载。 如果你按照非0积分支付并下载后发现资源内容不符合预期、链接失效,或者实际上该资源本应是免费的,作者无法为此承担积分损失或退还操作。强烈建议:仅在页面显示为0积分时进行下载。 另外,本资源描述中并未直接提供具体的下载地址或外部链接,因为它本身是一个通过CSDN官方上传通道提交的文件/内容包。如果你看到描述中没有外部网盘地址,这是正常的——资源文件应通过CSDN内置的“下载”按钮获取。若因平台积分显示异常导致你支付了积分,请优先联系CSDN客服咨询积分退还政策,作者没有权限修改平台自动设定的积分值。 感谢你的理解与支持。技术分享本应开放,但受限于平台规则,特此提醒如上。祝学习进步!

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧