C#直接打印RDLC报表问题

时间:2022-07-10 08:31:55
在网上知道到用代码直接打印RDLC报表的例子。也可以打印了,但是遇到点问题。
实现方式是通过将RDLC本地报表转化成Stream流,再将流转化成图片,我这用到的是Metafile对象。通过打印Metafile对象来实现直接用代码打印RDLC报表。
出现的问题如下。
原报表格式加入为:1  2   3   4   5   6   7  8

打印效果为 第一页:1  2  3  4  5
第二页 6  7  8
会出现打印2页的效果
代码如下,通过本地报表的方法。
//处理报表,并使用回调函数提供的流以指定的格式呈现报表
localReport.Render("Image", CreateDeviceInfo(), CreateStream, out warnings);

 private string CreateDeviceInfo()
        {
            StringBuilder deviceInfo = new StringBuilder();//创建驱动信息格式
            deviceInfo.Append("<DeviceInfo>");
            deviceInfo.Append(" <OutputFormat>EMF</OutputFormat>");
            //deviceInfo.Append(" <PageWidth>8.5in</PageWidth>");
            //deviceInfo.Append(" <PageHeight>11in</PageHeight>");
            //deviceInfo.Append(" <MarginTop>0.25in</MarginTop>");
            //deviceInfo.Append(" <MarginLeft>0.25in</MarginLeft>");
            //deviceInfo.Append(" <MarginRight>0.25in</MarginRight>");
            //deviceInfo.Append(" <MarginBottom>0.25in</MarginBottom>");
            deviceInfo.Append(" </DeviceInfo>");
            return deviceInfo.ToString();
        }

 private Stream CreateStream(string name, string fileNameExtension, Encoding encoding, string mimeType, bool willSeek)
        {
            //Stream stream = new FileStream(name + "." + fileNameExtension, FileMode.Create);
            Stream stream = new MemoryStream();
            _streams.Add(stream);
            return stream;
        }

这两个方法为Render方法的参数。求如何解决打印2页问题

3 个解决方案

#1


求解决啊 C#直接打印RDLC报表问题

#3


已经解决了,不过还是谢谢版主,通过调整PageWidth和PageHeight来设定大小。可以调整页码,如果过宽或者过高都会将多余的部分放到第二页打印。

#1


求解决啊 C#直接打印RDLC报表问题

#2


#3


已经解决了,不过还是谢谢版主,通过调整PageWidth和PageHeight来设定大小。可以调整页码,如果过宽或者过高都会将多余的部分放到第二页打印。