【发布时间】:2013-11-16 10:23:11
【问题描述】:
如何以 C# 编程方式更改打印对话框的纸张大小?
我想将纸张尺寸更改为用户定义的纸张尺寸,例如:10x12 是我的Paper Size。
如果你能帮助我在水晶报表中打印纸张尺寸10x12,那就更好了。
请帮忙。
【问题讨论】:
标签: c# winforms printing crystal-reports
如何以 C# 编程方式更改打印对话框的纸张大小?
我想将纸张尺寸更改为用户定义的纸张尺寸,例如:10x12 是我的Paper Size。
如果你能帮助我在水晶报表中打印纸张尺寸10x12,那就更好了。
请帮忙。
【问题讨论】:
标签: c# winforms printing crystal-reports
这里有两种改变纸张尺寸的方法。请记住,打印机必须能够处理您指定的纸张尺寸!
我们可以使用 PrintOptions 类来设置打印选项。我们应该得到 PrintOptions 与报告,这样我们只需要设置我们正在更改的属性。
PrintOptions boPrintOptions = boReportClientDocument.PrintOutputController.GetPrintOptions();
boPrintOptions.DissociatePageSizeAndPrinterPaperSize = false;
boPrintOptions.DriverName = "my printer driver name";
boPrintOptions.PageContentHeight = 11;
boPrintOptions.PageContentWidth = 8;
PageMargins boPageMargins = new PageMargins();
boPageMargins.Bottom = 1;
boPageMargins.Top = 1;
boPageMargins.Left = 1;
boPageMargins.Right = 1;
boPrintOptions.PageMargins = boPageMargins;
boPrintOptions.PaperOrientation = CrPaperOrientationEnum.crPaperOrientationDefault;
boPrintOptions.PaperSize = CrPaperSizeEnum.crPaperSizeDefault;
boPrintOptions.PaperSource = CrPaperSourceEnum.crPaperSourceAuto;
boPrintOptions.PortName = "";
boPrintOptions.PrinterDuplex = CrPrinterDuplexEnum.crPrinterDuplexDefault;
boPrintOptions.PrinterName = @"\\van-s-prt01\VAN-P-OLYMPIA";
一旦我们设置了我们想要的 PrintOptions,我们需要使用 modify 方法来应用这些设置。这些值没有经过验证,因此我们在尝试打印时可能会抛出异常。
boReportClientDocument.PrintOutputController.ModifyPrintOptions(boPrintOptions);
我们更改打印选项的另一个选项是使用可用的修改方法。这些更好用,因为我们不必获取之前的值,设置我们想要的值然后使用之前的修改方法,我们可以直接设置我们想要更改的属性。这些测量值以缇为单位。每英寸 1440 缇。使用下面的 Modify 方法时,这些值是经过验证的,如果该值不可接受,或者新的打印机名称不可用,则会引发异常。此行将纸张尺寸设置为 11 英寸高、8 英寸宽:
boReportClientDocument.PrintOutputController.ModifyUserPaperSize((11 * 1440), (8 * 1440));
boReportClientDocument.PrintOutputController.ModifyPageMargins(1, 1, 1, 1);
boReportClientDocument.PrintOutputController.ModifyPaperOrientation(CrPaperOrientationEnum.crPaperOrientationLandscape);
boReportClientDocument.PrintOutputController.ModifyPrinterName(@"\\van-s-prt01\VAN-P-OLYMPIA");
//Print the report.
boReportClientDocument.PrintOutputController.PrintReport(null);
【讨论】:
请参阅此页面以获得答案:
【讨论】:
试试这个代码:
CRAXDRT.Report report1 = new CRAXDRT.Report();
CRAXDRT.Application app1 = new CRAXDRT.Application();
report1 = app1.OpenReport(@"F:\YourReport.rpt", OpenReportMethod.OpenReportByDefault);
report1.PaperSize = CRPaperSize.crPaper10x14;
【讨论】: