ASP.Net имеет серверный элемент управления ReportViewer
, который можно использовать для отображения файлов PDF.
Большая часть документации об этой функции посвящена тому, как создать отчет и экспортировать его в PDF. MSDN действительно не очень помогает.Я полагаю, что все полагаются на Adobe Reader и не ищут альтернативы?
Но возможно также импортировать и отобразить PDF .Казалось, этот код работает для этого пользователя :
public static void RenderToPdf(ReportViewer reportViewer, Boolean forceDownload)
{
string path = (string.IsNullOrEmpty(reportViewer.LocalReport.ReportPath)) ? reportViewer.ServerReport.ReportPath : reportViewer.LocalReport.ReportPath;
RenderToPdf(reportViewer, forceDownload, System.IO.Path.GetFileNameWithoutExtension(path));
}
public static void RenderToPdf(ReportViewer reportViewer, Boolean forceDownload, string fileNameWithoutExtension)
{
HttpContext context = HttpContext.Current;
if (!context.Response.Buffer)
{
return; //can not clear the buffer, so exit
}
//define out properties
Warning[] warnings;
string mimeType, encoding, fileNameExtension;
string[] streams;
//get pdf content
Byte[] pdfContent = reportViewer.LocalReport.Render("PDF", null, out mimeType, out encoding, out fileNameExtension, out streams, out warnings);
//cancel and clear the existing output!
context.Response.Clear();
context.Response.ContentType = "application/pdf";
//add a header so that the user can save the target as a downloaded file
if (forceDownload)
{
context.Response.AddHeader("Content-disposition", string.Format("attachment; filename={0}.pdf", fileNameWithoutExtension));
}
context.Response.BinaryWrite(pdfContent);
context.Response.End();
}