C#PrintDocument用法

连接转载自houzf
分页打印

using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.Drawing.Printing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BarcodeLib;
using DataView;
using OpdCommon;
using DataModel;

namespace RegPrint
{
    public class Bill_Charge_QJRMYY
    {
        #region 参数设置
        //纸张大小
        private int m_douWidth = 472;//447;                                         //纸张宽度
        //private int m_douHeight = 800;//742;                         //纸张高度
        //打印区域
        /// <summary>
        /// 起始X坐标
        /// </summary>
        private int m_douPrintLeft = 15;// Global._PrintSet.FpX;                                     //左边距
        /// <summary>
        /// 起始Y坐标
        /// </summary>
        private int m_douPrintRight = 0;                                      //右边距
        private int m_douPrintTop = 0;//+ Global._PrintSet.FpY; //15 + Global._PrintSet.FpY;                                       //上边距
        private int m_douPrintBottom = 0;                                     //下边距
        private int leftTwoWords = 11;                                     //空2字的距离
        private Font m_font_st_16_bold = new Font("宋体", 16, FontStyle.Bold);           //样式
        private Font m_font_st_14_bold = new Font("宋体", 14, FontStyle.Bold);           //样式
        private Font m_font_st_12_bold = new Font("宋体", 12, FontStyle.Bold);           //样式
        private Font m_font_st_10_Regular = new Font("宋体", 10, FontStyle.Regular);     //样式
        private Font m_font_st_8_Regular = new Font("宋体", 8, FontStyle.Regular);       //样式
        private Font m_font_st_9_bold = new Font("宋体", 9, FontStyle.Bold);             //样式
        private Font m_font_st_10_bold = new Font("宋体", 10, FontStyle.Bold);           //样式
        private Font m_font_ht_18_bold = new Font("黑体", 18, FontStyle.Bold);           //样式
        private Font m_font_ht_12_bold = new Font("黑体", 12, FontStyle.Bold);           //样式
        private int m_intHeadHeight = 0;                                                 //字体高度
        private double m_douHeadWidth = 0;                                               //高度
        private Pen m_penHead = new Pen(Brushes.Black, (float)0.2);
        private Pen m_penBody = new Pen(Brushes.Black, 1);                               //打印表格线格式
        //条形字体
        private Font m_fonBarcode = new Font("3 of 9 barcode", 20, FontStyle.Regular);   //样式
        private PrintDocument m_pdoPrint;                                                //打印文档类
        private SolidBrush m_sbrDraw = new SolidBrush(System.Drawing.Color.Black);       //当前画笔颜色 
        #endregion
        Bill_Register_QJRMYY _Bill_Register_KHRMYY = new Bill_Register_QJRMYY();
        private bool _isBd = false;
        private k_pafpaid _RegInfo;

        private static List<PdrugNo> pdrugInfo = null;
        private static List<OPfee> _fee = null;
        private static List<code213> _Code213 = null;
        private static pmain paint = null;

        private class TypeInfo
        {
            public string type { get; set; }
            public string name { get; set; }
        }

        private static List<TypeInfo> typeInfoList = new List<TypeInfo>() { 
            new TypeInfo() { type = "D", name = "西药费" }, 
            new TypeInfo() { type = "Y", name = "成药费" },
            new TypeInfo() { type = "Z", name = "中药费" },
            new TypeInfo() { type = "L", name = "检验费" },
            new TypeInfo() { type = "NOL", name = "检查费" },
            new TypeInfo() { type = "NSC", name = "治疗处置" } };

        public string DeptId = "";
        public string Empid = "";

