2012-10-31 17 views
3

我開發了一個網頁,允許用戶輸入值,就像註冊表單一樣。在保存數據時,我需要給出用於將頁面下載爲PDF格式的選項。如何將ASP.NET頁面轉換爲PDF並下載相同(值不是靜態的)

我試過如下:

  1. 我嘗試使用iTextSharp的DLL。問題是我沒有得到PDF文件中的所有內容。示例圖像和樣式未正確轉換。
  2. 我嘗試了一些第三方工具,如(SautinSoft的PdfVision,ConvertApi,pdfcrowd)程序集。所有的DLL都獲取URL作爲參數並轉換爲PDF。通過這種方式,服務器端的HTML代碼被轉換爲PDF。我輸入的值不在PDF中。

我從網絡(sautinsoft)獲得的示例代碼。

SautinSoft.PdfVision v = new SautinSoft.PdfVision(); 
     v.PageStyle.PageSize.Letter(); 
     byte[] pdf = v.ConvertHtmlFileToPDFStream(@"http://en.wikipedia.org/wiki/Main_Page"); 
     if (pdf != null) 
     { 
      Response.Buffer = true; 
      Response.Clear(); 
      Response.ContentType = "application/PDF"; 
      Response.AddHeader("Content-Disposition:", "attachment; filename=Result.pdf"); 
      Response.BinaryWrite(pdf); 
      Response.Flush(); 
      Response.End(); 
     } 

爲(iTextSharp的)

protected override void Render(HtmlTextWriter writer) 
{ 
MemoryStream mem = new MemoryStream(); 
StreamWriter twr = new StreamWriter(mem); 
HtmlTextWriter myWriter = new HtmlTextWriter(twr); 
base.Render(myWriter); 
myWriter.Flush(); 
myWriter.Dispose(); 
StreamReader strmRdr = new StreamReader(mem); 
strmRdr.BaseStream.Position = 0; 
string pageContent = strmRdr.ReadToEnd(); 
strmRdr.Dispose(); 
mem.Dispose(); 
writer.Write(pageContent); 
CreatePDFDocument(pageContent); 


} 

public void CreatePDFDocument(string strHtml) 
{ 

string strFileName = HttpContext.Current.Server.MapPath("test.pdf"); 
// step 1: creation of a document-object 
Document document = new Document(); 
// step 2: 
// we create a writer that listens to the document 
PdfWriter.GetInstance(document, new FileStream(strFileName, FileMode.Create)); 
StringReader se = new StringReader(strHtml); 
HTMLWorker obj = new HTMLWorker(document); 
document.Open(); 
obj.Parse(se); 
document.Close(); 
ShowPdf(strFileName); 


} 

public void ShowPdf(string strFileName) 
{ 
Response.ClearContent(); 
Response.ClearHeaders(); 
Response.AddHeader("Content-Disposition", "inline;filename=" + strFileName); 
Response.ContentType = "application/pdf"; 
Response.WriteFile(strFileName); 
Response.Flush(); 
Response.Clear(); 
} 

讓我知道,如果你有更好的解決辦法。

回答

0

在我們已經支付牌照以前的工作教程你可以試試這個庫對於Persits Software AspPDF.NET(和「經典」AspPDF)來說非常合適。如果CSS沒有應用或圖像被遺漏在PDF之外沒有問題 - 儘管太公平了,但我們從未使用任何可能被認爲是「高級」CSS的東西。我認爲你可以嘗試一個免費的演示程序,將水印你製作的PDF文件,直到你購買&申請一個註冊碼。

相關問題