1. 程式人生 > >ASP.NET C#根據HTML頁面匯出PDF

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

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

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

因為,我有一個HTML,引用了很多CSS,而頁面基本上都是JS動態生成的,一直擔心wkhtmltopdf生成的PDF會是一個空白

沒相當,轉換後,那些CSS和JS沒有“失真”。

下面是利用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失敗。