31

我有一个 RDLC 报告,我在前端应用程序的报告查看器控件上显示它。我能够完美地查看报告。

但是当我尝试将报告导出为 PDF 时出现问题(使用内置选项)。

我将报告打印成 3 页,而我的客户希望它在一页中。我无法弄清楚原因,因为在我的报告查看器中我只看到一页,但在 PDF 中有 3 页。

可以做些什么来控制报告的大小吗?

4

4 回答 4

79

答案与杜根所说的非常相似,但并不总是只是利润。这很简单:

在设计模式下编辑 rdlc 文件时,首先单击设计的 BODY 区域的空白部分。按 F4 查看属性选项卡。在这里,您将看到“大小”属性。这可以扩展为宽度和高度。您在此处看到的宽度表示报表正文作为可打印区域所需的宽度。即使您到处都是空白区域,页面也知道它需要将其保留为可打印区域。从某种意义上说,它保留了空间。至于高度,系统通常知道它可以根据需要增长或缩小,除非您在其中的控件中另有指定。所以宽度通常是最重要的。

接下来,单击报表的空白区域(在页眉、正文和页脚之外;基本上是设计周围的灰色区域),然后按 F4 以查看属性面板。在属性的“布局”类别下,您将看到 3 个不同的选项:InteractiveSize、Margins、PageSize。每个大小属性都可以展开以显示宽度和高度。Margins 属性可以扩展为左/右/上/下。

基本上,pdf 导出不受 PageSize 的影响(尽管我通常会尝试保持 Interactive 和 Page size 相等)。当通过 ReportViewer 的内置导出功能呈现 pdf 文件时,pdf 中每个“页面”的宽度和高度将由报告的 PageSize 属性中的宽度和高度确定(如果您使用自己的,可以覆盖它) pdf 渲染的自定义代码)。至于边距,它们指定在为报表保留的可打印区域和页面边缘之间必须留有多少空白和不可打印的空间。

换句话说:您的报告正文的宽度,加上报告的左边距,加上报告的右边距,必须小于或等于报告的 PageSize 的宽度!

所以...如果您的边距太宽,或者如果您的报告正文太宽,或者如果 PageSize 的宽度太窄,则渲染结果将被迫分解为多个页面以适应!

