使用iTextSharp将动态cshtml转换为pdf?

时间:2016-01-20 10:06:05

标签: asp.net-mvc-4 pdf-generation itextsharp

我使用Rotativa将html转换为pdf。我的目标是将收据作为pdf发送给客户emailid。它在本地运行良好,但部署在GoDaddy Server时不受支持。所以我打算用iTextSharp生成pdf(也邀请观众意见)。

为在Rotativa中生成pdf而编写的代码:

 public ActionResult GetPdfReceipt(int RegId)
 {
    var actionPDF = new Rotativa.ActionAsPdf("GetPdfReceipt", new { RegId = regId })
    {
      FileName = "Receipt.pdf"
    };
     //Dynamic student receipt pdf
     var byteArrayDynamic = actionPDF.BuildPdf(ControllerContext);
 }

 public ActionResult GetPdfReceipt(int RegId)
 {
    try
    {
        var _mdlReceiptPdf = new ReceiptPdfVM
        {
                ...
                ...
        };
        return View("Receipts", _mdlReceiptPdf);
    }
    catch (Exception ex)
    {
        return View("");
    }
}

我已经浏览了一些使用iTextSharp生成pdf的代码,如下所示

HttpContext.Current.Response.Clear();
        HttpContext.Current.Response.Buffer = true;
        HttpContext.Current.Response.Charset = "";
        HttpContext.Current.Response.ContentType = "application/pdf";

        HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=LoginReportPerDay.pdf");
        StringWriter sWriter = new StringWriter();
        HtmlTextWriter hTWriter = new HtmlTextWriter(sWriter);

        GridView1.RenderControl(hTWriter);
        StringReader sReader = new StringReader(sWriter.ToString());
        Document pdf = new Document(PageSize.A4);
        HTMLWorker worker = new HTMLWorker(pdf);
        PdfWriter.GetInstance(pdf, HttpContext.Current.Response.OutputStream);
        pdf.Open();
        worker.Parse(sReader);
        pdf.Close();
        HttpContext.Current.Response.Write(pdf);
        HttpContext.Current.Response.Flush();
        HttpContext.Current.Response.End();

如何使用上面的代码渲染动态生成的Receipt View pdf数组字节。

0 个答案:

没有答案