如何在水晶报表打印的时候,代码修改打印机默认纸张?
     声明:本贴在图表区首发,图表区太冷,故在此重发,加50分,两贴150分,混合给分。
http://topic.csdn.net/u/20080131/13/835e5317-e469-48eb-ab0d-d87ac458667e.html
问题困扰多日亟待解决。
水晶报表打印特殊规格的纸张(自定义纸张,单据),不论是通过CrystalReportViewer打印,还是用报表的PrintToPrinter(1,   true,   1,   1)方法打印,打印时的纸张都是按系统打印机的“打印首选项-高级-纸张/输出-纸张规格”所设置的纸张规格打印的,尽管我设置报表的rpt.PrintOptions.PaperSize   =   DirectCast(pszPagerSize.RawKind,   PaperSize),打印也会按“打印首选项-高级-纸张/输出-纸张规格”处设置的纸张打印。 
如何,在水晶报表打印时,用代码设置“打印首选项-高级-纸张/输出-纸张规格”,为我指定的纸张? 
问题要求是,系统打印机的“打印首选项-高级-纸张/输出-纸张规格”纸张设置是A4(默认),在水晶报表打印时通过代码控制使打印能够按我指定的特殊规格的纸张打印,打印结束后需要保证依然是系统的“打印首选项-高级-纸张/输出-纸张规格”纸张设置还是A4 
代码示例: 
            系统是“打印首选项-高级-纸张/输出-纸张规格”纸张设置是A4 
            下面的pszPagerSize是一个特殊规格的纸张,它的正确性毋庸置疑,有个Function实现它的获得,这里为了简便可以换成其他的纸张,比如A3。 
            下面的代码打印完成是按A4   打印的,问题是如何代码控制按pszPagerSize(A3)打印 
                
              Dim   pszPagerSize   As   New   System.Drawing.Printing.PaperSize 
            Dim   rpt   As   New   MyCrystalReport1 
            rpt.PrintOptions.PrinterName   =   document.PrinterSettings.PrinterName 
            ‘此处可以换成其他类型纸张,比如A3 
            rpt.PrintOptions.PaperSize   =   DirectCast(pszPagerSize.RawKind,   PaperSize) 
            rpt.PrintToPrinter(1,   True,   1,   1) 
其实我的目的非常简单,就是想保留打印默认常用纸张设置(打印首选项-高级-纸张/输出-纸张规格),在打印单据时不需要在去通过PrintDialog等方式人为手动去选择改变打印机特殊单据纸张,打印单据时,代码控制自动按特殊单据纸张打印,不影响系统打印机设置。 
我的打印机是针式打印,有多种型号,主要是Epson   LQ670K、LQ670K+、LQ680K。 
我用的是CrystalReports   for   VS.Net   2005