wkhtmtopdf--高分辨率HTML转PDF(三)
代码篇
浏览了很多实例,总找不到既能把HTML保存为PDF,同时实现流抛出的,所以自己琢磨了许久,终于实现了这样两个需求的结合体,下面来贡献一下吧~~
下面我们来选择一个网页打印下,保存为PDF,而且实现流抛出保存,假设我们选择“http://www.cnblogs.com/ITGirl00/”
页面截图如:

目标:我们需要做出上面这个效果的PDF。
1.步骤
- 首先新建一个项目HTMLtoPDFOutPutStream
- 新建目录output;作为临时输出目录
- 新建resoure目录,用于保存wkhtmltopdf.exe等各个组件
- 接着添加一个WebForm1.aspx,在页面上添加一个按钮
- 最后在按钮的点击事件上写代码
2.按钮的点击处理代码:
string fileName = Guid.NewGuid().ToString();
string outputPath = Server.MapPath("output");
string savepath = string.Format(outputPath + "\\" + fileName + ".pdf");//最终保存
string url = "http://www.cnblogs.com/ITGirl00/";
try
{
if (!string.IsNullOrEmpty(url) || !string.IsNullOrEmpty(savepath))
{
Process p = new Process();
string resource = HttpContext.Current.Server.MapPath("resoure");
string dllstr = string.Format(resource + "\\wkhtmltopdf.exe");
if (System.IO.File.Exists(dllstr))
{
p.StartInfo.FileName = dllstr;
p.StartInfo.Arguments = " \"" + url + "\" \"" + savepath + "\"";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true;
p.Start();
p.WaitForExit();
try
{
FileStream fs = new FileStream(savepath, 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);
}
catch (Exception ee)
{
throw new Exception(ee.ToString());
}
}
}
}
catch (Exception ex)
{
throw new Exception(ex.ToString());
}

(1)使用wkhtmltopdf时,PDF保存的文件夹不能有非Ansi字符,如中文、日文等,且转换gb2312、韩文charset、日文charset等非utf-8\ansi等网页时,会出现乱码
(2)网页上图片无法正确显示是由于图片有链接
wkhtmtopdf--高分辨率HTML转PDF(三)的更多相关文章
- wkhtmtopdf--高分辨率HTML转PDF(二)
命令行 wkhtmtopdf有一些很实用的命令,平时如果不用代码,可以直接使用命令行来把你喜欢的任意网页转换为PDF, 命令行参考网址:http://madalgo.au.dk/~jakobt/wkh ...
- 在asp.net中显示PDF的方法:
来源:http://www.cnblogs.com/tengs2000/archive/2009/02/23/1396646.html 一.直接显示,使用的还是原页面的URL Response.Con ...
- linux下编译bib、tex生成pdf文件
实验: 在linux环境下,编译(英文)*.bib和*.tex文件,生成pdf文件. 环境: fedora 20(uname -a : Linux localhost.localdomain 3.19 ...
- [轉載]史上最强php生成pdf文件,html转pdf文件方法
之前有个客户需要把一些html页面生成pdf文件,然后我就找一些用php把html页面围成pdf文件的类.方法是可谓是找了很多很多,什么html2pdf,pdflib,FPDF这些都试过了,但是都没有 ...
- wkhtmtopdf--高分辨率HTML转PDF(一)
原文:wkhtmtopdf--高分辨率HTML转PDF(一) 一.需求 这次工作中遇到一个需求,要求把网页转换为PDF,穷极了很多的方法,包括尝试了itextsharp来转换,虽然可以实现,但是分辨率 ...
- 史上最强php生成pdf文件,html转pdf文件方法
body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...
- linux下编译tex,bib成pdf文件
参考linux下编译bib.tex生成pdf文件 为了编译出出正确的pdf文件,需要执行4条命令完成整个编译过程. 编译命令及输出 $ pdflatex bb.tex #目录下会生成bb.aux.bb ...
- C#使用iTextSharp+ZXing.Net+FreeSpire.PDF生成和打印pdf文档
项目需求(Winform)可以批量打印某个模板,经过百度和摸索,使用iTextSharp+ZXing.Net+FreeSpire.PDF三个类库实现了生成pdf.生成条形码和打印pdf功能. 首先在项 ...
- Javascript 将 HTML 页面生成 PDF 并下载
最近碰到个需求,需要把当前页面生成 pdf,并下载.弄了几天,自己整理整理,记录下来,我觉得应该会有人需要 :) html2canvas 简介 我们可以直接在浏览器端使用html2canvas,对整个 ...
随机推荐
- laravel 模版引擎使用
laravel 模版引擎以 @标签 开头,以 @end标签 结尾,常用有 foreach foreachelse if for while等 1)foreach 和 foreachelse 差不到,区 ...
- Python 收集主机信息
写一个 python 脚本,收集以下信息 ( CentOS 6 ) : IP地址 <ip> 主机名 <hostname> 操作系统版本 <osver> ...
- 复习前面一个月的学习C#感觉道路好艰难啊
今天是复习前面学习的内容,感觉这一个月来真的学习了很多,但是掌握的不好,好多都是在老师讲完课后做起来练习感觉这知识用起来蛮轻松地,但是经过昨天和今天的复习发现好多还是给忘记啦,甚是失落啊,刚开始就知道 ...
- oracle中怎么用normal方式登录怎么自定义用户名和密码
1.首先要创建一个用户.必须使用有最高权限的用户来创建,语句如下: create user shopping identified by 123456;--创建shopping用户,密码123456 ...
- MYSQL系列之(一)
mysql简介 1.什么是数据库 ? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不 ...
- c++11实现l延迟调用(惰性求值)
惰性求值 惰性求值一般用于函数式编程语言中,在使用延迟求值的时候,表达式不在它被绑定到变量之后就立即求值,而是在后面的某个时候求值. 可以利用c++11中的std::function, lam ...
- Vscode 修改为中文语言
1 官网下载最新版的vscode : https://code.visualstudio.com/Download 2 安装之后, 按键 F1 搜索框 输入 language 选择 config ...
- 移动前端开发viewport
1.viewport的概念 能在移动设备上正常显示那些传统的为桌面浏览器设计的网站宽度 2.css中的1px并不等于移动设备的1px 在iphone3上,一个css像素确实是等于一个屏幕物理像素的.后 ...
- Array.prototype.forEach数组遍历
forEach是Array新方法中最基本的一个,就是遍历,循环.先看以前是怎么遍历数组的 常用遍历 var arr = [1,2,3,4,5]; for(var i = 0; i < arr.l ...
- 【BZOJ1269/1507】[AHOI2006]文本编辑器editor Splay
[BZOJ1269][AHOI2006]文本编辑器editor Description 这些日子,可可不和卡卡一起玩了,原来可可正废寝忘食的想做一个简单而高效的文本编辑器.你能帮助他吗?为了明确任务目 ...