首页 > 学院 > 开发设计 > 正文

C#导出HTML到PDF组件Pechkin

2019-11-14 13:31:14
字体:
来源:转载
供稿:网友

C#导出PDF功能是开发中经常遇到的功能,我们采用第三方的组件,比如 iTextSharp, aspose等,还能搜到一些开源的类库,

但是对于一些内容复杂样式丰富的PDF,我们希望通过传入一个URL直接生成一个PDF,并且不能与网页原版差异太大,Pechkin倒是不错,相对来说差异很小。

 

在 Nuget 管理器中搜索“Pechkin”,请选择 CPechkin For .Net20+,这个组件是作者在 Pechkin 基础上修改的,剔除了 Common.Loging 依赖,描述中说项目必须是x86编译,但我发现,设置成 Any CPU也可以,但是如果是Web项目,部署到IIS后,应用程序池高级设置中必须选择启用32位应用程序,否则运行会报错。

包加载完毕后,会在项目根目录下放置几个DLL,这些是 Pechkin 依赖的,如果想删除,请先将这几个DLL拷贝到bin下

编译后,BIN下面有7个相关的DLL,这就是 Pechkin 的全部

调用代码很简单,两行就搞定了,SetMargins 设设置PDF的页边距。

Pechkin.Synchronized.SynchronizedPechkin sc = new Pechkin.Synchronized.SynchronizedPechkin(new Pechkin.GlobalConfig().SetMargins(new System.Drawing.PRinting.Margins(20, 20, 20, 20)));byte[] buf = sc.Convert(new Uri(previewUrl));

var
ms = new System.IO.MemoryStream(buf);var fn = string.Format("report_{0}.pdf", reportNo);Logger.Instance.WriteLine("Generate a pdf from url {0}", previewUrl);return new List<System.Net.Mail.Attachment> { new System.Net.Mail.Attachment(ms, fn, "application/pdf") };

 

得到一个 byte[]后,你可以写入一个文件产生一个PDF。我在代码中写入一个MemoryStream,然后加入邮件的附件发送,很方便。

Pechkin也支持传入一段HTML代码,生成一个PDF。

 

再看生成出来的PDF,左边是PDF,右边是原版网页,差别不大,就是表格的背景色丢失。

 


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表