.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文件的更多相关文章

  1. 如何将网页保存为PDF文件

    怎样将网页保存为PDF文件... 问题: 很多时候我们需要将网页上的内容,在排版不变的情况下完整的保存下来,那么用pdf格式是最好的效果了,还图文并茂,效果与真实的网页很相似,如果另存为网页的话,会下 ...

  2. 使用python把html网页转成pdf文件

    我们看到一些比较写的比较好文章或者博客的时候,想保存下来到本地当一个pdf文件,当做自己的知识储备,以后即使这个博客或者文章的连接不存在了,或者被删掉,咱们自己也还有. 当然咱们作为一个coder,这 ...

  3. 在网页中显示PDF文件及vue项目中弹出PDF

    1.<embed width="800" height="600" src="test_pdf.pdf"> </embed ...

  4. 如何直接在网页中显示PDF文件

    通过的浏览器:360.Firefox.IE.Chrome 2. 下面这个完整点: <param name="_Version" value="65539" ...

  5. 怎么把网页保存为pdf文件

    不就是用chrome浏览器打印功能,然后保存为pdf就可以了吗? 对于一些结构简单的比如,RFC文档这样操作一般没什么问题,对于一些有浮动元素的网页就不好说了,必须先用chrome的审查元素把一些不必 ...

  6. 将HTML页面自动保存为PDF文件并上传的两种方式(一)-前端(react)方式

    一.业务场景 公司的样本检测报告以React页面的形式生成,已调整为A4大小的样式并已实现分页,业务上需要将这个网页生成PDF文件,并上传到服务器,后续会将这个文件发送给客户(这里不考虑). 二.原来 ...

  7. PDF 文件编写器 C# 类库(版本 1.28.0)使用详解

    PDF File Writer 是一个 C# .NET 类库,允许应用程序创建 PDF 文件. PDF File Writer C# 类库使 .NET 应用程序能够生成 PDF 文档.该库使应用程序免 ...

  8. 网页中动态嵌入PDF文件/在线预览PDF内容https://www.cnblogs.com/xgyy/p/6119459.html

    #网页中动态嵌入PDF文件/在线预览PDF内容# 摘要:在web开发时我们有时会需要在线预览PDF内容,在线嵌入pdf文件: 问题1:如何网页中嵌入PDF: 在网页中: 常用的几种PDF预览代码片段如 ...

  9. #网页中动态嵌入PDF文件/在线预览PDF内容#

    摘要:在web开发时我们有时会需要在线预览PDF内容,在线嵌入pdf文件: 问题1:如何网页中嵌入PDF: 在网页中: 常用的几种PDF预览代码片段如下: 代码片段1: 1 <object ty ...

随机推荐

  1. Visual Studio配置OpenCV设置全局的继承属性

    1.安装完毕OpenCV后,新建一个CLR空项目,将其取名为"SetingGlobalOpenCVDir"便于以后变更版本时修改.如下图所示: 2.点击"视图->其 ...

  2. POJ 3678--Katu Puzzle(2-SAT)

    感觉这题比较裸,表现出了2-sat的本质. 不过构图我想的还是太简单了,a&b=1我只连了 a1->b1,b1->a1,但其实是不对的.这样连,a0和b0可以同时选到.应该连a0- ...

  3. RocketMQ常用命令

    转自:http://jameswxx.iteye.com/blog/2091971 1.1. 控制台使用 RocketMQ 提供有控制台及一系列控制台命令,用于管理员对主题,集群,broker 等信息 ...

  4. AQTime教程(1)

    AQTime教程 1 简介 AQTime和MemProof都是AutomatedQA旗下的产品,AQTime比MemProof提供了更丰富强大的功能.该产品含有完整的性能和调试工具集,能够收集程序运行 ...

  5. ecshop后台admin文件夹任意更改名

    为了ecshop网站安全起见或不想泄露后台的路径,那么我们必须修改后台admin文件夹名称. 方法和步骤如下: 把原admin文件夹名改成edait为例来说明 首先,把商城根目录下的admin文件夹重 ...

  6. SQLite使用教程6 创建表

    http://www.runoob.com/sqlite/sqlite-create-table.html SQLite 创建表 SQLite 的 CREATE TABLE 语句用于在任何给定的数据库 ...

  7. cocos2d-x 纹理研究

    转自:http://blog.csdn.net/qq51931373/article/details/9119161 1.通常情况下用PVR格式的文件来进行图片显示的时候,在运行速度和内存消耗方面都要 ...

  8. 有关AES加密的问题

    遇到一个项目,需要用AES加密密码,android的已经写好了,java源码: private static final String AES_OPTIONS = "AES/ECB/PKCS ...

  9. 黑马程序猿_7K面试题之交通灯系统

    交通灯信号模拟系统 一.概述 模拟实现十字路口的交通灯管理系统逻辑,详细需求例如以下:(需求直接来源于老师的文档) ①      异步随机生成依照各个路线行驶的车辆. 比如: 由南向而来去往北向的车辆 ...

  10. Hdu 5001 Walk 概率dp

    Walk Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5001 Desc ...