69 lines
2.5 KiB
C#
69 lines
2.5 KiB
C#
// --------------------------------------------------------------------------------------------------------------------
|
|
// <copyright file="PdfViewController.cs" company="SemanticArchitecture">
|
|
// http://www.SemanticArchitecture.net pkalkie@gmail.com
|
|
// </copyright>
|
|
// <summary>
|
|
// Extends the controller with functionality for rendering PDF views
|
|
// </summary>
|
|
// --------------------------------------------------------------------------------------------------------------------
|
|
|
|
namespace Fab2ApprovalSystem.PdfGenerator
|
|
{
|
|
using System.Web.Mvc;
|
|
using System.IO;
|
|
|
|
/// <summary>
|
|
/// Extends the controller with functionality for rendering PDF views
|
|
/// </summary>
|
|
public class PdfViewController : Controller
|
|
{
|
|
private readonly HtmlViewRenderer htmlViewRenderer;
|
|
private readonly StandardPdfRenderer standardPdfRenderer;
|
|
|
|
public PdfViewController()
|
|
{
|
|
this.htmlViewRenderer = new HtmlViewRenderer();
|
|
this.standardPdfRenderer = new StandardPdfRenderer();
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="pageTitle"></param>
|
|
/// <param name="viewName"></param>
|
|
/// <param name="model"></param>
|
|
/// <returns></returns>
|
|
protected ActionResult ViewPdf(string pageTitle, string viewName, object model)
|
|
{
|
|
// Render the view html to a string.
|
|
string htmlText = this.htmlViewRenderer.RenderViewToString(this, viewName, model);
|
|
|
|
// Let the html be rendered into a PDF document through iTextSharp.
|
|
byte[] buffer = standardPdfRenderer.Render(htmlText, pageTitle);
|
|
|
|
// Return the PDF as a binary stream to the client.
|
|
return new BinaryContentResult(buffer, "application/pdf");
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="fileName"></param>
|
|
/// <param name="viewName"></param>
|
|
/// <param name="model"></param>
|
|
protected void SavePdf(string fileName, string viewName, object model)
|
|
{
|
|
// Render the view html to a string.
|
|
string htmlText = this.htmlViewRenderer.RenderViewToString(this, viewName, model);
|
|
|
|
// Let the html be rendered into a PDF document through iTextSharp.
|
|
byte[] buffer = standardPdfRenderer.Render(htmlText, "");
|
|
|
|
using (FileStream fs = new FileStream(fileName, FileMode.Create))
|
|
{
|
|
fs.Write(buffer, 0, buffer.Length);
|
|
}
|
|
|
|
}
|
|
}
|
|
} |