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 有两个成员 DefaultPageSetup
和 PrintSettings
,其中包含一个 PaperSize,但是创建后这些对象为 null (new PrintOperation()
) .
在 OnBeginPrint
时,这些值已经设置。
我终于知道如何设置自定义纸张尺寸了!
您必须设置 DefaultPageSetup
和 PrintSettings
的 PrintOperation
:
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);
我正在使用 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 有两个成员 DefaultPageSetup
和 PrintSettings
,其中包含一个 PaperSize,但是创建后这些对象为 null (new PrintOperation()
) .
在 OnBeginPrint
时,这些值已经设置。
我终于知道如何设置自定义纸张尺寸了!
您必须设置 DefaultPageSetup
和 PrintSettings
的 PrintOperation
:
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);