2017-04-19 78 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进行适当的分配,然后运行由我提供的代码。 –