reporting service打印出空白页的解决方法-补充

       下面是网友博客上写的,按照这个设置后,发现我的还是会出现空白页,琢磨了一段时间终于问题解决,现在把我的一些理解和注意之处与同仁分享。

      1、注意报表中包含子报表的,如果父子两个报表都添加了分页符则会一定会出现空白页,所以要把子报表的分页符去掉;

      2、还是报表中包含子报表的,在只有父报表加了分页符的情况下如果子报表没有数据,默认情况下也会把它占的空间显示出来,可能是因为要照顾非表格的缘故吧,这个问题导致可能会出现空白页,所以需要在父报表中对子报表设置属性“可见性-〉表达式”判断一下是否显示子报表;

      3、在List的属性里(不知道List属性在哪设置,知道的说一声)尽量用“在此列表前面插入分页符”(在前面插入分页符并不会在第一页出现空白,这肯定是reporting service处理过的),而不是“在此列表后面插入分页符”,选择后者的话有时候并不会分页,这应该是一个bug了。

      4、报表最下方不要留空白,否则虽然数据只需要一页,但多出来的空白所占的位置可能会导致打印出一个空白页。

      创建新报表后,先要确定这张报表将会用什么大小的纸张进行打印,确定好后,就可以选择属性下拉列表中的Report对象(如下图),对该对象进行属性设置。
       设置万Report属性后,我们就可以来设置Body的属性

       Body有一个Size属性,Size属性如果设置得过大,就会出现空白页现象。 一般可以这样设置:

               Body Width <= Report PageSize Width – Margin Left – Margin Right

               Body Height = Report PageSize Height – Margin Top – Margin Bottom

       很多人都没有考虑到边距问题,导致出现了空白页。建议如果一定要设置边距的话,只设置Left和Top就可以了。

      补充:

      上面的描述对于那些报表中表格大小可以固定的好理解。但是我们通常会碰到行或者列根据结果集迭代进行增长显示的情况,这样一来,上面的第4点就尤其值得注意-底部不要留空白,下面介绍如何处理。

      1、根据我们需要打印的纸张设置Report属性中的Size。

      2、根据我们在这张纸上上、下、左、右所需要留出的空白,设置Report属性中的margin。建议只设置left和top,其他设置0。

      3、纸上面除了margin留出的空白-即我们在上面打印东西的地方(我们叫他打印区域吧)。主体(body)属性中的Size属性不能限定打印区域的大小,而是通过这个大小限制可以调整打印信息(文字、表格、文本框等)与打印区域的上下左右的间距的

        如下图所示:红色框内是我们需要打印的内容,W1、W2表示的宽度分别是我们打印时,打印的内容与打印区域(Report的Size除了Margin后的空间)左、右的间距。同样 H1、H2是与打印区域上下的间距。我们可以通过拉伸Body区域或设置Body的Size属性来减少打印内容与打印区域边线的距离。(如果需要打印多页,则H1为与第一页打印区域顶端的距离,H2为与最后一页的打印区域底端的距离,W1为与每张的打印区域左边距离,W2为与每张的打印区域右边的距离)

reporting service打印出空白页的解决方法-补充_第1张图片

           3.1对于表格高度、宽度确定的:

                    Body Width <= Report PageSize Width – Margin Left – Margin Right

                    Body Height <= Report PageSize Height – Margin Top – Margin Bottom

           3.2对于表格总体高度或宽度会根据程序集循环迭代而增长的:

                    保证W1、W2、H1、H2是你所需要的打印纸上的打印数据与打印区域的间距即可。通常拉伸body使得H2为0(即没有间隙),及上面网友提及的第四点保证报表下面不要留出空隙。如果需要打印多页,则最后一页打印信息需要与打印区域底端有H2的距离,即如果数据占满了纸张,则会打印一张空纸张来打印“H2”的空白区域。

你可能感兴趣的:(list,service,report,报表)