【问题标题】:Change Paper Size更改纸张尺寸
【发布时间】:2013-11-16 10:23:11
【问题描述】:

如何以 C# 编程方式更改打印对话框的纸张大小?

我想将纸张尺寸更改为用户定义的纸张尺寸,例如:10x12 是我的Paper Size

如果你能帮助我在水晶报表中打印纸张尺寸10x12,那就更好了。

请帮忙。

【问题讨论】:

    标签: c# winforms printing crystal-reports


    【解决方案1】:

    这里有两种改变纸张尺寸的方法。请记住,打印机必须能够处理您指定的纸张尺寸!

    我们可以使用 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);
    

    【讨论】:

      【解决方案2】:

      请参阅此页面以获得答案:

      Answer for Paper Size

      【讨论】:

        【解决方案3】:

        试试这个代码:

        CRAXDRT.Report report1 = new CRAXDRT.Report();
        CRAXDRT.Application app1 = new CRAXDRT.Application();
        report1 = app1.OpenReport(@"F:\YourReport.rpt", OpenReportMethod.OpenReportByDefault);
        report1.PaperSize = CRPaperSize.crPaper10x14;
        

        【讨论】:

        • 我知道将纸张尺寸设置为预定义的纸张尺寸我想将其设置为用户定义的纸张尺寸帮助我
        猜你喜欢
        • 2015-07-01
        • 2010-10-15
        • 1970-01-01
        • 1970-01-01
        • 2016-05-01
        • 2017-12-11
        • 2012-07-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多