2014-01-09 58 views
0

我有一個htm頁面來安排位置以便將aspx網頁導出爲pdf。這裏是代碼:使用htm將aspx網頁導出爲pdf

<form id="form1" runat="server"> 
<div> 
<h1>Packaging Slip</h1> 
    <table> 
     <tr> 
      <td>Packing Date</td> 
      <td>[PACKINGDATE]</td> 
     </tr> 
     <tr> 
      <td>Delivery Date</td> 
      <td>[DELIVERYDATE]</td> 
     </tr> 
     <tr> 
      <td>Beneficiary Name</td> 
      <td>[BENEFICIARYNAME]</td> 
     </tr> 
     <tr> 
      <td colspan ="2">[ADDRESS]</td> 
     </tr> 
     <tr> 
      <td>Mobile</td> 
      <td>[MOBILE]</td> 
     </tr> 
     <tr> 
      <td>Contact(Work)</td> 
      <td>[CONTACTWORK]</td> 
     </tr> 
     <tr> 
      <td>Fax</td> 
      <td>[FAX]</td> 
     </tr> 
    </table> 
    [ITEMS] 
</div> 
</form> 

[ITEM]我應該用網格視圖替換稍後。這裏是代碼爲我的PDF導出:

// Create a Document object 
     var document = new Document(PageSize.A4, 50, 50, 25, 25); 

     // Create a new PdfWriter object, specifying the output stream 
     var output = new MemoryStream(); 
     var writer = PdfWriter.GetInstance(document, output); 

     // Open the Document for writing 
     document.Open(); 

     string contents = File.ReadAllText(Server.MapPath("~/FoodBankSystem/Distributions/Packing/PackagingSlip.htm")); 

     // Replace the placeholders with the user-specified text 
     contents = contents.Replace("[PACKINGDATE]", lblPackDate.Text); 
     contents = contents.Replace("[DELIVERYDATE]", lblDeliveryDate.Text); 
     contents = contents.Replace("[BENEFICIARYNAME]", lblBeneficiaryName.Text); 
     contents = contents.Replace("[ADDRESS]", lblAddress.Text); 
     contents = contents.Replace("[MOBILE]", lblContactMobile.Text); 
     contents = contents.Replace("[CONTACTWORK]", lblWorkContact.Text); 
     contents = contents.Replace("[FAX]", lblFax.Text); 

     // Step 4: Parse the HTML string into a collection of elements... 
     var parsedHtmlElements = HTMLWorker.ParseToList(new StringReader(contents), null); 

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

     document.Close(); 

     Response.ContentType = "application/pdf"; 
     Response.AddHeader("content-disposition", "inline;filename=UserDetails.pdf"); 
     Response.BinaryWrite(output.ToArray()); 

然而,對於[項目]的一部分,我不知道如何循環的。有人可以發佈一些例子嗎?提前致謝。

+0

對於[項目]您需要根據項目數據和列生成代碼隱藏的HTML表格,並將其替換爲TAG –

+0

您想介紹一些示例嗎?所以我可以從那裏工作我的部分 –

+0

好吧讓我創建它並將其提供給您 –

回答

1

對於[項目]您需要的背後根據項目數據和列生成HTML表的代碼,並將其此標記

  DataTable dt = new DataTable(); 
      dt.Columns.Add("Item"); 
      dt.Columns.Add("Description"); 
      dt.Columns.Add("QTY"); 

      for(int i=0;i<10;i++) 
      { 

       DataRow dr = dt.NewRow(); 
       dr["Item"] = "Item" + i.ToString(); 
       dr["Description"] = "Test" + i.ToString(); 
       dr["QTY"] = i.ToString(); 
       dt.Rows.Add(dr); 
      } 


      string data = "<table border=1>"; 
      data += "<TR>"; 
      data += "<TD>Item</TD>"; 
      data += "<TD>Description</TD>"; 
      data += "<TD>QTY</TD>"; 
      data += "</TR>"; 
      foreach(DataRow dr1 in dt.Rows) 
      { 
       data += "<TR>"; 
       data += "<TD>" + dr1["Item"].ToString() + "</TD>"; 
       data += "<TD>" + dr1["Description"].ToString() + "</TD>"; 
       data += "<TD>" + dr1["QTY"].ToString() + "</TD>"; 
       data += "</TR>"; 
      } 
      data += "</table>"; 


contents = contents.Replace("[ITEMS]", data); 

你只需要使用[項目]標籤來代替「數據」變量。

+0

你是什麼意思,用[ITEM]標籤替換「數據」變量?它是否將所有「數據」更改爲[ITEM]?例如,字符串[ITEM] =「

」; –

+0

[ITEMS]不是[ITEM]在您的HTML模板中與此代碼內容相同= contents.Replace(「[ITEMS]」,data); –

+0

我已更新答案 –