VS2005下PULL模式水晶报表导出到PDF,客户端点击打印按钮,直接重定向到生成的PDF文档,下载打印。 这一段导出到pdf的程序,是用了很长时间的,没有出现过问题,具体代码如下: public void PullModulePrint() { CrystalDecisions.CrystalReports.Engine.ReportDocument rptDoc = new ReportDocument(); rptDoc.Load(this.Server.MapPath("myTest.rpt")); rptDoc.SetDatabaseLogon("User", "Pwd", "DBServer", "DBName"); rptDoc.SetParameterValue("Parameter", [parameterValue]); CrystalDecisions.Shared.DiskFileDestinationOptions objFile = new DiskFileDestinationOptions(); objFile.DiskFileName = this.Server.MapPath("myTest.pdf"); rptDoc.ExportOptions.ExportDestinationType = ExportDestinationType.DiskFile; rptDoc.ExportOptions.DestinationOptions = objFile; rptDoc.ExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat; rptDoc.Export(); Response.ClearContent(); Response.ClearHeaders(); Response.ContentType = "application/pdf"; Response.WriteFile(objFile.DiskFileName); Response.Flush(); Response.Close(); }
但是,最近碰到一个问题,我的水晶报表定义成A4横向打印,不知为何,导出的PDF总是A4纵向,导致报表显示不全。一开始,我以为是服务器端没有装打印程序的问题,我在服务器上安装了相关打印机的驱动,在水晶报表设计中选择了该打印机,同时选择A4横向。结果,导出的PDF依然纵向。 查询了相关技术文章,在rptDoc.SetDataSource(dt);语句后面添加了两行代码: rptDoc.PrintOptions.PaperSize=PaperSize.PaperA4; rptDoc.PrintOptions.PaperOrientation=PaperOrientation.Landscape; 意即在报表文件加载了数据后,设定报表为A4横向。测试导出到文件没有问题了。 这说明,水晶报表导出PDF默认的纸张格式是A4纵向,如果非此纸型的导出,需要在报表文件加载后,用语句特别描述具体的纸型,这样导出的文件才能正常。 其他的导出格式,我没有另行尝试,如果有朋友有兴趣,可以跟帖发一下尝试结果。