        public void PrintCharge(k_pafpaid RegInfo, List<OPfee> fee, bool isBd)
        {
            _RegInfo = RegInfo;
            _isBd = isBd;

            _Code213 = dataCode213.GetData();

            fee.Sort();
            _fee = fee;

            string _msg = "";
            pdrugInfo = dataPdrugno.GetFbidData(_RegInfo.mrn.ToString(), _RegInfo.series.ToString(), _RegInfo.fbid.ToString());
            paint = dataPmain.GetPmainByMrn("<MRN>" + _RegInfo.mrn.ToString() + "</MRN>", ref _msg);


            foreach (OPfee mx in _fee)
            {
                if (!string.IsNullOrEmpty(mx.dr) && string.IsNullOrEmpty(Empid) && Empid != "0")
                {
                    Empid = mx.dr.Trim();
                }
                if (!string.IsNullOrEmpty(mx.cdept) && string.IsNullOrEmpty(DeptId) && DeptId != "0")
                {
                    DeptId = mx.cdept.Trim();
                }
            }

            string strMsg = "";
            try
            {
                //PrintDocument pd = new PrintDocument();
                //Margins margin = new Margins(20, 20, 20, 20);
                //pd.DefaultPageSettings.Margins = margin;

                //string xpPrintName = "Microsoft XPS Document Writer";
                //xpPrintName = Global._PrintSet.Ptdy;

                //if (xpPrintName != "")
                //{
                //    pd.PrinterSettings.PrinterName = xpPrintName;
                //}

                //PrintDialog MySettings = new PrintDialog();
                //MySettings.Document = pd;
                //PaperSize pageSize = null;
                foreach (PaperSize ps in MySettings.Document.PrinterSettings.PaperSizes)
                {
                    if (ps.PaperName.Equals("A5"))
                        pageSize = ps;
                }
                pd.DefaultPageSettings.PaperSize = pageSize;
                //int width = (int)(148 / 25.4 * 100);
                //int height = (int)(210 / 25.4 * 100);
                //pageSize = new PaperSize("Custom", width, height);//210mmx148mm
                //pd.DefaultPageSettings.PaperSize = pageSize;
                //pd.PrintPage += new PrintPageEventHandler(this.PrintDrawFp);
                PrintPreviewDialog pageViewpDialog = new PrintPreviewDialog();
                pageViewpDialog.Document = pd;
                //显示打印预览
                DialogResult result = pageViewpDialog.ShowDialog();
                //pd.Print();


                m_pdoPrint = new PrintDocument();
                string xpPrintName = "Microsoft XPS Document Writer";
                //xpPrintName = Global._PrintSet.Ptdy;

                if (xpPrintName != "")
                {
                    m_pdoPrint.PrinterSettings.PrinterName = xpPrintName;
                }
                m_pdoPrint.DefaultPageSettings.Landscape = false;
                m_pdoPrint.PrintPage += PrintDrawFp;

                int y = 500 +  14* _fee.Count;

                m_pdoPrint.DefaultPageSettings.PaperSize = new PaperSize("Custom", 410, y);

                PageSetupDialog psdPrint = default(PageSetupDialog);
                psdPrint = new PageSetupDialog();
                psdPrint.Document = m_pdoPrint;

                PrintController pr = new StandardPrintController();
                m_pdoPrint.DefaultPageSettings = psdPrint.PageSettings;
                m_pdoPrint.DocumentName = "缴费凭据";
                m_pdoPrint.PrintController = pr;

                m_pdoPrint.Print();
            }
            catch (Exception ex)
            {
                strMsg = ex.Message;
            }
        }

