如何摆脱SSRS导出的PDF中的空白页


194

我有两页的SSRS报告。当我将其导出为PDF时,由于其宽度而占用了4页,第二和第四页显示的是表格中的其中一个字段。我试图将报表属性中的布局大小设置为width = 18in和height = 8.5in。

它在一张PDF页面中为我提供了整个表格,但第二页和第四页仍然空白。

我的操作方式不正确吗?我还能如何摆脱那些空白页?

Answers:


344

在BIDS或SSDT-BI中,执行以下操作:

  1. 单击报告>报告属性>布局选项卡(SSDT-BI中的页面设置选项卡)
  2. 记下Page widthLeft marginRight margin的值
  3. 关闭并返回到设计图面
  4. 在“属性”窗口中,选择“ 主体”
  5. 单击+符号以展开“大小”节点
  6. 记下Width的值

为了正确地以PDF呈现,“正文宽度+左页边距+右页边距”必须小于或等于“页面宽度”。当您看到空白页面正在被渲染时,几乎总是因为主体宽度加上边距大于页面宽度。

请记住:(正文宽度+左页边距+右页边距)<=(页面宽度)


14
不起作用 我的正文宽度小于“报告宽度-边距”。仍然有很多空白页。
阿道夫·大蒜

2
@adolfgarlic我发现页面宽度设置在报表属性下并不总是能正常工作。您是否尝试过在Visual Studio中手动拖动报表宽度?在将我的头撞在墙上好一会儿之后,今天为我解决了这个问题。同样值得检查您的页眉/页脚宽度,它们可能有点过大。
Michael A

