2012-10-31 18 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文件,直到你购买&申请一个注册码。

相关问题