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);
            }
        }
    }

  • 相关阅读:
    源码篇——安卓启动流程
    Android源代码结构分析
    使用Contacts Contract Content Provider操作通讯录最佳实践
    Linux输入子系统 : 按键驱动
    运算类实现 及 GNU Makefile基本结构
    输入系统:epoll & inotify
    FFmpeg:初步编译使用[Android]
    Linux学习 :SPI通讯协议
    Linux学习 : 自己写bootloader
    Linux学习 :移植U-boot_2012.04.01到JZ2440开发板
  • 原文地址:https://www.cnblogs.com/yzx99/p/3365677.html
Copyright © 2011-2022 走看看