如何摆脱从 s-s-rS 导出的 PDF 中的空白页
Posted
技术标签:
【中文标题】如何摆脱从 s-s-rS 导出的 PDF 中的空白页【英文标题】:How to get rid of blank pages in PDF exported from s-s-rS 【发布时间】:2010-09-26 15:33:28 【问题描述】:我有一份两页的 s-s-rS 报告。当我将它导出为 PDF 时,由于它的宽度,它占用了 4 页,其中第 2 和第 4 页显示了我在表格中的一个字段。我尝试将报表属性中的布局大小设置为 width=18in 和 height =8.5in。
它在一页 PDF 中为我提供了整个表格,但我仍然将第 2 页和第 4 页留空。
我这样做的方式不正确吗?我还能如何摆脱那些空白页?
【问题讨论】:
【参考方案1】:我已经成功地使用 pdftk 删除了我在 pdf 中不需要/不需要的页面。你可以下载程序here
您可以尝试以下方法。取自here下的例子
从 in1.pdf 中删除“第 13 页”以创建 out1.pdf pdftk in.pdf cat 1-12 14端输出out1.pdf
或:
pdftk A=in1.pdf cat A1-12 A14-端输出out1.pdf
【讨论】:
【参考方案2】:如果来自 s-s-rS 的页面是空白的,您需要调整报表布局。这将比通过运行输出和后处理来修复布局问题的副作用要高效得多。
s-s-rS 在推动边距边界方面非常挑剔。仅通过调整报表上的文本框或其他控件,很容易意外地加宽/加长报表。仔细检查报表表面的宽度和高度属性,并尽可能挤压它们。注意大的页眉和页脚。
【讨论】:
【参考方案3】:在 BIDS 或 SSDT-BI 中,执行以下操作:
-
单击报告 > 报告属性 > 布局选项卡(SSDT-BI 中的页面设置选项卡)
记下页面宽度、左边距、右边距的值
关闭并返回设计界面
在“属性”窗口中,选择正文
点击 + 号展开尺寸节点
记下 Width 的值
要在 PDF 中正确呈现正文宽度 + 左边距 + 右边距必须小于或等于页面宽度。当您看到正在呈现空白页面时,几乎总是因为正文宽度加上边距大于页面宽度。
记住:(正文宽度+左边距+右边距)
【讨论】:
不起作用。我的身体宽度小于“报告宽度 - 边距”。我仍然有大量的空白页。 @adolfgarlic 我发现页面宽度设置在报表属性下并不总是正常工作。您是否尝试过在 Visual Studio 中手动拖动报表宽度?在将我的头撞到墙上一段时间后,今天为我解决了这个问题。也值得检查您的页眉/页脚宽度,它们可能有点太大了。 我发现这里的规则不是(Body Width + Left margin + Right margin) 另外要注意的是页眉+正文+页脚+顶部+底部边距的高度 第一次创建报告时,构建器会在屏幕宽度上运行一个白色区域(Nathan 提到的“Body”)以放置内容。通常,该白色区域在较新的信箱屏幕上为 17 英寸宽。直观上不明显的是,这被认为是一个可打印的对象,需要缩小到你放在上面的东西的宽度。如果你不这样做,你会得到空白页,不管大家提到的所有其他内容。【参考方案4】:除了页边距,这是迄今为止最常见的问题,我还看到了另外两种可能性:
-
使用
+
连接文本。您应该改用&
。
文本超出指定文本框的宽度。因此,如果您的文本框只包含 30 个字符,而您尝试在其中塞入 300 个字符,那么您最终可能会得到额外的页面。
【讨论】:
【参考方案5】:在解决这个问题数小时后,我偶然发现了一个对我有用的解决方案:
在 SSDT (2012) 中,我最初将页面设置/页面单位设置为厘米。当我将其更改为英寸时,奇怪的是,我能够将我的报告导出为 PDF,而无需其他所有页面都是空白的。
【讨论】:
这对我来说非常有效。将英寸更改为 Cm 将起作用,反之亦然,但无需坚持 Cm。另一件事是,需要设置至少 1 厘米的边距,然后生成报告而无需额外的空白页面。【参考方案6】:您是否尝试过查看报告右侧是否有空白?如果是这样,您可以将其拖回报表的末尾,然后将报表背景拖回同一位置。
【讨论】:
【参考方案7】:要尝试的另一件事是将名为ConsumeContainerWhitespace
的报告属性 设置为True
(默认为false
)。我就是这样解决的。
【讨论】:
是的,也为我工作。我有一个带有列组的 tablix 的容器。显然,容器正在增长以包含列组,并且在不消耗容器的空白区域的情况下,它会溢出页面边界。 这对我来说当然是关键。我总是利用 Nathan 接受的答案,结果好坏参半。在 Nathan 的解决方案没有解决问题的每种情况下,这个解决方案都成功了。请注意,您仍然应该利用 Nathan 的建议。 是的 x100!太糟糕了,你不能有 2 个“公认的答案”,因为看起来正确的课程是这个和公认的答案的组合。向你致敬! 哎呀,把它拿回来。我正在使用 VS 2017 s-s-rS/SSDT;我花了一段时间才弄清楚你必须使用属性 window 来找到这个功能,不是Report Properties...
对话框。
在挣扎了一段时间后对我有用...非常感谢【参考方案8】:
在报告 (myReport.rdlc) 的属性选项卡上,将“Keep Together”属性更改为 False。我一直在努力解决这个问题,这似乎解决了我的问题。
【讨论】:
【参考方案9】:在编辑 s-s-rS 文档时计算任何数学之前,最好先在设计图面上执行此操作(Visual Studio 2012 已显示,但可以在其他版本中完成)。
以下红色圆圈中的数字对应以下步骤:
-
在设计图面上,有时编辑器会创建一个比实际控件大的
page
;因此要打印重影区域。
根据控件调整大小。直观地查看宽度/高度,看看您是否不能将 页面中 设计表面调整为控件实际需要的空间,仅此而已.
然后尝试创建 PDF 并查看是否可以解决问题。
如果 #3 不能解决问题,则说明控件需要过多的实际页面大小并且 在长度/宽度上超出。因此,需要缩小控件的大小以适应更小的页面大小。
此外,在某些情况下,您可以通过将ConsumeContainerWhitespace
设置为true
来更改报告页面的属性,以自动使用空格。
【讨论】:
谢谢!我知道它必须比通过数字和做数学更简单。我不知道它只是因为报告正文那么大而打印空白。 将 ConsumeContainerWhitespace 设置为 true 对我有用。不过,我已经清理了我的报告、正文和表格宽度【参考方案10】:对我来说,问题是 s-s-rS 故意将您的空白视为您打算尊重它:
除了空白,确保没有右边距。
【讨论】:
嗨@jeremy-thompson,你的小费碰巧很方便。干杯 删除右边距对我有用,并且不会影响 Web 报表查看器或 PDF 中的呈现。 5 年后,这就是我想要的。【参考方案11】:我与 s-s-rS 合作超过 10 年,上面的答案就是答案。但。如果没有任何效果,并且您完全被塞满了......从报告中删除项目,直到问题消失。一旦您确定了导致问题的行或报告项,请将其放在一个矩形容器中。而已。帮助了我们很多很多次!多余的页面主要是由于报表项超出了右边距造成的。当所有其他方法都失败时,将东西放在一个矩形内或一个项目右侧的空矩形内,可以阻止这种情况的发生。祝你好运!
【讨论】:
它对我有用。通过在表格中添加额外的空列,我的 pdf 格式的报告不会显示额外的空白页..!【参考方案12】:如果您的报表包含子报表,如果允许子报表和层次结构增长,则子报表的宽度可能会超出正文的边界。 我有一个类似的问题出现在一个可以放在一个单元格中(跨越 2 列)的子报表中。看起来跨度可以在设计器中包含它,并且在 winform 或浏览器中呈现良好,并且最初它可以生成打印机输出(或 pdf 文件)而不会溢出到多余的页面上。 然后,在更改了其他一些列宽(并且不超过正文宽度加上边距)之后,winform 和浏览器渲染看起来仍然很好,但是当生成输出(打印机或 pdf)时,它会增长到边距并写入右侧将每一页作为第 2(第 4 等)页。我可以通过增加放置子报表的 colspan 来消除我的问题。 无论您是否使用子报表,如果您有页面溢出并且您的正文设计适合页面的边缘,请寻找允许增长的东西,将正文的宽度推出。
【讨论】:
【参考方案13】:我最近继承了一份需要进行一些更改的报告。遵循上述所有建议后,它没有帮助。该报告历来有这个额外的页面,没有人能弄清楚为什么。
我右键单击 tablix 并选择了属性。有一个复选框被选中,说在之后添加一个分页符。删除后,它现在打印在一页上。
【讨论】:
【参考方案14】:确保 Visual Studio 中的设计师没有超出您的最大宽度。将鼠标悬停在右侧页面边框上并向左拖动以确保页面不会超出您想要的布局。
【讨论】:
这解决了我的问题。在右侧,我必须有很多白色和空白的部分。通过删除它解决了我的问题。【参考方案15】:我通过执行以下操作解决了这个问题。 (使用最新版本的报表生成器)
步骤 1.) 转到查看标签 步骤 2.) 检查属性复选框 第 3 步。)在报告正文内单击(它将更新属性选项卡中的值) 步骤 4.) 此处不要考虑宽度 步骤 5.) 右键单击报告外的灰色区域,然后单击报告属性 第 6 步。)将左边距 + 右边距添加到身体宽度(如果等于 10,则将宽度设为 11) 步骤 7.) 保存
【讨论】:
你能解释一下你的数学是怎么加起来的吗? 9.06476 + 0 + 0 != 9.2, 8.42861 + 0.5 + 0.5 != 11.69。在第 6 步中,“如果等于 10,则宽度为 11”是什么意思?你的意思是取 left + right + 1 吗?【参考方案16】:我只是减少了所有小于 8 英寸的 Wight 元素,并进行了纠正, 我用鼠标做到了, 您的报告正文应小于 8 英寸。
【讨论】:
正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。以上是关于如何摆脱从 s-s-rS 导出的 PDF 中的空白页的主要内容,如果未能解决你的问题,请参考以下文章
报告生成器/s-s-rS 中 pdf 问题中空白页的特殊情况 (!)
在 s-s-rs 2008 中将报告导出到 excel 时合并或空白列
将 s-s-rS 报告导出为 PDF 格式时出现 png 图像问题