我開發了一個網頁,允許用戶輸入值,就像註冊表單一樣。在保存數據時,我需要給出用於將頁面下載爲PDF格式的選項。如何將ASP.NET頁面轉換爲PDF並下載相同(值不是靜態的)
我試過如下:
- 我嘗試使用iTextSharp的DLL。問題是我沒有得到PDF文件中的所有內容。示例圖像和樣式未正確轉換。
- 我嘗試了一些第三方工具,如(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();
}
讓我知道,如果你有更好的解決辦法。