2017-04-19 42 views
0

您好,我想一個HTML表格導出爲PDF與HTML表格的格式完全相同asp.net(應用在HTML表格樣式手段)。我的代碼是無法HTML表導出爲PDF格式完全相同

string html = Request.Form["Table_HTML"]; 
StringReader sr = new StringReader(html); 
       Document pdfDoc = new Document(PageSize.A4.Rotate(), 2f, 2f, 2f, 2f); 
       HTMLWorker htmlparser = new HTMLWorker(pdfDoc); 
       PdfWriter writer = PdfWriter.GetInstance(pdfDoc, Response.OutputStream); 
       pdfDoc.Open(); 
       htmlparser.Parse(sr); 
       pdfDoc.Close(); 
       Response.ContentType = "application/pdf"; 
       Response.AddHeader("content-disposition", "attachment;filename=Production_Report.pdf"); 
       Response.Cache.SetCacheability(HttpCacheability.NoCache); 
       Response.Write(pdfDoc); 
       Response.End(); 

    <div id="dvTable"> 
    <table style="border:1px solid red;"> 
    <tr><td colspan="2" style="border:1px solid red;"></td><td>Hours</td><td>Studies</td><td>Hrs/Studies</td></tr> 
    <tr><td rowspan="3">APAC</td><td>Scripting</td><td><%=APAC_h_scri%></td><td><%=APAC_s_scri%></td><td><%=APAC_a_scri %></td></tr> 
    <tr><td>DP</td><td><%=APAC_h_DP%></td><td><%=APAC_s_DP%></td><td><%=APAC_a_DP %></td></tr> 
    <tr><td>Tabs</td><td><%=APAC_h_Tab%></td><td><%=APAC_s_Tab%></td><td><%=APAC_a_Tab%></td></tr> 
    </table> 
    </div> 

但我無法導出表與格式。 它看起來像 enter image description here

我查詢我的表看起來像 enter image description here

在PDF導出之後,我需要的格式相同等作爲HTML表的表至少邊境。

+0

看看這個[http://stackoverflow.com/questions/19877873/export-html-to-pdf-in-asp-net?rq=1](http://stackoverflow.com/questions/ 19877873/export-html-pdf-in-asp-net?rq = 1) – TheRuler

+0

請不要使用HTMLWorker。改用「XMLWorker」。 –

回答

0

同樣的問題我在項目中遇到過一個問題。

使用此邏輯做出正確對齊的HTML文檔

 var pagesize = new iTextSharp.text.Rectangle(iTextSharp.text.PageSize.A4); 

     //Set Background color of pdf  
     pagesize.BackgroundColor = iTextSharp.text.BaseColor.WHITE; 

     var left_margin = 25; 
     var top_margin = 25; 
     var bottom_margin = 25; 

     iTextSharp.text.Document doc = new iTextSharp.text.Document(pagesize, left_margin, 10, top_margin, bottom_margin); 

     string filePath = "D:\\myTask\\"; 
     string tempFileName = "tempXmlToWebPdf.pdf"; 
     string finalFileName = "XmlToWebPdf.pdf"; 

     string tempFilePath = filePath + tempFileName; 
     string finalFilePath = filePath + finalFileName; 


     if (!Directory.Exists(filePath)) 
     { 
      Directory.CreateDirectory(filePath); 
     } 

     try 
     { 

      PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(tempFilePath, FileMode.Create)); 

      iTextSharp.text.Font mainFont = new iTextSharp.text.Font(); 
      iTextSharp.text.Font boldFont = new iTextSharp.text.Font(); 

      mainFont = FontFactory.GetFont("Arial", 10, iTextSharp.text.Font.NORMAL, new iTextSharp.text.BaseColor(System.Drawing.ColorTranslator.FromHtml("#000000"))); 
      boldFont = FontFactory.GetFont("Arial", 12, iTextSharp.text.Font.BOLD); 

      Paragraph para = new Paragraph(); 

      // Read in the contents of the Receipt.htm file... 
      string contents = System.IO.File.ReadAllText(Server.MapPath("~/Design/Template.html")); 

      // Replace the placeholders with the user-specified text 
      contents = contents.Replace("@FirstName", Model.FirstName); 
      contents = contents.Replace("@CourseName", Model.CourseName); 
      contents = contents.Replace("@Score", Convert.ToString(Model.Score)); 
      string date = DateTime.Now.Day + "/" + DateTime.Now.Month + "/" + DateTime.Now.Year; 
      contents = contents.Replace("@Date", date); 
      contents = contents.Replace("@Path1", Server.MapPath("~/Content/Frontendcss/assets/Icon/elearning-logo.png").ToString()); 
      contents = contents.Replace("@Path2", Server.MapPath("~/Content/Frontendcss/assets/images/x.jpg").ToString()); 


      doc.Open(); 

      var titleFont = FontFactory.GetFont("Arial", 18, Font.BOLD); 
      var subTitleFont = FontFactory.GetFont("Arial", 14, Font.BOLD); 
      var boldTableFont = FontFactory.GetFont("Arial", 12, Font.BOLD); 
      var endingMessageFont = FontFactory.GetFont("Arial", 10, Font.ITALIC); 
      var bodyFont = FontFactory.GetFont("Arial", 12, Font.NORMAL); 

      var parsedHtmlElements = HTMLWorker.ParseToList(new StringReader(contents), null); 

      // Enumerate the elements, adding each one to the Document... 
      foreach (var htmlElement in parsedHtmlElements) 
       doc.Add(htmlElement as IElement); 

      //var logo = iTextSharp.text.Image.GetInstance(Server.MapPath("~/Content/Frontendcss/assets/Icon/elearning-logo.png")); 
      //logo.SetAbsolutePosition(20, 20); 
      //doc.Add(logo); 

      //doc.Add(new Paragraph("Northwind Traders Receipt", titleFont)); 


      //var orderInfoTable = new PdfPTable(2); 
      //orderInfoTable.HorizontalAlignment = 0; 
      //orderInfoTable.SpacingBefore = 10; 
      //orderInfoTable.SpacingAfter = 10; 
      //orderInfoTable.DefaultCell.Border = 0; 
      //orderInfoTable.SetWidths(new int[] { 1, 4 }); 

      //orderInfoTable.AddCell(new Phrase("Order:", boldTableFont)); 
      //orderInfoTable.AddCell(Model.CourseName); 
      //orderInfoTable.AddCell(new Phrase("Price:", boldTableFont)); 
      //orderInfoTable.AddCell(Convert.ToString(Model.Score)); 

      //doc.Add(orderInfoTable); 

      doc.Close(); 

     } 
     catch (Exception Ex) 
     { 
      throw Ex; 
     } 


     Response.AddHeader("Content-Disposition", "attachment;filename=eLearningCertificate.pdf"); 
     Response.ContentType = "application/pdf"; 
     Response.TransmitFile(tempFilePath); 
     Response.End(); 

我相信這會爲你的作品!

+0

hi代碼正常工作。我通過代碼得到了相同的結果,就像我通過代碼得到的結果一樣。但我的問題是,當我出口PDF,然後我沒有格式的表,如我在圖像中提到的。我需要在pdf格式的導出表格中像HTML表格一樣。 –

+0

是的,我得到了你的問題。 您可以將您的HTML文件存儲在單獨的文件夾中。 應用css進行適當的分配,然後運行由我提供的代碼。 –