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


(1)導出PDF

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

他可以把HTML頁面轉換為PDF,該軟件簡直是incredible-不可思議了,功能太強大了。

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

           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為你實際安裝的路徑。

當然,在實際環境里,如果你使用IIS,並且希望通過ASP.NET生成PDF,需要注意權限,首先,找到應用程序所使用的應用程序池,點擊“應用程序池”上的高級,有一個“標識”,將默認的ApplicationPoolIdentity修改為LocalSystem。否則,可能因為權限不足而調用exe失敗。

 

(2)導出PDF的權限

啟明星部分系統需要ASP.NET進程執行exe程序,但是,默認ASP.NET並不被允許執行exe程序,因此需要修改進程標識符。

2.1找到應用程序所使用的應用程序池。

參考下圖,以edoc為例,系統使用的是edoc應用程序池

 

2.在應用程序池里,找到edoc,然后點擊“高級設置”

 

3.找到“標識”,修改為“Local System”。Local System默認具有administrators權限。

您也可以使用自定義賬戶(在edoc里,預覽Office使用內置的administrator,預覽Dwg也是用內置的administrator)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM