日期:2014-05-20  浏览次数:20907 次

水晶报表横向打印
我要打的表格是21cm*14cm的,差不多a4纸张的一半,需要用滚动进纸的针式打印机打印。

我把rpt的页面设置成a5的纸,“里面自动设置成了横向”

但是我的进纸方向是沿着14cm的边进纸的(也就是a4纸的长的一边进纸),打印的时候不管我把打印机设置成横向还是竖向,打印出来的都是表格沿着14cm的方向的(就是和要求的垂直了)

但是又不能设置成a4的纸,那样就会导致打一页空一页的现象了


我发现报表预览的时候是正确的,然后导出到pdf打印又是没问题的,就是在直接打印的时候,打印机直接是竖向打印,不管你设了横向还是竖向。

如果有什么想法,请告诉我

打印机换了好几台,而且pdf打印没问题
------解决方案--------------------
如何上传图片
------解决方案--------------------
LZ在吗?我想确认下LZ的问题 是不是在报表里设置了横向打印,但打出来仍然是竖的?我以前遇到过这个问题,如果真是这样的话,我把我之前的解决方法帖出来,不过我的是VS2005,不知道VS2008有没有这个问题
水晶报表设计器中设置为横向打印的时候,出来的打印出口中默认选项仍未纵向,遍寻网络无果,只有人说是水晶报表的Bug,只好自己想办法。使用Reflector反编译crystal report后,在CrystalDecisions.Web.ViewerToolbar中发现了如下代码:
    if (info1 != null)
                {
                    builder1.Append("prm.paperorientation = \"");
                    builder1.Append((int) info1.Orientation);
                    builder1.Append("\";\r\nprm.papersize = \"");
                    builder1.Append((int) info1.PaperSize);
                    builder1.Append("\";\r\nprm.drivername = \"");
                    builder1.Append(info1.DriverName);
                    builder1.Append("\";\r\nprm.usedefprinter = \"");
                    builder1.Append(info1.UseDefaultPrinter ? "1" : "0");
                    builder1.Append("\";\r\nprm.usedefprintersettings = \"");
                    builder1.Append(info1.UseDefaultPrinterSettings ? "1" : "0");
                    builder1.Append("\";\r\n");
                } 
而在aspnet_client\system_web\2_0_50727\CrystalReportWebFormViewer3\html\crystalprinthost.html中有以下代码

if (window.dialogArguments.pageorientation) {
    objectTag +="<PARAM NAME=\"PageOrientation\" VALUE=\"";
    objectTag += window.dialogArguments.pageorientation;
    objectTag += "\">";
}

显然会发现标红粗体部分上下不一致,所以导致即便在页面设置了为横向打印,出来依然是默认选项,将html中的pageorientation修改为paperorientation就OK了。注意上边html代码中的第二行正确,不需要修改。

Html文件路徑為:Inetpub\wwwroot\aspnet_client\system_web\2_0_50727\CrystalReportWebFormViewer3\html\crystalprinthost.html