PrintDocument 总是有边距

Nic*_*ams 6 c# printing gdi+ printdocument

使用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();
}
Run Code Online (Sandbox Code Playgroud)

On_PrintPage方法具有对e.Graphics.Draw...方法的各种调用。

我怎样才能让我在 0,0 打印的东西打印在页面的左上角。我知道如果打印机无法打印到页面边缘那么远,它将是空白的,但是它应该这样做而不是在页面左上角打印 0,0。

我真的迷路了

小智 2

有趣的是,打印功能来不及设置大部分属性,并且仅适用于后续页面

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