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

相关文章
相关标签/搜索