打印机打印切割字符串

时间:2018-11-20 05:10:18

标签: c# printing

我正在使用以下代码从富文本框中打印字符串的集合:

private void printBtn_Click(object sender, EventArgs e)
    {
        PrintDocument p = new PrintDocument();
        p.OriginAtMargins = true;
        Margins pMargins = new Margins(100, 100, 100, 100);
        p.DefaultPageSettings.Margins = pMargins;

        p.PrintPage += delegate (object sender1, PrintPageEventArgs e1)
        {
            e1.Graphics.DrawString(summaryBox.Text, new Font("Times New Roman", 12), new SolidBrush(Color.Black), new RectangleF(0, 0, p.DefaultPageSettings.PrintableArea.Width, p.DefaultPageSettings.PrintableArea.Height));
        };
        try
        {
            p.Print();
            this.Close();
        }
        catch (Exception ex)
        {
            throw new Exception("Error During Printing", ex);
        }
    }

但是,长字符串会被切断并且不会自动消失。字符串在右侧截断,并且在第一页填充后,不会打印第二页,并且仅忽略剩余的内容。打印机设置或富文本框或两者都有问题吗?如果内容太长,如何确定长字符串换行并打印第二页或第三页?

1 个答案:

答案 0 :(得分:1)

您需要使用PrintPageEventArgs.MarginBounds来获取打印页面中的可打印区域。

现在,您的e1是类型PrintPageEventArgs的参数。并且您将获得MarginBounds之类的e1.MarginBounds

这样您的代码就可以了。

p.PrintPage += delegate (object sender1, PrintPageEventArgs e1)
{
    e1.Graphics.DrawString(summaryBox.Text, new Font("Times New Roman", 12), new SolidBrush(Color.Black), new RectangleF(0, 0, e1.MarginBounds.Width, e1.MarginBounds.Height));
};