GTK# - 打印:如何设置纸张大小

GTK# - printing: How to set the paper size

我正在使用 GTK# 打印一些文本,类似于您可以在此处找到的演示代码:

https://github.com/mono/gtk-sharp/blob/master/sample/GtkDemo/DemoPrinting.cs

文本打印正确,但我想要一个不同纸张尺寸的页面作为输出。

如何以编程方式设置纸张大小?

PrintOperation print = new PrintOperation();

print.BeginPrint += new BeginPrintHandler(OnBeginPrint);
print.DrawPage += new DrawPageHandler(OnDrawPage);
print.EndPrint += new EndPrintHandler(OnEndPrint);
print.Run(PrintOperationAction.Print, null);

编辑 我发现 PrintOperation class 有两个成员 DefaultPageSetupPrintSettings,其中包含一个 PaperSize,但是创建后这些对象为 null (new PrintOperation()) . 在 OnBeginPrint 时,这些值已经设置。

我终于知道如何设置自定义纸张尺寸了! 您必须设置 DefaultPageSetupPrintSettingsPrintOperation:

PrintSettings settings = new PrintSettings();
settings.PaperSize = new PaperSize("XXX", "XXX", 500, 5000);

PageSetup setup = new PageSetup();
setup.SetBottomMargin(0, Unit.Pixel);
setup.SetTopMargin(0, Unit.Pixel);
setup.SetLeftMargin(0, Unit.Pixel);
setup.SetRightMargin(0, Unit.Pixel);
setup.PaperSize = settings.PaperSize;

PrintOperation print = new PrintOperation();
print.DefaultPageSetup = setup;
print.PrintSettings = settings;

print.BeginPrint += new BeginPrintHandler(OnBeginPrint);
print.DrawPage += new DrawPageHandler(OnDrawPage);
print.EndPrint += new EndPrintHandler(OnEndPrint);
print.Run(PrintOperationAction.Print, null);