15
我发现在这里有效的规则不是(正文宽度+左页边距+右边距)<=(页面宽度),而是更像(
正文

3
还要注意的另一件事是页眉的高度+正文+页脚+顶部+底部页边距<页面高度,否则该页面将在多个页面中流动。
desiguy 2014年

4
首次创建报告时,构建器会在屏幕的整个宽度上运行一个白色区域(Nathan提到的“正文”)以放置内容。通常,在较新的信箱屏幕上,此白色区域的宽度为17英寸。在直观上不明显的是,这被认为是可打印的对象,需要缩小到所放置内容的宽度。如果您不这样做,那么不管大家提到的所有其他内容如何,​​您都将得到空白页。
BobRodes 2014年

112

另一件事是尝试设置报表属性称为ConsumeContainerWhitespaceTrue(默认为false)。这就是为我解决的方式。


2
是的,也为我工作。我有一个带有Tablix和列组的容器。显然,容器正在增长以包含列组,并且在不占用容器的空白的情况下,它将使页面边界溢出。
夏兰

4
这当然是我的关键。我总是利用内森(Nathan)接受的答案,得出不同的结果。在Nathan的解决方案无法解决问题的每种情况下,这个技巧都可以解决。请注意,您仍然应该利用内森的建议。
bojingo 2014年

是的x100!太糟糕了,您不能拥有2个“已接受的答案”,因为似乎正确的过程是这与已接受的答案的组合。恭喜您!
NateJ '16

2
哎呀,拿回来。我正在使用VS 2017 SSRS / SSDT; 我花了一段时间才能找出你必须使用属性窗口找到这个功能,不是Report Properties...对话框。
codeMonkey

1
经过一段时间的努力对我
有用

28

经过数小时的努力,我偶然找到了一个对我有用的解决方案:

在SSDT(2012)中,我最初将页面设置/页面单位设置为厘米。奇怪的是,当我将其更改为“英寸”时,我可以将报告导出为PDF,而不必使其他所有页面都为空白。

在此处输入图片说明


这非常适合我。将英寸更改为Cm都可以,反之亦然,但是没有必要坚持使用Cm。还有一件事是,需要将页边距设置为至少1厘米,然后生成报表而没有其他空白页。
拉维·香卡

21

最好先在设计图上执行此操作(显示了Visual Studio 2012,但可以在其他版本中执行此操作),然后再编辑SSRS文档时计算任何数学运算。

在以下红色圆圈中的数字下方,这些数字映射到以下步骤:

  1. 在设计图面上,有时编辑器会创建一个page大于实际控件的;因此重影区域被打印。
  2. 调整为控件的大小。直观地查看宽度/高度,看看是否无法进入设计图面上的页面 来将其调整为控件实际需要的空间,并且仅此而已。
  3. 然后尝试创建PDF,看看是否可以解决。
  4. 如果#3不能解决问题,则有些控件需要太多的实际页面大小,并且长度或宽度都要超过。因此,将需要使控件的大小变小以容纳较小的页面大小。

手动修复的步骤


此外,在某些情况下,人们可以通过设置只需更改报告页面的属性ConsumeContainerWhitespacetrue自动消耗的空间。


2
谢谢!我知道它必须比遍历数字和做数学更简单。我不知道是因为报告正文太大而打印白页。
Tor

将ConsumeContainerWhitespace设置为true对我有用。我已经清理了报告,正文和表格的宽度
Jon Dosmann '17

18

对我来说,问题是SSRS故意将您的空白视为您希望得到的尊重:

在此处输入图片说明

除了空白,还要确保没有正确的边距。


1
嗨,@ jeremy-thompson,您的提示碰巧很方便。欢呼声
Andy K

1
删除合适的边距对我有用,并且不会影响Web报表查看器或PDF中的呈现。
andrej351

1
5年后,这就是我的选择。
MPJ567

17

如果来自SSRS的页面为空白,则需要调整报告布局。这将比运行输出和后期处理来修复布局问题的副作用要有效得多。

SSRS在突破利润边界方面非常挑剔。仅通过调整报告上的文本框或其他控件,很容易意外地使报告变宽/变长。仔细检查报告表面的宽度和高度属性,并尽可能地挤压它们。当心大型页眉和页脚。


5

除了页边距,这是迄今为止最常见的问题,我还看到了另外两种可能性:

  1. 使用+来连接文本。您应该&改用。
  2. 文本溢出指定文本框的宽度。因此,如果您的文本框仅包含30个字符,而您尝试在其中填充300个字符,则最终可能会出现多余的页面。

5

我已经在SSRS工作了10多年,上面的答案就是答案。但。如果没有任何效果,并且您完全塞满了...,请从报告中删除项目,直到问题消失。确定了引起问题的行或报表项目后,将其放入矩形容器中。而已。已经帮助了我们很多次!多余的页面主要是由于报告项目超出了右边距。当所有其他方法均失败时,将东西放在项目右侧的矩形或空白矩形中可以阻止这种情况的发生。祝你好运!


它为我工作。通过向表中添加额外的空列,我的pdf格式的报告未显示额外的空白页。
萤火虫

4

您是否尝试过查看报告右侧是否有空白?如果是这样,您可以将其拖回报表的末尾,然后将报表背景拖回同一位置。


4

在报表(myReport.rdlc)的属性选项卡上,将“保持在一起”属性更改为False。我一直在努力解决这个问题,这似乎已经解决了我的问题。 在此处输入图片说明


2

我最近继承了一份报告,需要进行一些更改。遵循上述所有建议后,它无济于事。历史上,该报告有额外的页面,没有人知道原因。

我右键单击tablix和选定的属性。有一个复选框选中,表示在此之后添加一个分页符。删除后,它现在打印在一页上。

在此处输入图片说明


1

如果您的报告包含子报表,则在允许子报表和层次结构增长的情况下,子报表的宽度可能会突破正文的边界。我有一个类似的问题出现在可以放置在单元格中的子报表中(跨越2列)。看起来跨度可以包含在设计器中,并且可以在winform或浏览器中很好地呈现,并且最初可以生成打印机输出(或pdf文件)而不会溢出到多余的页面上。
然后,在更改了其他一些列宽(并且不超过正文宽度和边距)之后,winform和浏览器渲染看起来仍然很好,但是当生成输出(打印机或pdf)时,它超出了边距并写在右侧每页的第2页(第4页等)。我可以通过增加放置子报表的colspan来消除我的问题。
无论您是否使用子报表,如果您有页面溢出并且您的正文设计适合页面的页边空白,请寻找允许增大的东西以将正文的宽度推出。


-3

我已经成功地使用pdftk删除了我不需要/不需要的页面。您可以在这里下载程序

您可以尝试以下操作。从这里取下例子

从in1.pdf中删除“第13页”以创建out1.pdf pdftk in.pdf目录1-12 14端输出out1.pdf

要么:

pdftk A = in1.pdf目录A1-12 A14端输出out1.pdf

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.