zoukankan      html  css  js  c++  java
  • 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:pdfinwkhtmltopdf.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)。

  • 相关阅读:
    前端资源分享
    解决COM组件80070005错误
    【迁移】—Entity Framework实例详解 转
    IIS错误处理集合
    疯狂蚂蚁框架搭建
    MSSQL日期格式化
    一句SQL实现获取自增列操作
    mongodb 性能篇
    mongodb管理篇
    mongodb高级应用
  • 原文地址:https://www.cnblogs.com/mqingqing123/p/6865630.html
Copyright © 2011-2022 走看看