声明:本贴在图表区首发,图表区太冷,故在此重发,加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
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
解决方案 »
- C# sockets 设置端口重用
- C#中类,结构体,方法的区别和联系
- 给派出所做个报警系统,有没什么免费的地图可以调用?
- C#中导出Excel报表时.如何设置页眉或页脚的字体?
- Winform 中datagrid 的列怎样实现自动计算,计算的结果列也可以进行修改成任意数值 (高分)
- c#winform 怎么设置SESSION
- winform程序中如何显示HTML格式化后的文本,而不是html源代码
- 关于绑定代码转换的问题
- 安装程序的CustomActionData属性设置
- 重写一个抽象类的抽象方法 和 实现一个接口有什么区别?
- directshow 增加声音强度
- ListView 第一行标题栏的字体大小和行高怎样设置呢?
...
string reportPath = Application.StartupPath; ReportDocument doc = new ReportDocument();
doc.PrintOptions.PrinterName = "TOSHIBA e-STUDIO282Series PCL6"; switch (CmbStyle.Text)
{
case "通用合格证":
reportPath += @"\CrystalReport\Report\CrystalGenericCertify.rpt"; //获取报表路径
P_Str_cmdtxt = "select * from ( select * from tb_CheckPrd " + wheresql + " ) a inner join tb_PrdDrawing on a.PrdModel = tb_PrdDrawing.PrdModel";
P_ds = baseinfo.GetPrdCertDataSet(P_Str_cmdtxt);
doc.Load(reportPath);
doc.SetDataSource(P_ds.Tables[0].DefaultView);
this.crystalReportViewerPrd.ReportSource = doc;
crystalReportViewerPrd.DisplayGroupTree = false;
doc.PrintOptions.PaperSize = CrystalDecisions.Shared.PaperSize.PaperA3; //假设为A3纸张,打印机默认为A4。
doc.PrintToPrinter(1, false, 0, 0);
break;
....
程序从A3直接打印,此时默认纸张仍是A4.