wkhtmtopdf--高分辨率HTML转PDF(三)
2024-08-25 18:09:01
代码篇
浏览了很多实例,总找不到既能把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());
}
3.效果图
===小小提示===
(1)使用wkhtmltopdf时,PDF保存的文件夹不能有非Ansi字符,如中文、日文等,且转换gb2312、韩文charset、日文charset等非utf-8\ansi等网页时,会出现乱码
(2)网页上图片无法正确显示是由于图片有链接
最新文章
- VS2012 Unit Test —— 我对IdleTest库动的大手术以及对Xml相关操作进行测试的方式
- Linux虚拟机中配置JDK环境变量
- 项目总结[2]_svg+ajax+webservice+pSpace sdk实现实时数据的web展示
- JAVA异常初步
- Java Debug调试简单方法--static使用
- iOS 杂记
- Javascript 基础--JS函数(三)
- MySQL中REGEXP正则表达式使用大全
- Java设计模式12:常用设计模式之外观模式(结构型模式)
- JDK1.5新特性(六)……Generics
- 《JavaScript高级程序设计》读书笔记 ---操作符一
- 一步步学习EF Core(2.事务与日志)
- Ubuntu 18.04 LTS搭建GO语言开发环境
- linux一些工具的安装(二)
- switch-case和if-else可互换时
- pagehelper 使用
- Python *Mix_w4
- mysql错误集合
- 默认的Sublime 3中没有Package Control
- CSS3 常用选择器