2 kawun kawun 于 2016.09.10 08:38 提问

C# 简单票据功能打印如何实现

我想在一张纸质支付凭证模板上面对应的地方打印上相应的数据,请问如何实现。如果用Graphics或 简单做个panel的话 如何确定打印数据的位置。或者还有更好的办法。

2个回答

yongyong521
yongyong521   2016.09.13 14:44
已采纳
  /// <summary>
    /// 小票打印
    /// </summary>
    public class PosPrint
    {
        private System.Windows.Forms.PrintPreviewDialog printv_pos = null;
        private System.Drawing.Printing.PrintDocument printd_pos = null;
        public static string strContent = string.Empty;
        private string printContent = string.Empty;

        public PosPrint(string printContent)
        {
            this.printv_pos = new System.Windows.Forms.PrintPreviewDialog();
            this.printd_pos = new System.Drawing.Printing.PrintDocument();
            this.printv_pos.AutoScrollMargin = new System.Drawing.Size(0, 0);
            this.printv_pos.AutoScrollMinSize = new System.Drawing.Size(0, 0);
            this.printv_pos.ClientSize = new System.Drawing.Size(500, 200);
            this.printv_pos.Document = this.printd_pos;
            this.printv_pos.Enabled = true;
            this.printv_pos.Name = "printPreviewDialog1";
            this.printv_pos.Visible = false;
            this.printd_pos.DocumentName = "社区活动积分小票";
            this.printd_pos.OriginAtMargins = true;
            this.printd_pos.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(this.printd_pos_PrintPage);

            this.printContent = printContent;
        }

        private int getYc(double cm)
        {
            return (int)(cm / 25.4) * 100;
        }

        public void print_view(IWin32Window win,int x,int y)
        {

            this.printd_pos.PrintController = new System.Drawing.Printing.StandardPrintController();
            this.printd_pos.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(printd_pos_PrintPage);

            //设置边距
            Margins margins = new Margins(45, 20, 50, 20);
            this.printd_pos.DefaultPageSettings.Margins = margins;
            this.printd_pos.DefaultPageSettings.PaperSize = new System.Drawing.Printing.PaperSize("First custom size", getYc(x), y);
            //printv_pos.PrintPreviewControl.AutoZoom = false;
            //printv_pos.PrintPreviewControl.Zoom = 1;
            //this.printv_pos.ShowDialog(win);
            try
            {
                printd_pos.Print();
            }
            catch
            {
                printd_pos.PrintController.OnEndPrint(printd_pos, new PrintEventArgs());
            }
        }
        /// <summary>
        /// 打印内容
        /// </summary>
        public string GetPrintStr(string printContent)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append(CommonClass.config.PrintHeader + "\n");
            sb.Append("日  期:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "\n");
            sb.Append("==============================\n");
            sb.Append(printContent);
            sb.Append("------------------------------\n");
            sb.Append("操作员:" + CommonClass.loginEntity.O_OperatorName + "\n");
            string myfoot = string.Format("{0}     \n", CommonClass.config.PrintFoot);
            sb.Append(myfoot);
            sb.Append("\r\n小勇软件工作室提供技术支持");
            return sb.ToString();
        }
        private void printd_pos_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            Graphics g = e.Graphics;
            string strFile = GetPrintStr(this.printContent);
            Font ft = new Font("宋体", 9.0F, FontStyle.Regular);
            Point pt = new Point(0, 0);
            g.DrawString(strFile, ft, new SolidBrush(Color.Black), pt);
        }
    }
kawun
kawun 谢谢,辛苦了
一年多之前 回复
u014143856
u014143856   2016.09.10 09:03

利用table布局进行打印 可以内嵌js

kawun
kawun 就是简单的c/s程序 不是b/s
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
WPF实现打印
WPF打印列表,支持样式,可以预览,希望有所帮助
C# 设置模版票据打印实例代码
C#打印票据代码 可实现动态设计模板,保存模板 ,加载模板等功能
c# winfrom实现票据打印系统源代码自己做的
用vs2008 c#实现各种票据打印,灵活的模板实现套打连打自定义票据尺寸以及票据的保存导出功能开发用时1个月同我朋友一起制作的呵呵。
winform实现发票打印功能
各位博友,好久没有更新博客了,前两天一个交流中的好友研究了一套winform中的打印功能,再此向这位好友【杭州-andy】表示感谢,感谢他提供这么好的素材让大家学习。          直入主题,实现这个打印功能,只需要3个主要的打印控件,printDocument,printDialog,printPreviewDialog。 先介绍一下整体思路:         A首先打开VS2005新
单据套打WINFORM实现,带预览功能
昨天公司要打单子而不是以前的手写 为了实现这样的功能上网搜索了一下 http://blog.csdn.net/fwj380891124/article/details/8071801 这篇文章来入门,不过发现无法实现套打功能,把所有的信息都打出来了  对代码进行了一定的调整,并且可以预览,去除了预览页面的打印功能 下面是我写的程序 1.      新建立一个WINFORM项
web应用票据打印实现(一)
web应用浏览器端票据打印实现 许多web应用的开发中都会涉及到票据打印的功能。常用的Web打印实现的方式有: 1.浏览器打印接口 调用window.print()方法,调用打印机功能打印当前窗口的内容,与单击浏览器的打印按钮效果一致。示例代码如下: 一些文字内容...... 打印当前页面 优点是打印对话框功能很全面,甚至如火狐浏览
C#票据打印类
<br />using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Windows.Forms; using Microsoft.Win32.SafeHandles; using System.Runtime.InteropServices; using System.ComponentModel; namespace Comm {
web应用票据打印实现(二)
要实现票据的套打,就要精确的定位打印数据的格式,在本项目中我们通过Adobe Acrobat制作票据模板来实现这一工作,打印时通过itext库来填写模板,最后生成用以打印的pdf。 1.pdf票据模板的制作
web应用票据打印实现(三)
itext是一个开源库,用以动态的创建、修改pdf文件。通过itext,我们就可以在上一篇创建的pdf模板中填入数据,生成供打印用的pdf文档了。首先我们需要打开模板,者通过创建一个PdfReader 对象来实现:String printableTemplate = ... //模板文件的路径 PdfReader printableReader = new PdfReader(printableTe
java定位打印(如:超市,票据打印)
java定位打印(如:超市,票据打印) Java自从问世以来在各方面发展迅速,但是一直以来,打印输出是java最弱的方面。事实上,java1.0不支持任何打印功能。Java1.1在 java.awt包里包含了一个叫做PrintJob的类,但是这个类提供的打印功能十分粗糙和不可靠。当java1.2问世,它围绕 PrinterJob设计了一个完整独立的打印机制(叫做java2D printing AP