将富文本框的文本拟合到打印页面c#

时间:2014-01-27 15:07:49

标签: c# printing richtextbox

我是C#的新手,我正在尝试将richTextBox的文本打印到大小为58x297的页面中,但文本始终从页面中间开始。我检查了打印机属性,但我找不到任何错误。我的目标是在页面的最左侧和顶部打印富文本框的文本。我认为问题是初始间距因为我的页面大小是58x297间距是A4页面正常但不适合我的。 这是我努力工作的一项工作

private void button1_Click(object sender, EventArgs e)
{
    PrintDialog printDialog = new PrintDialog();
    PrintDocument documentToPrint = new PrintDocument();
    printDialog.Document = documentToPrint;

    if (printDialog.ShowDialog() == DialogResult.OK)
    {
        StringReader reader = new StringReader(richTextBox1.Text);
        documentToPrint.OriginAtMargins = false;
        documentToPrint.PrintPage += new PrintPageEventHandler(Document_Print);
        documentToPrint.Print();
    }
}

private void Document_Print(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
    StringReader reader = new StringReader(richTextBox1.Text);
    float LinesPerPage = 0;
    float YPosition = 0;
    int Count = 0;

    float LeftMargin = e.MarginBounds.Left;
    float TopMargin = e.MarginBounds.Top;
    string Line = null;
    Font PrintFont = this.richTextBox1.Font;
    SolidBrush PrintBrush = new SolidBrush(Color.Black);

    LinesPerPage = e.MarginBounds.Height / PrintFont.GetHeight(e.Graphics);

    while (Count < LinesPerPage && ((Line = reader.ReadLine()) != null))
    {
        YPosition = LeftMargin + (Count * PrintFont.GetHeight(e.Graphics));
        e.Graphics.DrawString(Line, PrintFont, PrintBrush, LeftMargin, YPosition, new StringFormat());
        Count++;
    }

    if (Line != null)
    {
        e.HasMorePages = true;
    }
    else
    {
        e.HasMorePages = false;
    }

PrintBrush.Dispose();

}

如果您对此有任何想法,那肯定会很棒。非常感谢...

0 个答案:

没有答案