zoukankan      html  css  js  c++  java
  • C#下水晶报表打印自定义纸张

    在VB6中,如果要自定义纸张很方便:
      Rpt.PaperSize = crPaperUser
      Rpt.SetUserPaperSize lZZG, lZZK

    但在C#中却不行了,没有发现 SetUserPaperSize。现在同事的问题是预览时很正常显示中一刀,但点击自带的工具栏打印时,就是 Letter 纸。

    本想用 Reflector 跟踪出是否有哪个地方可以利用的,没有结果。
    再找网络上的说法,终于在
    http://www.cnblogs.com/zeroone/p/3306172.html
    中看到关键一行
    rptDoc.PrintToPrinter(1, true, 0, 0);

    它有一行:PrinterSettings printerSettings = document.PrinterSettings;
    而系统自带的工具栏打印时,则是
        PrinterSettings settings = new PrinterSettings();

    CrystalDecisions.Windows.Forms.CrystalReportViewer
    public virtual void PrintReport()
    {
        this.pageView.PrintReport();
    }

    CrystalDecisions.Windows.Forms.PageView
    public virtual void PrintReport()
    {
        ReportDocumentBase activeDocument = this.GetActiveDocument();
        if (activeDocument != null)
        {
            activeDocument.Print();
        }
    }

    CrystalDecisions.Windows.Forms.ReportDocumentBase
    public void Print()
    {
    }
    想代替,但里面的代码引用了较多私有方法(如:GetLastPageNumber)

    如果能重写 PrinterSettings 将是无比兴奋。
    但是,没有成功

    namespace CrystalDecisions.Windows.Forms
    {
        class PrinterSettings : System.Drawing.Printing.PrinterSettings
        {
            public PrinterSettings()
                : base()
            {
    // 它是只读的,另一个对应变量又是私有的
                this.DefaultPageSettings = new PageSettings(this);
            }
        }

        class PageSettings:System.Drawing.Printing.PageSettings
        {
            public PageSettings(System.Drawing.Printing.PrinterSettings printerSettings):base(printerSettings)
            {
                base.PaperSize = new System.Drawing.Printing.PaperSize("Temp", 100, 100);
            }
        }
    }

  • 相关阅读:
    GRIDVIEW导出到EXCEL
    数据表示:字节 高位低位
    js学习笔记0
    12奇招,循序删除顽固的文件
    加快开关机速度
    PHP正则表达式的快速学习
    firefox下height不能自动撑开的解决办法
    给MySQL加密(也适用于Wamp5中)
    我的电脑创建资源管理器
    css 圆角7种CSS圆角框解决方案
  • 原文地址:https://www.cnblogs.com/yzx99/p/3365677.html
Copyright © 2011-2022 走看看