ASP.NET C#根據HTML頁面導出PDF

啓明星採購系統裏,新增了導出PDF功能。整個功能使用了第三方軟件 wkhtmltopdf(下載) 官網 https://wkhtmltopdf.org/ 提供有更多版本下載html

他能夠把HTML頁面轉換爲PDF,該軟件簡直是incredible-難以想象了,功能太強大了。app

由於,我有一個HTML,引用了不少CSS,而頁面基本上都是JS動態生成的,一直擔憂wkhtmltopdf生成的PDF會是一個空白ui

沒至關,轉換後,那些CSS和JS沒有「失真」。url

 

下面是利用C#將HTML生成PDF的代碼:spa

複製代碼
           string url = "http://www.dotnetcms.org/About.aspx";  
  string pdf = "c:\pdf\bin\wkhtmltopdf.exe"
string filename = Guid.NewGuid().ToString(); string pdfpath = filename + ".pdf"; Process p = System.Diagnostics.Process.Start(pdf, url + " \"" + Server.MapPath(pdfpath)+"\""); p.WaitForExit(); //方法1,使用下面代碼,在線打開 // Response.Redirect(pdfpath); //方法2,使用下面代碼,讓客戶下載 FileStream fs = new FileStream(Server.MapPath(pdfpath), FileMode.Open); byte[] file = new byte[fs.Length]; fs.Read(file, 0, file.Length); fs.Close(); Response.Clear(); Response.AddHeader("content-disposition", "attachment; filename=" + filename + ".pdf");//以二進制流模式,強制下載 Response.ContentType = "application/octet-stream"; Response.BinaryWrite(file);
複製代碼

在上面代碼裏,url爲須要傳遞的頁面,pdf參數爲wkhtmltopdf.exe爲你實際安裝的路徑。code

固然,在實際環境裏,若是你使用IIS,而且但願經過ASP.NET生成PDF,須要注意權限,首先,找到應用程序所使用的應用程序池,點擊「應用程序池」上的高級,有一個「標識」,將默認的ApplicationPoolIdentity修改成LocalSystem。不然,可能由於權限不足而調用exe失敗。htm

相關文章
相關標籤/搜索