代码篇
浏览了很多实例,总找不到既能把HTML保存为PDF,同时实现流抛出的,所以自己琢磨了许久,终于实现了这样两个需求的结合体,下面来贡献一下吧~~
下面我们来选择一个网页打印下,保存为PDF,而且实现流抛出保存,假设我们选择“http://www.cnblogs.com/huangcong”
页面截图如:
目标:我们需要做出上面这个效果的PDF。
1.步骤
- 首先新建一个项目HTMLtoPDFOutPutStream
- 引用 System.Web
- 新建目录output;作为临时输出目录
- 新建resoure目录,用于保存wkhtmltopdf.exe等各个组件
- 最后在按钮的点击事件上写代码
2.按钮的点击处理代码:
string fileName = Guid.NewGuid().ToString(); ; string outputPath = Application.StartupPath + @"\output"; string savepath = string.Format(outputPath + "\\" + fileName + ".pdf");//最终保存 string url = "http://baidu.com"; try { if (!string.IsNullOrEmpty(url) || !string.IsNullOrEmpty(savepath)) { Process p = new Process(); string resource = Application.StartupPath + @"\resoure"; string dllstr = string.Format(resource + "\\wkhtmltopdf.exe"); string s = @" -L 0 -R 0 --header-spacing 15 " + url + " " + savepath; ProcessStartInfo startInfo = new ProcessStartInfo(dllstr, s); p.StartInfo = startInfo; p.StartInfo.UseShellExecute = false; p.StartInfo.CreateNoWindow = true; p.Start(); p.WaitForExit(); } } catch (Exception ex) { MessageBox.Show(ex.ToString()); }
3.效果图
===小小提示===
(1)使用wkhtmltopdf时,PDF保存的文件夹不能有非Ansi字符,如中文、日文等,且转换gb2312、韩文charset、日文charset等非utf-8\ansi等网页时,会出现乱码
(2)网页上图片无法正确显示是由于图片有链接
本文转自黄聪博客园博客,原文链接:http://www.cnblogs.com/huangcong/p/5520715.html,如需转载请自行联系原作者