C#打印字符串內容,例如打印Textbox內容


    /// <summary>
    /// 打印txt文檔
    /// </summary>
    class PrintTxt
    {
        System.Drawing.Printing.PrintDocument printDocument = new System.Drawing.Printing.PrintDocument();

        int linesText = 0;//內容行數
        int linesPerPage = 0;//一頁的行數
        int currentPage = 0;//當前頁
        int pageCount = 0;//多少頁
        string[] lines;//存儲內容
        int icount = 0;//行數
        string textString = "";
        public PrintTxt(string txt)
        {
            textString = txt;//給內容進行賦值
            printDocument.PrintPage += PrintDocument_PrintPage;
            printDocument.BeginPrint += PrintDocument_BeginPrint;
        }
        private void PrintDocument_BeginPrint(object sender, System.Drawing.Printing.PrintEventArgs e)
        {
            StringReader s1 = new StringReader(textString);
            string s = s1.ReadToEnd();
            lines = s.Split(new string[] { "\n" }, StringSplitOptions.None);
        }

        private void PrintDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            System.Drawing.Graphics g = e.Graphics; //獲得繪圖對象
            float yPosition = 0; //繪制字符串的縱向位置
            float xPosition = 0;
            float leftMargin = e.MarginBounds.Left; //左邊距
            float topMargin = e.MarginBounds.Top; //上邊距
            linesText = lines.Count();
            System.Drawing.Font printFont = new System.Drawing.Font("宋體", 10); //當前的打印字體
            System.Drawing.SolidBrush myBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Black);//刷子
            linesPerPage = (int)(e.MarginBounds.Height / printFont.GetHeight(g));//每頁可打印的行數
            pageCount = linesText % linesPerPage == 0 ? (linesText / linesPerPage) : (linesText / linesPerPage + 1);

            for (int i = 0; i < linesPerPage; i++)
            {
                yPosition = topMargin + (i * printFont.GetHeight(g)) - 30;
                xPosition = leftMargin + (printFont.GetHeight(g)) + 5;
                if (icount == linesText)
                {
                    return;
                }
                g.DrawString(lines[icount], printFont, myBrush, xPosition, yPosition, new System.Drawing.StringFormat());
                icount++;
            }
            currentPage++;

            if (currentPage < pageCount)
            {
                e.HasMorePages = true;
            }
            else
            {
                e.HasMorePages = false;
            }
        }

        public void StartPrintTxt()
        {
            printDocument.Print();
        }
    }

打印的過程大致就是將Textbox里的內容獲取行數,然后計算一頁打印多少行,然后總共打印多少頁


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM