(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, , 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)。

ASP.NET C#根据HTML页面导出PDF的更多相关文章

  1. JSP页面导出PDF格式文件

    JSP页面导出PDF格式文件基本在前端页面可以全部完成 <script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/ ...

  2. HTML页面导出PDF——高清版

    需要做一个导出PDF的功能,网上找有很多,但是一般导出来的都是比较模糊的那种,下面这个是高清版的,导出的PDF都是几M,跟正常手动导出的差不多,很清晰. 首先用到的JS有: <script ty ...

  3. rails应用页面导出为pdf文档

    1.下载安装wkhtmltox https://wkhtmltopdf.org/downloads.html   2.gemfile添加 gem 'pdfkit' #页面导出pdf gem 'wkht ...

  4. 前端导出pdf

    html2canvas文档地址 http://html2canvas.hertzen.com/configuration 方式一:使用html2canvas和jspdf插件实现 该方式是通过html2 ...

  5. 页面导出生成pdf,使用wkhtmltopdf第三方工具

    把页面导出生成pdf,这里用到第三方的工具,使用方法中文文档没有找到,网上也没找到网友详细的神作.没有深入研究,所以也不赘述了,当然最基本的使用大多数也够用了,详细参数的官网也没介绍,大家使用的时候, ...

  6. asp.net2.0导出pdf文件完美解决方案【转载】

    asp.net2.0导出pdf文件完美解决方案 作者:清清月儿 PDF简介:PDF(Portable Document Format)文件格式是Adobe公司开发的电子文件格式.这种文件格式与操作系统 ...

  7. Vue 页面导出成PDF文件

    注意事项 如果导出的页面中设计到图片或者其他文件跨域文件,需要后端服务配合 安装依赖 npm install html2Canvas --save npm install jspdf--save 封装 ...

  8. vue将页面导出成pdf

    npm i jspdf-html2canvas prinOut(){ // 导出pdf let page = document.querySelector('.app-main'); // page ...

  9. ASP.NET 开源导入导出库Magicodes.IE 导出Pdf教程

    基础教程之导出Pdf收据 说明 本教程主要说明如何使用Magicodes.IE.Pdf完成Pdf收据导出 要点 导出PDF数据 自定义PDF模板 导出单据 如何批量导出单据 导出特性 PdfExpor ...

随机推荐

  1. linux cudnn安装

    cudnn-8.0-linux-x64-v5.1链接:http://pan.baidu.com/s/1c1JuMty 密码:v0g9 #以CuDNN的v5.1版本,Cuda 8.0为例 sudo ta ...

  2. SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30001ms.

    SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after ...

  3. SpringMVC框架05——拦截器

    1.拦截器概述 Spring MVC的拦截器(Interceptor)与Java Servlet的过滤器(Filter)类似,它主要用于拦截用户的请求并做相应的处理,通常应用在权限验证.记录请求信息的 ...

  4. iOS 覆盖率检测原理与增量代码测试覆盖率工具实现

    背景 对苹果开发者而言,由于平台审核周期较长,客户端代码导致的线上问题影响时间往往比较久.如果在开发.测试阶段能够提前暴露问题,就有助于避免线上事故的发生.代码覆盖率检测正是帮助开发.测试同学提前发现 ...

  5. IdentityServer4系列之中文文档及实际项目经验分享

    0.前言 原文:http://docs.identityserver.io/en/release/声明: 1.目录一至五章节根据IdentityServer英文文档翻译而来,有些内容会根据自己的理解来 ...

  6. Android 常见SD卡操作

    目录 Android 常见SD卡操作 Android 常见SD卡操作 参考 https://blog.csdn.net/mad1989/article/details/37568667. [0.] E ...

  7. 模拟赛T1 素数

    没有链接 描述: 给p,q,求a^2+b^2 = p*q解的个数,p,q是素数 沙雕打表结论题 然后怼了3h吼爆零 题解 首先这是个结论题 然后这是证明 代码 #include <stdio.h ...

  8. bzoj5068: 友好的生物

    题目链接 bzoj5068: 友好的生物 题解 最大化这个东西\(\sum_{i=1}^{k-1} | a_{x,i}-a_{y,i} | - | a_{x,k}-a_{y,k} |\) 去掉绝对值号 ...

  9. HDU 5813 Elegant Construction 构造

    Elegant Construction 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5813 Description Being an ACMer ...

  10. Ural 2036. Intersect Until You're Sick of It 计算几何

    2036. Intersect Until You're Sick of It 题目连接: http://acm.timus.ru/problem.aspx?space=1&num=2036 ...