C#下水晶报表打印自定义纸张

在VB6中,若是要自定义纸张很方便:
  Rpt.PaperSize = crPaperUser
  Rpt.SetUserPaperSize lZZG, lZZKhtml

但在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();this

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

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

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

若是能重写 PrinterSettings 将是无比兴奋。
可是,没有成功blog

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

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

相关文章
相关标签/搜索