2016-03-22 18 views
0

mvcでitextsharpを使用してhtmlファイルをpdfに変換しています。私はこのリンクを参照しました。 http://www.rswebsols.com/tutorials/programming/asp-net-generate-pdf-html-itextsharp このメソッドでは、文字列pHTMLをパラメータとして渡しています。私はこれを取得していない? htmlを文字列形式に変換する必要がありますか?その文字列をgetpdfメソッドに渡す必要がありますか?どのようにhtmlを文字列に変換できますか?私はhtmlドキュメントのパスを持っています。mvc4でitextsharpを使用してhtmlファイルをpdfに変換する方法

+0

この例では、廃止予定の 'HTMLWorker'を使用しています。公式のドキュメントを参照し、 'XMLWorker'を使用してください。 –

答えて

0
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.IO; 

using System.Data; 
using iTextSharp.text; 
using iTextSharp.text.html.simpleparser; 
using iTextSharp.text.pdf; 

namespace HTMLtoPDF 
{ 
    public partial class ConvertHTMLtoPDF : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 

     } 

     protected void btnClick_Click(object sender, EventArgs e) 
     { 
      DownloadAsPDF(); 
     } 

     public void DownloadAsPDF() 
     { 
      try 
      { 
       string strHtml = string.Empty; 
       string pdfFileName = Request.PhysicalApplicationPath + "\\files\\" + "GenerateHTMLTOPDF.pdf"; 

       StringWriter sw = new StringWriter(); 
       HtmlTextWriter hw = new HtmlTextWriter(sw); 
       dvHtml.RenderControl(hw); 
       StringReader sr = new StringReader(sw.ToString()); 
       strHtml = sr.ReadToEnd(); 
       sr.Close(); 

       CreatePDFFromHTMLFile(strHtml, pdfFileName); 

       Response.ContentType = "application/x-download"; 
       Response.AddHeader("Content-Disposition", string.Format("attachment; filename=\"{0}\"", "GenerateHTMLTOPDF.pdf")); 
       Response.WriteFile(pdfFileName); 
       Response.Flush(); 
       Response.End(); 
      } 
      catch (Exception ex) 
      { 
       Response.Write(ex.Message); 
      } 
     } 

     public void CreatePDFFromHTMLFile(string HtmlStream, string FileName) 
     { 
      try 
      { 
       object TargetFile = FileName; 
       string ModifiedFileName = string.Empty; 
       string FinalFileName = string.Empty; 


       GeneratePDF.HtmlToPdfBuilder builder = new GeneratePDF.HtmlToPdfBuilder(iTextSharp.text.PageSize.A4); 
       GeneratePDF.HtmlPdfPage first = builder.AddPage(); 
       first.AppendHtml(HtmlStream); 
       byte[] file = builder.RenderPdf(); 
       File.WriteAllBytes(TargetFile.ToString(), file); 

       iTextSharp.text.pdf.PdfReader reader = new iTextSharp.text.pdf.PdfReader(TargetFile.ToString()); 
       ModifiedFileName = TargetFile.ToString(); 
       ModifiedFileName = ModifiedFileName.Insert(ModifiedFileName.Length - 4, "1"); 

       iTextSharp.text.pdf.PdfEncryptor.Encrypt(reader, new FileStream(ModifiedFileName, FileMode.Append), iTextSharp.text.pdf.PdfWriter.STRENGTH128BITS, "", "", iTextSharp.text.pdf.PdfWriter.AllowPrinting); 
       reader.Close(); 
       if (File.Exists(TargetFile.ToString())) 
        File.Delete(TargetFile.ToString()); 
       FinalFileName = ModifiedFileName.Remove(ModifiedFileName.Length - 5, 1); 
       File.Copy(ModifiedFileName, FinalFileName); 
       if (File.Exists(ModifiedFileName)) 
        File.Delete(ModifiedFileName); 

      } 
      catch (Exception ex) 
      { 
       throw ex; 
      } 
     } 
    } 
} 
+0

これをmvc4で使用できますか?私はmvcで同じコードを書くとき、HtmlTextWriter、Response、GeneratePDFでエラーが発生していますか? – Niranjan

関連する問題