C# 印刷類

來源:互聯網
上載者:User
         最近一個新的項目中,有一個要求,就是把資料列印出來。經過調查,寫了一個類。
主要應用了 System.Drawing
Pint為主要方法 參數是將要列印的結果。 public void Print(CmDCardPrintData argDcardData)
        {
            Thread.CurrentThread.CurrentCulture =
                CultureInfo.CreateSpecificCulture("en-US");

            printData = argDcardData;

            bool isToBitmap = Boolean.Parse(reportSettings["print.toBitmap"]);
            string bitmapSaveDir = reportSettings["print.bitmapSaveDir"];

            string printerName = reportSettings["print.printerName"];

            mCode39Format = reportSettings["print.CODE39.Format"];

            leftMargin = Int32.Parse(reportSettings["print.leftMargin"]);
            topMargin = Int32.Parse(reportSettings["print.topMargin"]);

            if (isToBitmap)
            {
                for debug. print to bitmap image.#region for debug. print to bitmap image.
                // for debug. print to bitmap image.
                Bitmap bitmap = new Bitmap(1024, 768);
                Graphics g = Graphics.FromImage(bitmap);
                g.FillRectangle(Brushes.White, 0, 0, 1024, 768);

                PrintData(g, leftMargin, topMargin);

                string path = String.Format(bitmapSaveDir, CmStringUtils.GetSysDateString());

                CmFileUtils.EnsureDirectory(path);

                bitmap.Save(path);
                #endregion
            }
            else
            {
                print to printer#region print to printer
                // print to printer
                PrintDocument pd = new PrintDocument();

                if (!CmStringUtils.IsEmpty(printerName))
                {
                    pd.PrinterSettings.PrinterName = printerName;
                }

                Margins margins = new Margins(leftMargin, leftMargin, topMargin, topMargin);
                pd.DefaultPageSettings.Margins = margins;


                pd.DefaultPageSettings.Landscape = true;

                pd.PrintPage += new PrintPageEventHandler
                   (this.Pd_PrintPage);

                try
                {
                    // Print to printer.
                    pd.Print();
                }
                catch (Exception ex)
                {
                    // if any error occurred.
                    CmLogger.Log(ex);
                    throw new CmLogicException("SE00027", ex);
                }
                #endregion
            }

        }

 private void Pd_PrintPage(object sender, PrintPageEventArgs ev)
        {

            PrintData(ev.Graphics, ev.MarginBounds.Left, ev.MarginBounds.Top);

            ev.HasMorePages = false;
        }

 private void DrawText(Graphics g, string curField,string text)
        {
            g.TranslateTransform(leftMargin + fieldInfos[curField].Left, topMargin + fieldInfos[curField].Top);
            g.ScaleTransform(1.0F, fieldInfos[curField].VerticalRatio);

            g.DrawString(text,
               fieldInfos[curField].Font, Brushes.Black,
                0, 0);

            // reset matrix 
            g.ResetTransform();
        }

列印的結果圖:

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.