如何摆脱从SSRS导出的PDF空白页
我有一个SSRS报告。 当我试图导出为PDF时,由于它的宽度,它占用了4页。第2页和第4页显示我的字段中的一个表。 所以我试图设置报告属性的布局大小为宽= 18in和高= 8.5in。
它把整个表格放在一个PDF页面中。 但是我得到第二和第四页空白。 我正在做的方式是不正确的,或者如何摆脱空白页?
在BIDS或SSDT-BI中,执行以下操作:
- 点击报告>报告属性>布局选项卡(SSDT-BI中的页面设置选项卡)
- 记下页面宽度 , 左边距 , 右边距的值
- closures并返回到devise表面
- 在“属性”窗口中,select“ 正文”
- 单击+符号展开“大小”节点
- 记下宽度的值
以PDF格式正确呈现体宽+左边距+右边距必须小于或等于页面宽度。 当您看到空白页面被渲染时,几乎总是因为身体宽度加边距大于页面宽度。
记住:( 体宽+左边距+右边距)<=(页面宽度)
另一个要尝试的是将名为ConsumeContainerWhitespace
的报表属性设置为True
(默认为false
)。 这就是为我解决的。
经过几个小时的努力解决这个问题,我偶然发现了一个适用于我的解决scheme:
在SSDT(2012)中,我最初的页面设置/页面单位设置为厘米。 当我将其更改为英寸时,奇怪的是,我能够将报表导出为PDF格式,而不会使每个其他页面都为空。
在编辑SSRS文档之前,在计算任何math计算之前,最好在devise界面( Visual Studio 2012显示,但可以在其他版本中完成 )执行此操作 。
下面的红色圆圈中的数字映射到以下步骤:
- 在devise界面,有时编辑器会创build一个比实际控件大的
page
; 因此正在印刷的鬼区域。 - 调整到控件。 通过目视查看宽度/高度,看看是否不能将devise图面上 的页面 调整到控件所需空间的大小,
- 然后尝试创build一个PDF,看看是否修复它。
- 如果#3没有解决问题,那么控件需要太多的实际页面大小,并以任何长度/宽度进行。 因此,需要将控件的大小设置得更小,以适应更小的页面大小。
同样在某些情况下,只需通过将ConsumeContainerWhitespace
设置为true
来自动消耗空间,就可以更改报告页面的属性。
如果来自SSRS的页面空白,则需要调整报告布局。 这将比运行输出和后期处理来修复布局问题的副作用要有效得多。
在推动利润率边界时,SSRS非常挑剔。 只是通过调整报告中的文本框或其他控件,很容易意外地扩大/延长报告。 仔细检查报告表面的宽度和高度属性,并尽可能多地挤压。 注意大头和页脚。
对我来说,问题在于SSRS故意把你的空间看作是你想要的荣誉:
以及空白,确保没有任何权利的余地。
除了利润率这个迄今为止最常见的问题之外,我还看到了另外两种可能性:
- 使用
+
连接文本。 你应该用&
代替。 - 文本溢出指定文本框的宽度。 所以,如果你的文本框只能容纳30个字符,而你试图在里面填入300,那么你可能会得到额外的页面。
您是否试图查看报告右侧是否有空格? 如果是这样,您可以将其拖回到报告的末尾,然后将报告背景拖回到同一位置。
在报告(myReport.rdlc)的属性选项卡上,将“Keep Together”属性更改为False。 我一直在解决这个问题一段时间,这似乎解决了我的问题。
我已经与SSRS合作了10多年,上面的答案是答案。 但。 如果什么都行不通,而且你完全塞满了…从报告中删除项目,直到问题消失。 一旦确定了哪个行或报表项导致了问题,请将其放在矩形容器内。 而已。 帮了我们很多次了! 额外的页面大部分是由右边距上stream动的报表项造成的。 当一切都失败时,把东西放在一个矩形或者一个空矩形的右边,可以防止这种情况发生。 祝你好运!
如果您的报告包含子报告,则如果子报告和层次结构允许增长,则子报告的宽度可以推送正文的边界。 我有一个类似的问题,可以放在一个单元格中的子报表(跨越2列)。 它看起来像跨度可以在devise器中包含它,它在一个WinForform或浏览器中呈现罚款,原来,它可以生成打印机输出(或PDF文件),而不会溢出到多余的网页。
然后,改变了一些其他列的宽度(并没有超过身体宽度加边距),winform和浏览器效果图看起来仍然很好,但是当输出(打印机或PDF)产生时,它增长了边缘,并写下右侧作为第二(第四等)页面。 我可以通过增加子报表放置在哪里来消除我的问题。
不pipe你是否使用子报表,如果你有页面溢出,你的身体devise适合在页面的边缘,寻找允许生长的东西,推动身体的宽度。
我已经成功地使用pdftk来删除我不想/需要在pdf中的网页。 你可以在这里下载程序
你可以尝试像下面这样的东西。 从这里下来的例子
从in1.pdf删除'page 13'创buildout1.pdf pdftk in.pdf cat 1-12 14-end output out1.pdf
要么:
pdftk A = in1.pdf cat A1-12 A14-end output out1.pdf