.Net 把网页Html转PDF文件
.Net 把网页Html转PDF文件
此篇主要利用 wkhtmltopdf
进行转换。
一、控制台直接转换
首先到官网http://wkhtmltopdf.org/下载wkhtmltopdf
,下后主要有3个文件,
wkhtmltoimage.exe 主要是把URL转成图片。
wkhtmltopdf.exe 主要是把 URL 转成PDF
我们只要打CMD. 输入 wkhtmltopdf http://oschina.net cc.pdf 就会在当前目前产生一个cc.pdf 文件。
二、asp.net 包装 wkhtmltopdf
项目结构
主要代码:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Mvc; namespace HtmltoX.Controllers
{
public class HomeController : Controller
{ public ActionResult index(string url, string type)
{
return View();
} [HttpPost]
public ActionResult Gen(string url, string type)
{ if (string.IsNullOrWhiteSpace(url))
{
return Content("参数异常...");
} string contentType = "application/pdf";
string ext = ".pdf";
string folder = "Pdfs";
string genExe = "wkhtmltopdf.exe "; if ("image".Equals(type, StringComparison.InvariantCultureIgnoreCase))
{
contentType = "image/jpeg";
ext = ".jpg";
folder = "Images";
genExe = "wkhtmltoimage.exe ";
} var rootUrl = Server.MapPath("/"); var file = rootUrl + @"AutoGen\wkhtmltoX\" + genExe; string fName = Guid.NewGuid().ToString(); string flileName = rootUrl + "AutoGen/" + folder + "/" + fName + ext; try
{
ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = file;
startInfo.Arguments = string.Format(" {0} {1}", url, flileName);
startInfo.CreateNoWindow = true;
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
var cc = Process.Start(startInfo); cc.WaitForExit();
cc.Close();
}
catch
{
return Content("生成失败. 请多试几次...");
} if (System.IO.File.Exists(flileName))
{
var f=new FileStreamResult(new FileStream(flileName, FileMode.Open), contentType);
f.FileDownloadName = fName+ext; return f;
} return Content("生成失败. 请多试几次...");
} }
}
三、 Pechkin
Pechkin主要是把 wkhtmltopdf
所用的DLL文件作了C#的封装。
Nuget地址:
https://www.nuget.org/packages/Pechkin.Synchronized/
https://www.nuget.org/packages/Pechkin/
安装:
Install-Package Pechkin
Install-Package Pechkin.Synchronized
using System;
using System.Collections.Generic;
using System.Drawing.Printing;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Pechkin;
using Pechkin.Synchronized; namespace MvcApplication1.Controllers
{
public class DefaultController : Controller
{
//
// GET: /Default/ public ActionResult Index()
{
var config = new GlobalConfig();
var pechkin = new SimplePechkin(config);
ObjectConfig oc = new ObjectConfig(); oc.SetPrintBackground(true).SetRunJavascript(true).SetScreenMediaType(true)
.SetLoadImages(true)
.SetPageUri("http://oschina.net");
byte[] pdf = pechkin.Convert(oc);
return File(pdf, "application/pdf", "download.pdf");
} public ActionResult c()
{
SynchronizedPechkin sc = new SynchronizedPechkin(new GlobalConfig()
.SetMargins(new Margins() {Left = , Right = , Top = , Bottom = })); //设置边距 ObjectConfig oc = new ObjectConfig(); oc.SetPrintBackground(true).SetRunJavascript(true).SetScreenMediaType(true)
.SetLoadImages(true)
.SetPageUri("http://oschina.net"); byte[] buf = sc.Convert(oc); return File(buf, "application/pdf", "download.pdf"); } }
}
.Net 把网页Html转PDF文件的更多相关文章
- 如何将网页保存为PDF文件
怎样将网页保存为PDF文件... 问题: 很多时候我们需要将网页上的内容,在排版不变的情况下完整的保存下来,那么用pdf格式是最好的效果了,还图文并茂,效果与真实的网页很相似,如果另存为网页的话,会下 ...
- 使用python把html网页转成pdf文件
我们看到一些比较写的比较好文章或者博客的时候,想保存下来到本地当一个pdf文件,当做自己的知识储备,以后即使这个博客或者文章的连接不存在了,或者被删掉,咱们自己也还有. 当然咱们作为一个coder,这 ...
- 在网页中显示PDF文件及vue项目中弹出PDF
1.<embed width="800" height="600" src="test_pdf.pdf"> </embed ...
- 如何直接在网页中显示PDF文件
通过的浏览器:360.Firefox.IE.Chrome 2. 下面这个完整点: <param name="_Version" value="65539" ...
- 怎么把网页保存为pdf文件
不就是用chrome浏览器打印功能,然后保存为pdf就可以了吗? 对于一些结构简单的比如,RFC文档这样操作一般没什么问题,对于一些有浮动元素的网页就不好说了,必须先用chrome的审查元素把一些不必 ...
- 将HTML页面自动保存为PDF文件并上传的两种方式(一)-前端(react)方式
一.业务场景 公司的样本检测报告以React页面的形式生成,已调整为A4大小的样式并已实现分页,业务上需要将这个网页生成PDF文件,并上传到服务器,后续会将这个文件发送给客户(这里不考虑). 二.原来 ...
- PDF 文件编写器 C# 类库(版本 1.28.0)使用详解
PDF File Writer 是一个 C# .NET 类库,允许应用程序创建 PDF 文件. PDF File Writer C# 类库使 .NET 应用程序能够生成 PDF 文档.该库使应用程序免 ...
- 网页中动态嵌入PDF文件/在线预览PDF内容https://www.cnblogs.com/xgyy/p/6119459.html
#网页中动态嵌入PDF文件/在线预览PDF内容# 摘要:在web开发时我们有时会需要在线预览PDF内容,在线嵌入pdf文件: 问题1:如何网页中嵌入PDF: 在网页中: 常用的几种PDF预览代码片段如 ...
- #网页中动态嵌入PDF文件/在线预览PDF内容#
摘要:在web开发时我们有时会需要在线预览PDF内容,在线嵌入pdf文件: 问题1:如何网页中嵌入PDF: 在网页中: 常用的几种PDF预览代码片段如下: 代码片段1: 1 <object ty ...
随机推荐
- Windows下ffmpeg的完美编译
纠结了好几天,终于搞定了,小结一下. 1.下载ffmpeg源码,官网 2.编译环境Msys的安装配置,http://blog.csdn.net/jszj/article/details/4028716 ...
- 恒天云技术分享系列4 – OpenStack网络攻击与防御
恒天云技术分享系列:http://www.hengtianyun.com/download-show-id-13.html 云主机的网络结构本质上和传统的网络结构一致,区别大概有两点. 1.软网络管理 ...
- 笔记- iphone手机音频AAC视频H264推流(一) iphone手机推流最佳方案
这几个月一直在做iphone手机音视频的东西,由于个人比较懒,所以一直没整理,现在闲的蛋疼,并且以后项目要搁置了,在这里记录一下我做的iphone手机推流的东西. 项目都是个人的调研与实验,可能很多不 ...
- Android studio优点及快捷键
alt+回车 提示错误信息 ctrl+shift+回车 补全代码 ctrl+alt+o 导入包 ctrl+p 查看方法的参数 ctrl+alt+t 可以弹出包围结构的代码提示 例如if android ...
- android widget的中文文档
下文是我翻译于 App Widgets的文章,如果有不当之处请大家指出 app widget是一种嵌入在其他应用(例如主屏幕)和并且能偶接受间接性更新的小应用,你可以自己提供app widget pr ...
- 数据文件个数大于1024时ORACLE数据文件FILE_ID及RELATIVE_FNO的变化示例
通过ROWID计算数据块的相关信息: --详见: 数据文件头块保留大小.ROWID.数据文件最大大小等数据库限制的说明 根据small file tablespace的ROWID,计算出表空间.数据 ...
- 搭架私有Git服务器Gogs
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:搭架私有Git服务器Gogs.
- Emgu CV 高斯建模
Codeprivate void button1_Click(object sender, EventArgs e) { Emgu.CV.Capture cap = new Capture(" ...
- Oracle 监听器无法启动(TNS-12555,TNS-12560,TNS-00525)
启动监听器无法打开,报错! [oracle@localhost ~]$ lsnrctl start LSNRCTL for Linux: Version 11.2.0.1.0 - Production ...
- 编写一个Animal类,具有属性:种类;具有功能:吃、睡。定义其子类Fish 和Dog,定义主类E,在其main方法中分别创建其对象并测试对象的特性。
package animal; public class Animal { //成员属性 private String kind; public String getKind() { return k ...