        /// <summary>
        /// 打印的格式
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// 
        private void PrintDrawFp(object sender, PrintPageEventArgs ppeDraw)
        {
            StringFormat sfoDraw = new StringFormat();
            sfoDraw.LineAlignment = StringAlignment.Center;//居中对齐
            sfoDraw.FormatFlags = StringFormatFlags.LineLimit;//自动换行 
            Rectangle recDraw = new Rectangle();//打印区域 
            ppeDraw.Graphics.PageUnit = GraphicsUnit.Millimeter;

            string strTemp = "";
            int intTemp = 0;
            int intervalHight = 6; //行间距
            m_douPrintTop = m_douPrintTop + intervalHight;
            //医院名称
            strTemp = Global._LogInfo.loginHospitalNm;
            if (string.IsNullOrEmpty(strTemp)) strTemp = "衢州市第二人民医院";
            intTemp = (int)Math.Ceiling(ppeDraw.Graphics.MeasureString(strTemp, m_font_st_14_bold).Width);
            sfoDraw.Alignment = StringAlignment.Near;
            recDraw.Width = intTemp;
            m_intHeadHeight = (int)Math.Ceiling(m_font_st_14_bold.GetHeight(ppeDraw.Graphics));
            recDraw.Height = m_intHeadHeight;
            recDraw.X = m_douPrintLeft + 12;
            recDraw.Y = m_douPrintTop;
            ppeDraw.Graphics.DrawString(strTemp, m_font_st_14_bold, m_sbrDraw, recDraw, sfoDraw);

            // 缴费凭证
            m_douPrintTop = m_douPrintTop + m_intHeadHeight;
            if (_isBd) { strTemp = "缴费凭证(补)"; recDraw.X = m_douPrintLeft + 14; }
            else { strTemp = "缴费凭证"; recDraw.X = m_douPrintLeft + 17; }
            intTemp = (int)Math.Ceiling(ppeDraw.Graphics.MeasureString(strTemp, m_font_st_14_bold).Width);
            sfoDraw.Alignment = StringAlignment.Near;
            recDraw.Width = intTemp;
            m_intHeadHeight = (int)Math.Ceiling(m_font_st_14_bold.GetHeight(ppeDraw.Graphics));
            recDraw.Height = m_intHeadHeight;
            recDraw.Y = m_douPrintTop;
            ppeDraw.Graphics.DrawString(strTemp, m_font_st_14_bold, m_sbrDraw, recDraw, sfoDraw);

            if (!string.IsNullOrEmpty(_RegInfo.mrn.ToString()))
            {
                m_douPrintTop = m_douPrintTop + m_intHeadHeight;
                Image img = Global.CreateBarCode(_RegInfo.mrn.ToString(), "");
                ppeDraw.Graphics.DrawImage(img, m_douPrintLeft + 5, m_douPrintTop, 50, 10);//135,7,30,8--条码图
                m_intHeadHeight = 10;
            }

            //病历号:12312321
            m_douPrintTop = m_douPrintTop + m_intHeadHeight + 5;
            strTemp = "病历号:" + _RegInfo.mrn.ToString();
            intTemp = (int)Math.Ceiling(ppeDraw.Graphics.MeasureString(strTemp, m_font_st_10_Regular).Width);
            sfoDraw.Alignment = StringAlignment.Near;
            recDraw.Width = intTemp;
            m_intHeadHeight = (int)Math.Ceiling(m_font_st_10_Regular.GetHeight(ppeDraw.Graphics));
            recDraw.Height = m_intHeadHeight;
            recDraw.X = m_douPrintLeft;
            recDraw.Y = m_douPrintTop;
            ppeDraw.Graphics.DrawString(strTemp, m_font_st_10_Regular, m_sbrDraw, recDraw, sfoDraw);

            //病人姓名:111111
            m_douPrintTop = m_douPrintTop + m_intHeadHeight;
            strTemp = "姓名:" + _RegInfo.pname;
            intTemp = (int)Math.Ceiling(ppeDraw.Graphics.MeasureString(strTemp, m_font_st_10_Regular).Width);
            sfoDraw.Alignment = StringAlignment.Near;
            recDraw.Width = intTemp;
            m_intHeadHeight = (int)Math.Ceiling(m_font_st_10_Regular.GetHeight(ppeDraw.Graphics));
            recDraw.Height = m_intHeadHeight;
            recDraw.X = m_douPrintLeft;
            recDraw.Y = m_douPrintTop;
            ppeDraw.Graphics.DrawString(strTemp, m_font_st_10_Regular, m_sbrDraw, recDraw, sfoDraw);

            //缴费时间:2017-01-01
            m_douPrintTop = m_douPrintTop + m_intHeadHeight;
            strTemp = "缴费时间:" + DateTime.Parse(_RegInfo.padate.ToString()).ToString("yyyy-MM-dd HH:mm:ss");
            intTemp = (int)Math.Ceiling(ppeDraw.Graphics.MeasureString(strTemp, m_font_st_10_Regular).Width);
            sfoDraw.Alignment = StringAlignment.Near;
            recDraw.Width = intTemp;
            m_intHeadHeight = (int)Math.Ceiling(m_font_st_10_Regular.GetHeight(ppeDraw.Graphics));
            recDraw.Height = m_intHeadHeight;
            recDraw.X = m_douPrintLeft;
            recDraw.Y = m_douPrintTop;
            ppeDraw.Graphics.DrawString(strTemp, m_font_st_10_Regular, m_sbrDraw, recDraw, sfoDraw);

            //就诊科室:挂号科室
            m_douPrintTop = m_douPrintTop + m_intHeadHeight;
            strTemp = "就诊科室:" + dataDept.getDeptNameById(DeptId);
            intTemp = (int)Math.Ceiling(ppeDraw.Graphics.MeasureString(strTemp, m_font_st_10_Regular).Width);
            sfoDraw.Alignment = StringAlignment.Near;
            recDraw.Width = intTemp;
            m_intHeadHeight = (int)Math.Ceiling(m_font_st_10_Regular.GetHeight(ppeDraw.Graphics));
            recDraw.Height = m_intHeadHeight;
            recDraw.X = m_douPrintLeft;
            recDraw.Y = m_douPrintTop;
            ppeDraw.Graphics.DrawString(strTemp, m_font_st_10_Regular, m_sbrDraw, recDraw, sfoDraw);

            //就诊医生:就诊医生
            m_douPrintTop = m_douPrintTop + m_intHeadHeight;
            strTemp = "就诊医生:" + dataEmp.GetEmpNm(Empid);
            intTemp = (int)Math.Ceiling(ppeDraw.Graphics.MeasureString(strTemp, m_font_st_10_Regular).Width);
            sfoDraw.Alignment = StringAlignment.Near;
            recDraw.Width = intTemp;
            m_intHeadHeight = (int)Math.Ceiling(m_font_st_10_Regular.GetHeight(ppeDraw.Graphics));
            recDraw.Height = m_intHeadHeight;
            recDraw.X = m_douPrintLeft;
            recDraw.Y = m_douPrintTop;
            ppeDraw.Graphics.DrawString(strTemp, m_font_st_10_Regular, m_sbrDraw, recDraw, sfoDraw);

            //以下为费用明细
            m_douPrintTop = m_douPrintTop + 7;
            strTemp = "以下为费用明细";
            intTemp = (int)Math.Ceiling(ppeDraw.Graphics.MeasureString(strTemp, m_font_st_10_bold).Width);
            sfoDraw.Alignment = StringAlignment.Near;
            recDraw.Width = intTemp;
            m_intHeadHeight = (int)Math.Ceiling(m_font_st_10_bold.GetHeight(ppeDraw.Graphics));
            recDraw.Height = m_intHeadHeight;
            recDraw.X = m_douPrintLeft;
            recDraw.Y = m_douPrintTop;
            ppeDraw.Graphics.DrawString(strTemp, m_font_st_10_bold, m_sbrDraw, recDraw, sfoDraw);

            //费用明

            for (int i = 0; i < _fee.Count; i++)
            {
                OPfee opf = new OPfee();
                opf = _fee[i];

                #region 处理明细

                //if (_ftype != opf.ftype)
                //{
                //    _Gstep++;
                //    //费用类别 *************
                //    strTemp = "[" + opf.ftype + "]" + GetFeeNmByCode(opf.ftype).Rows[0]["remark"].ToString();
                //    intTemp = (int)Math.Ceiling(ppeDraw.Graphics.MeasureString(strTemp, m_font_st_10_bold).Width);
                //    sfoDraw.Alignment = StringAlignment.Near;
                //    recDraw.Width = intTemp;
                //    m_intHeadHeight = (int)Math.Ceiling(m_font_st_10_bold.GetHeight(ppeDraw.Graphics));
                //    recDraw.Height = m_intHeadHeight;
                //    if (string.IsNullOrEmpty(_ftype))//第一次循环时距离头部
                //    {
                //        recDraw.X = m_douPrintLeft;
                //        recDraw.Y += 12;
                //    }
                //    else
                //    {
                //        recDraw.X = m_douPrintLeft;
                //        recDraw.Y += 4;
                //    }
                //    ppeDraw.Graphics.DrawString(strTemp, m_font_st_10_bold, m_sbrDraw, recDraw, sfoDraw);
                //    _ftype = opf.ftype;
                //}

                string sFeeName = "";

                Global.CutString(opf.remark.Trim(), 24, 2, 1, "...", out sFeeName);
                m_douPrintTop = m_douPrintTop + m_intHeadHeight;

                string sl = "";
                //数量 *************
                if (opf.orderflag == "D" || opf.orderflag == "Z" || opf.orderflag == "Y")
                {
                    sl = decimal.Parse((opf.many / opf.oppack).ToString()).ToString("f2") + " ";
                }
                else
                {
                    sl = decimal.Parse(opf.many.ToString()).ToString("f2") + " ";
                }
                string dw = "";
                //单位 *************
                if (opf.orderflag == "D" || opf.orderflag == "Z" || opf.orderflag == "Y")
                {
                    dw = dataCode213.GetRemark(opf.unit, _Code213);
                }
                else
                {
                    dw = opf.unit + " ";
                }
                strTemp = sFeeName + " " + sl + " " + dw + " " + decimal.Parse(opf.fee.ToString()).ToString("f2") + "元";
                intTemp = (int)Math.Ceiling(ppeDraw.Graphics.MeasureString(strTemp, m_font_st_8_Regular).Width);
                sfoDraw.Alignment = StringAlignment.Near;
                recDraw.Width = intTemp;
                m_intHeadHeight = (int)Math.Ceiling(m_font_st_8_Regular.GetHeight(ppeDraw.Graphics));
                recDraw.Height = m_intHeadHeight;
                recDraw.X = m_douPrintLeft + 2;
                recDraw.Y = m_douPrintTop;
                ppeDraw.Graphics.DrawString(strTemp, m_font_st_8_Regular, m_sbrDraw, recDraw, sfoDraw);

                #endregion

                _fee.RemoveAt(i);
                i--;

            }

            //总金额:总金额
            m_douPrintTop = m_douPrintTop + m_intHeadHeight;
            strTemp = "总金额:" + decimal.Parse(_RegInfo.patotal.ToString()).ToString("0.00") + "元";
            intTemp = (int)Math.Ceiling(ppeDraw.Graphics.MeasureString(strTemp, m_font_st_10_Regular).Width);
            sfoDraw.Alignment = StringAlignment.Near;
            recDraw.Width = intTemp;
            m_intHeadHeight = (int)Math.Ceiling(m_font_st_10_Regular.GetHeight(ppeDraw.Graphics));
            recDraw.Height = m_intHeadHeight;
            recDraw.X = m_douPrintLeft;
            recDraw.Y = m_douPrintTop;
            ppeDraw.Graphics.DrawString(strTemp, m_font_st_10_Regular, m_sbrDraw, recDraw, sfoDraw);

            // 支付明细
            m_douPrintTop = m_douPrintTop + m_intHeadHeight;
            strTemp = "支付明细:";
            intTemp = (int)Math.Ceiling(ppeDraw.Graphics.MeasureString(strTemp, m_font_st_10_Regular).Width);
            sfoDraw.Alignment = StringAlignment.Near;
            recDraw.Width = intTemp;
            m_intHeadHeight = (int)Math.Ceiling(m_font_st_10_Regular.GetHeight(ppeDraw.Graphics));
            recDraw.Height = m_intHeadHeight;
            recDraw.X = m_douPrintLeft;
            recDraw.Y = m_douPrintTop;
            ppeDraw.Graphics.DrawString(strTemp, m_font_st_10_Regular, m_sbrDraw, recDraw, sfoDraw);

            string insuType = dataCode200.GetInsuType(_RegInfo.service);  // jklx.

            //医保备注:医保备注
            if (insuType == "10" || insuType == "60" || insuType == "40" || insuType == "84" || insuType == "85" || insuType == "86" || insuType == "87" || insuType == "88")
            {
                m_douPrintTop = m_douPrintTop + m_intHeadHeight;
                strTemp = "  " + _Bill_Register_KHRMYY.YbRemark(_RegInfo);
                intTemp = (int)Math.Ceiling(ppeDraw.Graphics.MeasureString(strTemp, m_font_st_10_Regular).Width);
                sfoDraw.Alignment = StringAlignment.Near;
                recDraw.Width = intTemp;
                m_intHeadHeight = (int)Math.Ceiling(m_font_st_10_Regular.GetHeight(ppeDraw.Graphics));
                recDraw.Height = m_intHeadHeight;
                recDraw.X = m_douPrintLeft;
                recDraw.Y = m_douPrintTop;
                ppeDraw.Graphics.DrawString(strTemp, m_font_st_10_Regular, m_sbrDraw, recDraw, sfoDraw);
            }

            //支付金额:支付金额
            //if (!string.IsNullOrEmpty(_RegInfo.Paidtype))
            //{
            m_douPrintTop = m_douPrintTop + m_intHeadHeight;
            strTemp = "  " + _Bill_Register_KHRMYY.ZfRemark(_RegInfo);// +"元";
            intTemp = (int)Math.Ceiling(ppeDraw.Graphics.MeasureString(strTemp, m_font_st_10_Regular).Width);
            sfoDraw.Alignment = StringAlignment.Near;
            recDraw.Width = intTemp;
            m_intHeadHeight = (int)Math.Ceiling(m_font_st_10_Regular.GetHeight(ppeDraw.Graphics));
            recDraw.Height = m_intHeadHeight;
            recDraw.X = m_douPrintLeft;
            recDraw.Y = m_douPrintTop;
            ppeDraw.Graphics.DrawString(strTemp, m_font_st_10_Regular, m_sbrDraw, recDraw, sfoDraw);
            //}

            //decimal insufee = 0;
            //decimal.TryParse(_RegInfo.InsuFee, out insufee);
            //医保支付:医保支付
            //if (!string.IsNullOrEmpty(_RegInfo.InsuFee) && insufee > 0)
            //{
            //m_douPrintTop = m_douPrintTop + m_intHeadHeight;
            //strTemp = "医保:" + _RegInfo.InsuFee + "元";
            //intTemp = (int)Math.Ceiling(ppeDraw.Graphics.MeasureString(strTemp, m_font_st_10_Regular).Width);
            //sfoDraw.Alignment = StringAlignment.Near;
            //recDraw.Width = intTemp;
            //m_intHeadHeight = (int)Math.Ceiling(m_font_st_10_Regular.GetHeight(ppeDraw.Graphics));
            //recDraw.Height = m_intHeadHeight;
            //recDraw.X = m_douPrintLeft;
            //recDraw.Y = m_douPrintTop;
            //ppeDraw.Graphics.DrawString(strTemp, m_font_st_10_Regular, m_sbrDraw, recDraw, sfoDraw);
            //}

            //结算流水号:结算流水号
            m_douPrintTop = m_douPrintTop + m_intHeadHeight;
            strTemp = "结算流水号:" + _RegInfo.fbid.ToString();
            intTemp = (int)Math.Ceiling(ppeDraw.Graphics.MeasureString(strTemp, m_font_st_10_Regular).Width);
            sfoDraw.Alignment = StringAlignment.Near;
            recDraw.Width = intTemp;
            m_intHeadHeight = (int)Math.Ceiling(m_font_st_10_Regular.GetHeight(ppeDraw.Graphics));
            recDraw.Height = m_intHeadHeight;
            recDraw.X = m_douPrintLeft;
            recDraw.Y = m_douPrintTop;
            ppeDraw.Graphics.DrawString(strTemp, m_font_st_10_Regular, m_sbrDraw, recDraw, sfoDraw);

            //终端号:终端号
            //m_douPrintTop = m_douPrintTop + m_intHeadHeight;
            //strTemp = "终端号:" + CommonInfo.localConfigs.MachineID;
            //intTemp = (int)Math.Ceiling(ppeDraw.Graphics.MeasureString(strTemp, m_font_st_10_Regular).Width);
            //sfoDraw.Alignment = StringAlignment.Near;
            //recDraw.Width = intTemp;
            //m_intHeadHeight = (int)Math.Ceiling(m_font_st_10_Regular.GetHeight(ppeDraw.Graphics));
            //recDraw.Height = m_intHeadHeight;
            //recDraw.X = m_douPrintLeft;
            //recDraw.Y = m_douPrintTop;
            //ppeDraw.Graphics.DrawString(strTemp, m_font_st_10_Regular, m_sbrDraw, recDraw, sfoDraw);

            //机器流水号:机器流水号
            //strTemp = "机器流水号:"+_regInfo.;
            //intTemp = (int)Math.Ceiling(ppeDraw.Graphics.MeasureString(strTemp, m_font_st_10_Regular).Width);
            //sfoDraw.Alignment = StringAlignment.Near;
            //recDraw.Width = intTemp;
            //m_intHeadHeight = (int)Math.Ceiling(m_font_st_10_Regular.GetHeight(ppeDraw.Graphics));
            recDraw.Height = m_intHeadHeight;
            //recDraw.X = m_douPrintLeft;
            //recDraw.Y = m_douPrintTop;
            //ppeDraw.Graphics.DrawString(strTemp, m_font_st_10_Regular, m_sbrDraw, recDraw, sfoDraw);

            //打印时间:打印时间
            m_douPrintTop = m_douPrintTop + m_intHeadHeight;
            strTemp = "打印时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            intTemp = (int)Math.Ceiling(ppeDraw.Graphics.MeasureString(strTemp, m_font_st_10_Regular).Width);
            sfoDraw.Alignment = StringAlignment.Near;
            recDraw.Width = intTemp;
            m_intHeadHeight = (int)Math.Ceiling(m_font_st_10_Regular.GetHeight(ppeDraw.Graphics));
            recDraw.Height = m_intHeadHeight;
            recDraw.X = m_douPrintLeft;
            recDraw.Y = m_douPrintTop;
            ppeDraw.Graphics.DrawString(strTemp, m_font_st_10_Regular, m_sbrDraw, recDraw, sfoDraw);

            //取药窗口
            //if (!string.IsNullOrEmpty(_RegInfo.PharmWindow))
            //{
            //    m_douPrintTop = m_douPrintTop + m_intHeadHeight;
            //    strTemp = _RegInfo.PharmWindow;
            //    intTemp = (int)Math.Ceiling(ppeDraw.Graphics.MeasureString(strTemp, m_font_st_10_Regular).Width);
            //    sfoDraw.Alignment = StringAlignment.Near;
            //    recDraw.Width = intTemp;
            //    m_intHeadHeight = (int)Math.Ceiling(m_font_st_10_Regular.GetHeight(ppeDraw.Graphics));
            //    recDraw.Height = m_intHeadHeight;
            //    recDraw.X = m_douPrintLeft;
            //    recDraw.Y = m_douPrintTop;
            //    ppeDraw.Graphics.DrawString(strTemp, m_font_st_10_Regular, m_sbrDraw, recDraw, sfoDraw);
            //}

            #region 发药窗口
            string Fyck = "";
            if (pdrugInfo != null)
            {
                foreach (PdrugNo dr in pdrugInfo)
                {
                    if (!string.IsNullOrEmpty(dr.state) && (dr.orderflag == "D" || dr.orderflag == "Y"))
                    {
                        Fyck = "请到西药窗口:";

                        Fyck += dr.pharmdept + dr.state;

                        Fyck += "取药";

                    }
                    else if (!string.IsNullOrEmpty(dr.state) && dr.orderflag == "Z")
                    {
                        Fyck = "请到中草药窗口:";

                        Fyck += dr.pharmdept + dr.state;

                        Fyck += "取药";
                    }
                }
                m_douPrintTop = m_douPrintTop + m_intHeadHeight;
                strTemp = Fyck;
                intTemp = (int)Math.Ceiling(ppeDraw.Graphics.MeasureString(strTemp, m_font_st_10_Regular).Width);
                sfoDraw.Alignment = StringAlignment.Near;
                recDraw.Width = intTemp;
                m_intHeadHeight = (int)Math.Ceiling(m_font_st_10_Regular.GetHeight(ppeDraw.Graphics));
                recDraw.Height = m_intHeadHeight;
                recDraw.X = m_douPrintLeft;
                recDraw.Y = m_douPrintTop;
                ppeDraw.Graphics.DrawString(strTemp, m_font_st_10_Regular, m_sbrDraw, recDraw, sfoDraw);
            }
            #endregion

            //备注
            m_douPrintTop = m_douPrintTop + m_intHeadHeight;
            strTemp = "如需发票,请凭此小票到窗口打印发票\r\n退费请到人工窗口办理";
            intTemp = (int)Math.Ceiling(ppeDraw.Graphics.MeasureString(strTemp, m_font_st_10_Regular).Width);
            sfoDraw.Alignment = StringAlignment.Near;
            recDraw.Width = intTemp;
            m_intHeadHeight = (int)Math.Ceiling(m_font_st_10_Regular.GetHeight(ppeDraw.Graphics)) * 2;
            recDraw.Height = m_intHeadHeight;
            recDraw.X = m_douPrintLeft;
            recDraw.Y = m_douPrintTop;
            ppeDraw.Graphics.DrawString(strTemp, m_font_st_10_Regular, m_sbrDraw, recDraw, sfoDraw);

            //if (SelfCommons.CommonInfo.GetHosConfig(HosConfig.建档是否申请电子健康卡) == "1")
            //{
            //    #region 二维码
            //    if (!string.IsNullOrEmpty(_RegInfo.Pcid))
            //    {
            //        HisGetStaticQr_OUT StaticQr_OUT = eCardB.GetStaticQr(SelfCommons.CommonInfo.GetHosConfig(HosConfig.电子健康卡地址).ToString(),
            //            _RegInfo.Pname, _RegInfo.Pcid, "A001");
            //        if (StaticQr_OUT != null)
            //        {
            //            m_douPrintTop = m_douPrintTop + m_intHeadHeight;
            //            Image i = Image.FromFile(StaticQr_OUT.qrcodeimage);
            //            Rectangle m = ppeDraw.MarginBounds;
            //            //if ((double)i.Width / (double)i.Height > (double)m.Width / (double)m.Height) // image is wider
            //            //{
            //            //    m.Height = (int)((double)i.Height / (double)i.Width * (double)m.Width) * 2 / 3;
            //            //}
            //            //else
            //            //{
            //            //    m.Width = (int)((double)i.Width / (double)i.Height * (double)m.Height) * 2 / 3;
            //            //}
            //            m.Height = 50;
            //            m.Width = 50;
            //            m.X = m_douPrintLeft;
            //            m.Y = m_douPrintTop;
            //            ppeDraw.Graphics.DrawImage(i, m);
            //        }
            //    }
            //    #endregion
            //}
        }


