ReportViewer 呈现一个空的 PDF(只有一个白页)
ReportViewer rendering a empty PDF (Just one white page)
我有一个 Asp.Net MVC 4 项目,我正在使用 ReportViewer 生成一些报告。
因为在 MVC 中与 ReportViewer 的兼容性较低或 none,使用 Chrome 和 Firefox,我的方法是在 PDF 流中呈现 ReportViewer 并像这样简单地返回流:
// using Microsoft.ReportViewer.WebForms.dll [10.0.0.0].
using (var viewer = new ReportViewer())
using (var bc = new MyBusinessClass())
{
viewer.LocalReport.ReportEmbeddedResource = @"MyEmbeddedName";
var dsobj = bc.GetData();
var ds = new ReportDataSource("DsName", dsobj);
var ps = new ReportParameterCollection();
ps.Add(new ReportParameter("ParameterName", DateTime.Now));
viewer.LocalReport.DataSources.Add(ds);
viewer.LocalReport.SetParameters(ps);
string deviceInfo = "some validated info";
string mimeType, encoding, fileNameExtension;
string[] streams;
Warning[] warnings;
var buffer = viewer.LocalReport.Render("PDF", deviceInfo,
out mimeType, out encoding, out fileNameExtension,
out streams, out warnings);
return File(new MemoryStream(buffer), "application/pdf", "MyPdfName.pdf");
}
我已经有一些报告并且都呈现良好。但是现在我正在使用相同的方法创建一个新的,但是当我打开操作时,PDF 是空的,即它只有一页,并且此页中没有任何内容(空白)。
但是,如果这还不够奇怪,现在我使用 IE(9) 作为浏览器对其进行了测试,报告呈现良好,所以我决定在 FireFox 中尝试,但也一无所获。
问题:
所以这就是我不明白的地方,我在返回之前以 PDF 格式呈现所以为什么浏览器会影响它?
是否可以强制 ReportViewer 在出现问题时抛出异常?因为现在,不要只得到一个空白页面的错误。
最重要的是,我该如何解决这个问题(在 Chrome 中工作)?
这似乎是 Chrome 最新版本中的错误。它于 2015 年 10 月 14 日报道,似乎已在最近的版本中得到修复。
对我来说,更新到 Chrome 46.0.2490.80 解决了这个问题。
来源:https://code.google.com/p/chromium/issues/detail?id=543018
我有一个 Asp.Net MVC 4 项目,我正在使用 ReportViewer 生成一些报告。
因为在 MVC 中与 ReportViewer 的兼容性较低或 none,使用 Chrome 和 Firefox,我的方法是在 PDF 流中呈现 ReportViewer 并像这样简单地返回流:
// using Microsoft.ReportViewer.WebForms.dll [10.0.0.0].
using (var viewer = new ReportViewer())
using (var bc = new MyBusinessClass())
{
viewer.LocalReport.ReportEmbeddedResource = @"MyEmbeddedName";
var dsobj = bc.GetData();
var ds = new ReportDataSource("DsName", dsobj);
var ps = new ReportParameterCollection();
ps.Add(new ReportParameter("ParameterName", DateTime.Now));
viewer.LocalReport.DataSources.Add(ds);
viewer.LocalReport.SetParameters(ps);
string deviceInfo = "some validated info";
string mimeType, encoding, fileNameExtension;
string[] streams;
Warning[] warnings;
var buffer = viewer.LocalReport.Render("PDF", deviceInfo,
out mimeType, out encoding, out fileNameExtension,
out streams, out warnings);
return File(new MemoryStream(buffer), "application/pdf", "MyPdfName.pdf");
}
我已经有一些报告并且都呈现良好。但是现在我正在使用相同的方法创建一个新的,但是当我打开操作时,PDF 是空的,即它只有一页,并且此页中没有任何内容(空白)。
但是,如果这还不够奇怪,现在我使用 IE(9) 作为浏览器对其进行了测试,报告呈现良好,所以我决定在 FireFox 中尝试,但也一无所获。
问题:
所以这就是我不明白的地方,我在返回之前以 PDF 格式呈现所以为什么浏览器会影响它?
是否可以强制 ReportViewer 在出现问题时抛出异常?因为现在,不要只得到一个空白页面的错误。
最重要的是,我该如何解决这个问题(在 Chrome 中工作)?
这似乎是 Chrome 最新版本中的错误。它于 2015 年 10 月 14 日报道,似乎已在最近的版本中得到修复。
对我来说,更新到 Chrome 46.0.2490.80 解决了这个问题。
来源:https://code.google.com/p/chromium/issues/detail?id=543018