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

时间:2008-12-12 14:27:10

标签: pdf reporting-services ssrs-2008 ssrs-2008-r2 ssrs-2012

我有一份SSRS报告。当我试图导出到PDF时,由于它的宽度,它需要4页。其中第2页和第4页显示我的表中的一个字段。所以我尝试将报告属性中的布局大小设置为width = 18in和height = 8.5in。

它在PDF的单页中给了我整个表格。但我得到第2和第4页空白。 我正在做的方式是不正确的,还是如何摆脱那些空白页?

15 个答案:

答案 0 :(得分:317)

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

  1. 点击报告>报告属性>布局选项卡(SSDT-BI中的页面设置选项卡)
  2. 记下页面宽度左边距右边距
  3. 的值
  4. 关闭并返回设计界面
  5. 在“属性”窗口中,选择正文
  6. 单击+符号以展开“大小”节点
  7. 记下宽度
  8. 的值

    正确渲染PDF正文宽度+左边距+右边距必须小于或等于页面宽度。当您看到正在渲染的空白页时,几乎总是因为正文宽度加上边距大于页面宽度。

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

答案 1 :(得分:105)

要尝试的另一件事是将名为ConsumeContainerWhitespace报告属性设置为True(默认值为false)。这就是我如何解决的问题。

答案 2 :(得分:28)

经过几个小时的努力解决这个问题,我偶然发现了一个对我有用的解决方案:

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

enter image description here

答案 3 :(得分:20)

在编辑SSRS文档时,在计算任何数学之前,最好先在设计界面( Visual Studio 2012显示,但可以在其他版本中完成)。

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

  1. 在设计图面中,编辑器有时会创建一个比实际控件大的page;因此打印了鬼区。
  2. 调整大小到控件。目视查看宽度/高度,看看是否无法在设计图面上 ,将其调整到控件实际需要的空间,不再需要。
  3. 然后尝试创建PDF并查看是否可以修复它。
  4. 如果#3无法解决问题,那么有些控件需要太多的实际页面大小,并且以长度/宽度覆盖。因此,需要将控件的大小设置得更小以适应更小的页面大小。
  5. Steps to manually remediate


    此外,在某些情况下,您可以通过将ConsumeContainerWhitespace设置为true来自动使用空格来更改报告页面的属性。

答案 4 :(得分:18)

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

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

答案 5 :(得分:17)

对我来说,问题在于SSRS故意将您的空白区视为您想要获得荣誉:

enter image description here

除空格外,请确保没有合适的边距。

答案 6 :(得分:5)

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

  1. 使用+连接文本。您应该使用&代替。
  2. 文本溢出指定文本框的宽度。因此,如果您的文本框仅包含30个字符,并且您尝试在其中填充300,则最终可能会有额外的页面。

答案 7 :(得分:5)

我已经与SSRS合作了10多年,上面的答案就是答案。但。如果没有任何作用,并且你被完全塞满....从报告中删除项目,直到问题消失。确定导致问题的行或报表项后,将其放在矩形容器中。就是这样。帮了我们很多次了!额外页面主要是由流经右边距的报表项引起的。当所有其他方法都失败时,将内容放在项目右侧的矩形或空矩形内可以阻止这种情况发生。祝你好运!

答案 8 :(得分:4)

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

答案 9 :(得分:4)

在报告的属性选项卡(myReport.rdlc)上,更改" Keep Together"属性为False。我一直在努力解决这个问题,这似乎解决了我的问题。 enter image description here

答案 10 :(得分:1)

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

答案 11 :(得分:1)

我最近继承了一份报告,我需要进行一些更改。遵循上述所有建议后,它没有帮助。该报告历史上有这个额外的页面,没有人能弄明白为什么。

我右键单击了tablix并选择了属性。检查了一个复选框,表示之后添加分页符。删除后,它现在打印在一页上。

enter image description here

答案 12 :(得分:1)

确保visual studio 中的设计师没有超出您的最大宽度。将鼠标悬停在右侧页面边框上并向左拖动以确保页面不会越过您想要的布局。

enter image description here

答案 13 :(得分:1)

我通过执行以下操作解决了这个问题。 (使用最新版本的报表生成器)

第 1 步。)转到“查看”选项卡
步骤 2.) 选中属性复选框 enter image description here
第 3 步。) 在报告正文内部单击(它将更新属性选项卡中的值)enter image description here
第 4 步。)不要取这里的宽度
步骤 5.) 右键单击​​报告外的灰色区域,然后单击报告属性 enter image description here
第 6 步。)将左 + 右外边距添加到您的正文宽度(如果等于 10,则使您的宽度为 11)enter image description here
步骤 7.) 保存

答案 14 :(得分:-2)

我已成功使用pdftk删除pdf中不需要/不需要的页面。您可以下载程序here

您可以尝试以下内容。取自here下的示例

从in1.pdf中删除“第13页”以创建out1.pdf pdftk in.pdf cat 1-12 14-end output out1.pdf

或:

pdftk A = in1.pdf cat A1-12 A14-end output out1.pdf