找回密码
 立即注册

QQ登录

只需一步,快速开始

村东智叟
初级会员   /  发表于:2021-8-23 14:43:31
10#
Crystal.Li 发表于 2021-8-23 14:37
嗯,技术上实现应该比较复杂,因为A4纸和A5纸宽高都不一致,所以当你从A4纸上设计的报表元素要打印在A5值, ...

感谢您的回复。
不好意思,是我没有描述清楚。
在A4的情况下是纵向打印的,在A5的情况下,是横向打印的。
A4是210*297。A5是210*148。
实际打印的时候只有高度不一样,宽度是一样的。
您看这样的话是不是容易实现一点。
我自己测试的bug是,即使将打印的用纸设定为了A5。实际打印的时候还A4
回复 使用道具 举报
村东智叟
初级会员   /  发表于:2021-8-23 14:53:36
11#
Crystal.Li 发表于 2021-8-23 14:37
嗯,技术上实现应该比较复杂,因为A4纸和A5纸宽高都不一致,所以当你从A4纸上设计的报表元素要打印在A5值, ...

接上一条回复。
现在实际的问题是,在只打客户联或是留存联时候。即使设置了A5 横的纸张样式,打印的时候还是A4纵的纸张样式并且还会出现打印出多张纸的bug。
回复 使用道具 举报
Crystal.Li讲师达人认证 悬赏达人认证
论坛元老   /  发表于:2021-8-23 15:09:14
12#
村东智叟 发表于 2021-8-23 14:43
感谢您的回复。
不好意思,是我没有描述清楚。
在A4的情况下是纵向打印的,在A5的情况下,是横向打印的 ...

您好,打印机是不是只有A4纸呢~
回复 使用道具 举报
村东智叟
初级会员   /  发表于:2021-8-23 15:14:22
13#
Crystal.Li 发表于 2021-8-23 15:09
您好,打印机是不是只有A4纸呢~

A4和A5的纸都有的,可以设置切换的。
这是要新增的功能,是为了对应不同的客户的需求。
回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2021-8-23 15:32:27
14#
您好

您使用的是区域报表还是RDL/页面报表? 如果报表纸张在打印前修改为A5纸,而打印的时候仍然打在了A4纸,您需要排查下,您的打印机默认纸张选项是否为A4?
理论上讲,如果报表设置A5纸张成功,且打印机默认纸为A5纸张,会直接打印到A5纸的。

另外您具体是怎么更换报表纸张的,能否提供代码截图,我们判断下是否设置成功。
回复 使用道具 举报
村东智叟
初级会员   /  发表于:2021-8-23 15:42:05
15#
Lenka.Guo 发表于 2021-8-23 15:32
您好

您使用的是区域报表还是RDL/页面报表? 如果报表纸张在打印前修改为A5纸,而打印的时候仍然打在了A ...

感谢回复。
您好,使用的是 页面报表。
关于实际的打印测试,并不是使用的实际打印机,使用的是CubePDF打印机。

测试的时候是使用的如下代码:
var rpt = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo("PageReport1.rdlx"));
var doc = new GrapeCity.ActiveReports.Document.PageDocument(rpt);
doc.Printer.PaperKind = System.Drawing.Printing.PaperKind.A5;
doc.Printer.Landscape = true;
doc.Print();
回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2021-8-23 17:27:30
16#
您好

如果您使用页面报表的话,页面报表是不包含 printer方法的,只有区域报表有该方法,如果要修改页面报表的纸张宽度和高度,可以采用代码:

  1.     private void viewer1_Load(object sender, EventArgs e)
  2.         {
  3.             GrapeCity.ActiveReports.PageReport rpt = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo("PageReport1.rdlx"));
  4.          
  5.             GrapeCity.ActiveReports.Document.PageDocument rptd = new GrapeCity.ActiveReports.Document.PageDocument(rpt);
  6.             rptd.PageReport.Report.PageWidth = "5cm";
  7.             rptd.PageReport.Report.PageHeight = "3cm";
  8.             this.viewer1.LoadDocument(rptd);

  9.         }
复制代码



回复 使用道具 举报
村东智叟
初级会员   /  发表于:2021-8-23 17:40:39
17#
Lenka.Guo 发表于 2021-8-23 17:27
您好

如果您使用页面报表的话,页面报表是不包含 printer方法的,只有区域报表有该方法,如果要修改页面 ...

感谢回复,
我先按照您提供的方法进行验证,验证完毕后告诉您结果。
回复 使用道具 举报
村东智叟
初级会员   /  发表于:2021-8-23 17:43:44
18#
Lenka.Guo 发表于 2021-8-23 17:27
您好

如果您使用页面报表的话,页面报表是不包含 printer方法的,只有区域报表有该方法,如果要修改页面 ...

不好意思,之前提供的print()方法错了
调用的是public static bool Print(this PageDocument pageDocument, bool showPrintDialog, bool showPrintProgressDialog, bool usePrintingThread);
这个print方法。您说的没有这个方法我不是很理解,因为我调用的时候没有出现错误提示
回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2021-8-23 17:52:03
19#
是的,页面报表是没有这个类的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部