        private string GetItemtypeToSelf(string sItemtypeNum)
        {
            string sItemtype = "";

            switch (sItemtypeNum)
            {
                case "1": sItemtype = "诊疗项目"; break;
                case "2": sItemtype = "材料"; break;
                case "3": sItemtype = "西药"; break;
                case "4": sItemtype = "中成药"; break;
                case "5": sItemtype = "草药"; break;
            }
            return sItemtype;
        }

        private string SubStringStr(string str, int strLeng)
        {
            int i = 0;
            int n = 0;
            StringBuilder sb = new StringBuilder();

            foreach (char ch in str)
            {
                i += Encoding.Default.GetBytes(ch.ToString()).Length;

                if (i > strLeng)
                {
                    n = strLeng - (i - Encoding.Default.GetBytes(ch.ToString()).Length);
                    while (n > 0)
                    {
                        sb.Append(' ');
                        n--;
                    }
                    break;
                }
                else
                {
                    sb.Append(ch);
                }
            }

            if (i < strLeng)
            {
                while (i < strLeng)
                {
                    sb.Append(' ');

                    i++;
                }

                sb.Append(' ');
                sb.Append(' ');
                sb.Append(' ');
            }
            else
            {
                sb.Append('.');
                sb.Append('.');
                sb.Append('.');
            }

            return sb.ToString();
        }


    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值