.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. 有关按位DP

    这是一道正式比赛的题目 数据范围是 10^999 ~ 10^1000 的两个整数以及一个k我记得好像是不超过100,计算两个数中间有多少个每一位相乘最后和k取摸等于0的数.这道题对于不会按位dp的人是 ...

  2. leptonica 学习笔记2——pixBackgroundNormSimple

    1 pixBackgroundNormSimple 函数功能:自适应背影标准化 位置:adampmap.c /*-------------------------------------------- ...

  3. SQL2008-显示表大小行数

    select object_name(id) tablename,8*reserved/1024 reserved,rtrim(8*dpages/1024)+'Mb' used,8*(reserved ...

  4. 多个分布式系统如何共享使用一个固定公网IP

    传统的做法,一个分布式业务系统就有一个中间件,一个中间件需要使用至少一个固定公网IP,这样的话,多个业务系统就需要使用多个固定公网IP. 大家知道,固定公网IP价格可是不菲的.能不能让多个分布式业务系 ...

  5. 转载SSIS中的容器和数据流—数据转换(Transformations)

    对数据流来说按照需求将数据转换成需要的格式是数据操作中的一个关键的步骤.例如想要得到聚合排序后的运算结果,转换可以实现这种操作.和SQL Server 2000 DTS完全不同,这些操作不需要编写sc ...

  6. [五]SpringMvc学习-Restful风格实现

    1.Restful风格的资源URL 无后缀资源的访问(csdn用法) 2.SpringMvc对Rest风格的支持 2.1将 /*.do改为/ 2.2 3.@PathVariable获取Url变量 @R ...

  7. html中的body标签

    <head>标签代表的是页面的"头部",而<body>标签代表的就是页面的"身体"了.如果说<html>标签定义了网页的开始 ...

  8. Filter过滤器

    filter功能.它使用户可以改变一个 request和修改一个response. Filter 不是一个servlet,它不能产生一个response,它能够在一个request到达servlet之 ...

  9. OC/Swift第三方添加出错解决方法

    (未经同意,不得转载!) ------------------------华丽分割线-----------------------

  10. Positioning(定位)

    Positioning(定位)    定位属性允许你为一个元素定位.它也可以将一个元素放在另一个元素后面,并指定一个元素的内容太大时,应该发生什么.    元素可以使用的顶部,底部,左侧和右侧属性定位 ...