尝试的解决方案: 1)删除上下边距; 2)将“交互式页面大小”减小到与页面计数匹配。 但它的表现不一致,因为对于不同数量的记录会表现出不同的行为。
请问有人能告诉我如何实现ReportViewer和导出的PDF之间的同步吗?
谢谢!
简短回答 - 您无法做您试图做的事情:不同的渲染器以适当的方式处理分页。
HTML 渲染器针对基于屏幕的阅读进行了优化,通常允许每页比打印渲染器更多的内容,因为打印渲染器受其格式化的纸张大小的限制。因此,HTML 渲染器允许更多的内容放在较少的页面上,以获得更好的浏览器体验,而打印和 PDF 渲染器必须严格遵守页面长度。
最好的例子是 Excel 渲染器 - Excel 渲染器在大多数情况下将整个报告呈现到单个工作表中(对于在组页脚上设置分组和分页的报告,它将在自己的工作表上呈现每个组)。您不希望 Excel 渲染器人为地创建工作表来尝试“分页”您的报告,或者将所有内容都放在一个工作表中,但将标题插入电子表格行中的每个“页面”。它会执行适当的操作,即将所有数据包含在一个大型工作表中,即使这可能被逻辑上认为是一个大的“页面”。
HTML 渲染器页面长度由报表的 InteractiveHeight 属性(在报表属性窗格中的 InteractiveSize 属性中)确定(更准确地说,受其影响)。然而,交互高度只是一个近似值,而不是固定的分页设置,即使将 InteractiveHeight 设置为目标页面长度相同,您的页面分页仍可能与打印版本不符。这是因为 HTML 渲染器会变化页面长度以更好地组合数据,因此交互式页面断点大约发生在设置的交互高度周围,但并不总是精确定位。
这就是您的情况所发生的情况,报表查看器在一个页面上显示50条记录,但 PDF 文件的第一页有45条记录,第二页有5条记录。报表查看器决定,既然只剩下几条记录要显示,它就会将它们全部包括在一个页面上,而不是强迫用户滚动,即使超过了交互高度。因此,您可以获得更好的用户体验,但不同渲染器之间的页面会有差异。报表的重要性在于其中的数据和与该数据在该渲染器中的工作体验,而不在于页面无论如何都具有相同的长度。
请参阅此讨论,了解更多关于为什么您想要实现的内容无法实现的渲染行为信息。只需教育您的用户,浏览器分页是为了他们的视觉体验而优化的。