在使用带有边距的PrintDocument时遇到问题。

不管我做什么,在我打印的所有内容周围总会有空白,这意味着没有东西需要对齐。

这是我用来创建PrintDocument的代码

public void Print()
{
   PrintDocument printDocument = new PrintDocument();
        printDocument.DefaultPageSettings.PaperSize = new PaperSize("A5",583,827);
        printDocument.OriginAtMargins = true;
        printDocument.DefaultPageSettings.Margins.Top = 0;
        printDocument.DefaultPageSettings.Margins.Left = 0;
        printDocument.DefaultPageSettings.Margins.Right = 0;
        printDocument.DefaultPageSettings.Margins.Bottom = 0;

        if (!string.IsNullOrWhiteSpace(PrinterName))
        {
            printDocument.PrinterSettings.PrinterName = PrinterName;
        }

        printDocument.PrintController = new StandardPrintController();
        printDocument.PrintPage += On_PrintPage;
        printDocument.Print();
}
On_PrintPage方法具有对e.Graphics.Draw...方法的各种调用。

我该如何做,以使我在0,0处打印的内容会打印在页面的左上角。我知道,如果打印机无法打印到页面边缘那么远,它将为空白,但是应该这样做,而不是打印不在页面左上角的0,0。

我真的迷路了

最佳答案

有趣的是,打印功能为时已晚,无法设置大多数属性,并且仅适用于后续页面

您需要改用PrintDocument.QueryPageSettings事件并在那里设置属性,而我总是设置页面设​​置而不仅仅是默认设置。然后在0,0处绘制应尽可能接近(打印机+驱动程序允许)

关于c# - PrintDocument总是有边距,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21384625/

10-09 21:52