SSRS报表查看器与导出的PDF页面数对比

3
在ReportViewer查看时显示的页面数量与导出为PDF格式时不同。 例如:在Report Viewer的单个页面中显示50条记录。但是导出为PDF格式后第一页有45条记录,其余的记录则在第二页。
尝试的解决方案: 1)删除上下边距; 2)将“交互式页面大小”减小到与页面计数匹配。 但它的表现不一致,因为对于不同数量的记录会表现出不同的行为。
请问有人能告诉我如何实现ReportViewer和导出的PDF之间的同步吗?
谢谢!

我假设你已经检查了正文的大小是否与页面设置大小在任何维度上不超过。 - Jonnus
你的交互尺寸应该是页面尺寸 - 边距。去掉任何边框。由于在屏幕和PDF上渲染之间存在许多差异,我认为你不可能完全匹配。 - Hannover Fist
嗨Jonnus,我已经检查过了,正文大小小于页面大小。我还尝试删除页面高度和页面宽度属性,但仍然没有起作用。 - manoj k.s
汉诺威,"交互尺寸=页面大小-边距"是我能够实现此同步的最接近方法吗? - manoj k.s
1个回答

0

简短回答 - 您无法做您试图做的事情:不同的渲染器以适当的方式处理分页。

HTML 渲染器针对基于屏幕的阅读进行了优化,通常允许每页比打印渲染器更多的内容,因为打印渲染器受其格式化的纸张大小的限制。因此,HTML 渲染器允许更多的内容放在较少的页面上,以获得更好的浏览器体验,而打印和 PDF 渲染器必须严格遵守页面长度。

最好的例子是 Excel 渲染器 - Excel 渲染器在大多数情况下将整个报告呈现到单个工作表中(对于在组页脚上设置分组和分页的报告,它将在自己的工作表上呈现每个组)。您不希望 Excel 渲染器人为地创建工作表来尝试“分页”您的报告,或者将所有内容都放在一个工作表中,但将标题插入电子表格行中的每个“页面”。它会执行适当的操作,即将所有数据包含在一个大型工作表中,即使这可能被逻辑上认为是一个大的“页面”。

HTML 渲染器页面长度由报表的 InteractiveHeight 属性(在报表属性窗格中的 InteractiveSize 属性中)确定(更准确地说,受其影响)。然而,交互高度只是一个近似值,而不是固定的分页设置,即使将 InteractiveHeight 设置为目标页面长度相同,您的页面分页仍可能与打印版本不符。这是因为 HTML 渲染器会变化页面长度以更好地组合数据,因此交互式页面断点大约发生在设置的交互高度周围,但并不总是精确定位。

这就是您的情况所发生的情况,报表查看器在一个页面上显示50条记录,但 PDF 文件的第一页有45条记录,第二页有5条记录。报表查看器决定,既然只剩下几条记录要显示,它就会将它们全部包括在一个页面上,而不是强迫用户滚动,即使超过了交互高度。因此,您可以获得更好的用户体验,但不同渲染器之间的页面会有差异。报表的重要性在于其中的数据和与该数据在该渲染器中的工作体验,而不在于页面无论如何都具有相同的长度。

请参阅此讨论,了解更多关于为什么您想要实现的内容无法实现的渲染行为信息。只需教育您的用户,浏览器分页是为了他们的视觉体验而优化的。


嗨Chris,谢谢你的回复。“交互尺寸 = 页面尺寸 - 边距”是我能够实现这种同步的最接近的方法吗?如果有其他改进同步的方式,请告诉我。如果无法完全同步,也请告知。 - manoj k.s
是的,但它仍然不会完美,因为实际呈现的高度将根据渲染器感觉最好地显示您的数据而与交互式高度有所不同。 - Chris Latta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接