在水晶报表中以编程方式设置页边距

时间:2015-07-15 09:11:02

标签: c# crystal-reports margin

我使用水晶报告作为我的一份报告。我需要为报告动态设置边距。边距由用户设置,因此我需要以编程方式应用边距。

我使用以下代码以编程方式设置边距。

ReportDocument rd = new ReportDocument();
PageMargins pageMargins = new PageMargins();
pageMargins.leftMargin = 25;
pageMargins.topMargin = 100;
pageMargins.rightMargin = 25;
pageMargins.bottomMargin = 50;
rd.PrintOptions.ApplyPageMargins(pageMargins);

然后向用户显示打印预览,然后用户可以打印。我使用下面的代码来显示预览。

Response.Buffer = false;
Response.ClearHeaders();
Response.ClearContent();
rd.ExportToHttpResponse(ExportFormatType.PortableDocFormat, System.Web.HttpContext.Current.Response, false, "Print");

以上不适合我。它不适用边距(当我从设计 - >页面设置静态设置边距时,这同样适用)。它显示内容,就好像动态使用时不应用边距。我附上了图片,看它是如何显示为预览的。

Preview of report

任何人都可以帮我解决可能出现的问题吗?为什么没有应用保证金?

1 个答案:

答案 0 :(得分:0)

我找到了解决这个问题的方法。我之前使用的代码只有一点变化。我使用下面的代码。

ReportDocument rd = new ReportDocument();
PageMargins margins;
// Get the PageMargins structure and set the 
// margins for the report.
margins = rd.PrintOptions.PageMargins;
margins.bottomMargin = 350;
margins.leftMargin = 600;
margins.rightMargin = 350;
margins.topMargin = 300;
// Apply the page margins.
rd.PrintOptions.ApplyPageMargins(margins);

所以上面的工作正常。我们只需要获取报表文档页边距并设置边距而不是 PageMargins 对象的新初始化。