例如:如果我的报告正文的宽度为 7.75",我的左边距为 0.5",我的右边距为 0.5",并且在 PageSize 中指定的宽度为 8.5",我的报告将始终使用每 1 页数据使用 2 页. 正文的 7.75" 宽度,加上边距的 0.5"+0.5" 加起来为 8.75",比我页面中可用的 8.5" 大。所以我报告的每页的前 7.5"(左右)正文将显示在第一页,其余的将拆分到下一页。这不会在报表查看器中完成,因为它允许报表通过添加滚动条来超出页面大小,但在 pdf 导出中会很烦人。为了使我的示例报告适合 1 页,我可以尝试将我的报告正文减少到 7.5 英寸或更小,或者我可以将左右边距总共减少 0.25 英寸或更多(例如,将它们设置为 0.3 英寸,总共减少 0.4 英寸),或者我可以将 PageSize 增加到大于 8.75 英寸的值。注意:Acrobat Reader 非常智能,并且知道各种纸张尺寸。因此,尽管可以使用任意 PageSizes,但通常最好使用实际页面大小。因此,在我的最后一个示例中,我宁愿将 PageSize 设置为 Width = 11" 和 Height = 8.5",这是横向的真正字母大小!Adobe 通常会理解这一点并正确打印。另请注意:某些打印机,尤其是较旧的打印机,在打印边距小于 0.3" 时会遇到问题。如果您想对用户友好,最好为那些较旧的打印机保持足够大的边距;)3" 总共减少 0.4"),或者我可以将 PageSize 增加到大于 8.75"。注意:Acrobat Reader 非常聪明,并且知道各种纸张尺寸。因此,虽然任意 PageSize 都可以工作,但通常最好使用真实的页面大小。因此,在我的最后一个示例中,我宁愿将 PageSize 设置为 Width = 11" 和 Height = 8.5",这是横向的真正字母大小!Adobe 通常会理解这一点并正确打印。另请注意:某些打印机,尤其是较旧的打印机,在打印边距小于 0.3" 时会遇到问题。如果您想对您的用户友好,您最好为那些旧打印机保持足够大的边距;)3" 总共减少 0.4"),或者我可以将 PageSize 增加到大于 8.75"。注意:Acrobat Reader 非常聪明,并且知道各种纸张尺寸。因此,虽然任意 PageSize 都可以工作,但通常最好使用真实的页面大小。因此,在我的最后一个示例中,我宁愿将 PageSize 设置为 Width = 11" 和 Height = 8.5",这是横向的真正字母大小!Adobe 通常会理解这一点并正确打印。另请注意:某些打印机,尤其是较旧的打印机,在打印边距小于 0.3" 时会遇到问题。如果您想对您的用户友好,您最好为那些旧打印机保持足够大的边距;)Acrobat Reader 非常聪明,并且知道各种纸张尺寸。因此,尽管可以使用任意 PageSizes,但通常最好使用实际页面大小。因此,在我的最后一个示例中,我宁愿将 PageSize 设置为 Width = 11" 和 Height = 8.5",这是横向的真正字母大小!Adobe 通常会理解这一点并正确打印。另请注意:某些打印机,尤其是较旧的打印机,在打印边距小于 0.3" 时会遇到问题。如果您想对用户友好,最好为那些较旧的打印机保持足够大的边距;)Acrobat Reader 非常聪明,并且知道各种纸张尺寸。因此,尽管可以使用任意 PageSizes,但通常最好使用实际页面大小。因此,在我的最后一个示例中,我宁愿将 PageSize 设置为 Width = 11" 和 Height = 8.5",这是横向的真正字母大小!Adobe 通常会理解这一点并正确打印。另请注意:某些打印机,尤其是较旧的打印机,在打印边距小于 0.3" 时会遇到问题。如果您想对用户友好,最好为那些较旧的打印机保持足够大的边距;)这是横向的真正字母大小!Adobe 通常会理解这一点并正确打印。另请注意:某些打印机,尤其是较旧的打印机,在打印边距小于 0.3" 时会遇到问题。如果您想对用户友好,最好为那些较旧的打印机保持足够大的边距;)这是横向的真正字母大小!Adobe 通常会理解这一点并正确打印。另请注意:某些打印机,尤其是较旧的打印机,在打印边距小于 0.3" 时会遇到问题。如果您想对用户友好,最好为那些较旧的打印机保持足够大的边距;)

我希望这有帮助。

于 2009-06-25T20:02:20.897 回答
7

始终保持体宽:7.5以下

Left, Right Margin width 小于 0.5 先设置 Margin 宽度 -> 进入主菜单 Reports->Report Properties->Layout->change left margin and right margin

总页宽:8.5

拉玛那

于 2009-08-20T09:14:01.860 回答
5

除了观察你的宽度之外,我还发现了其他不相关的东西,这些东西可能会导致 PDF 中出现额外的空白页。

如果 tablix 有任何带自动换行的字段,这可能会导致它。如果您有长数据,您可能希望使字体更小。使字体大小属性等于以下内容:

  =iif(len(Fields!RepGroupName.Value) > 25, "6pt","8pt")

您可能需要做的另一件事。当我没有明显的理由需要额外的页面时,这对我很有帮助。在 Report 属性页中,设置:ConsumeContainerWhitespace = true

还有一件事要注意。在更改布局时,身体大小可能会在您不知情的情况下增长。您可能不得不再次将其击倒。

如果没有解决,这个问题对最终用户来说是非常烦人的,而且对于我们来说也很烦人。

于 2011-10-13T05:44:59.063 回答
2

万一其他人遇到此问题并最终出现在此处,则很可能是您的利润有问题。如果边距设置不正确,当您尝试打印时,通常会出现“额外”页面,而当您查看文档时,一切都很好。

于 2009-03-19T20:05:10.917 回答