最近研究了2天如何把html转为pdf保存的方法,网上找了好多解决方案。总结下来也就是2种

一种是使用js的插件 jspdf  这款插件我试了下,很强大  使用起来也很简单,唯一 一点不好的就是转成pdf有些模糊

另一种方案就是使用iTextSharp wkhtmltopdf Pechkin等工具  这些是最常见的了,本文中使用的是Pechkin 过程中还是踩了下坑

今天给大家分享一下这2种方案的使用方法  当然有些讲解不好的地方  希望多多包涵 本人小白

首先第一种使用js插件  我们需要准备2个文件  jspdf  html2canvas 这2个js文件  大家可以去网上找一下  比较多

然后我们在需要用到的地方引用一下这几个js文件

如图:

这个是使用方法,下面注释的2行代码表示如果转换为pdf一页不够就会分成2页

  $(function () {
$("#save").click(function () {
html2canvas($("#htmltopdf"), {
onrendered: function (canvas) {
//返回图片dataURL,参数:图片格式和清晰度(0-1);
var imgData = canvas.toDataURL();
//方向默认竖直,尺寸ponits,格式a4[595.28,841.89]
var doc = new jsPDF('p', 'pt', 'a4');
//addImage后两个参数控制添加图片的尺寸
doc.addImage(imgData, 'PNG', 9, 0, 500, 250);
//doc.addPage();
//doc.addImage(imgData, 'PNG', 9, -900, 650, 750);
doc.save('test.pdf');
}
})
});
})

下面贴出html代码:

<div id="htmltopdf">
<h1>html转pdf</h1>
<p>
关键代码解析:<br />
html2canvas 是将当前页面转换成图片;<br />
$('#appmsg') 是要转换为图片的页面范围;<br />
height:5000,这个高度要根据页面的大小灵活调整;
var doc = new jsPDF('p', 'px','a3'); p:横向,a3:纸张大小,默认是a4;<br />
doc.addImage(imgData, 'PNG', -9, 0,650,1500);将转换后的图片放到pdf文档上,<br />后面四个参数可根据实际效果灵活调整;<br />
doc.addPage(); 一页pdf显示不完整的时候,新增一页;
</p>
<img src="QQ截图20170809103511.png" />
</div>
<button id="save">下载</button>

下面给大家介绍第二种方法Pechkin

打开vs 管理NuGet程序包   如图所示  在项目中安装

安装完成后会在根目录出现5个dll程序集

文中创建的是mvc项目

        [HttpPost]
public ActionResult DownloadPdf()
{
GlobalConfig config = new GlobalConfig();
SimplePechkin pechkin = new SimplePechkin(config);
ObjectConfig objectConfig = new ObjectConfig();
objectConfig.SetPrintBackground(true)
.SetLoadImages(true)
.SetAffectPageCounts(true)
.SetPageUri("http://localhost:7858/Home/Index");
byte[] bytePDF = pechkin.Convert(objectConfig);
return File(bytePDF, "application/pdf","test.pdf");
}

SetPageUri里面的那个链接替换成需要转pdf文档的网址链接就行了。lz小白一个  在调用这个方法的时候踩了一个坑  用ajax发起请求结果死活没反应

正确方法应该酱紫的

@using(Html.BeginForm("DownloadPdf","Home",FormMethod.Post))
{
<input type="submit" value="submit" />
}

在视图当中使用html辅助器调用。

好了  方案就介绍到这,谢谢大家,文中方案如果有什么问题  欢迎大家提出

.net中html转pdf的更多相关文章

  1. 如何在PDF中添加水印,PDF添加水印技巧

    PDF文件现在的使用很是普遍,不管是工作中还是学习中都会使用到PDF文件,制作一个PDF文件就很辛苦的,我们要是想把PDF文件中添加水印防止抄袭的时候应该要怎么做呢,其实吧PDF文件添加水印还挺简单的 ...

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

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

  3. 在网页浏览器中原生显示PDF文件

    在网页中直接显示pdf格式的文件方便阅读.但是如果文件较大加载速度会很慢,另外如果客户端没有安装pdf阅读插件的话,也就看不了了. 这种方式的好处就是不需要转换,直接显示,而且在加载时(高级的浏览器, ...

  4. 利用aspose-words 实现 java中word转pdf文件

    利用aspose-words  实现 java中word转pdf文件 首先下载aspose-words-15.8.0-jdk16.jar包 引入jar包,编写Java代码 package test; ...

  5. vue中如何实现pdf文件预览?

    今天产品提出一个优化的需求,就是之前我们做的图片展示就是一个img标签搞定,由于我们做的是海外后台管理系统,那边的人上传的文件时pdf格式,vue本事是不支持这种格式文件展示的,于是就google搜索 ...

  6. 记录下工作中使用的pdf.js

    在工作中遇到一个通过网页的形式浏览pdf文件以及图片的需求,图片简单,直接通过网页的形式打开这个图片的URL即可.而pdf这边,通过查询发现有一个名为pdf.js的神器. 简单介绍下,它可以在html ...

  7. PDF.Js的使用—javascript中前端显示pdf文件

    PDF.Js的使用—javascript中前端显示pdf文件 写于2018/12/6 起因是一个图片展示页面需要展示pdf格式的文件,所以查了半天决定使用pdf.js,我也不求有多了解它,能实现我想要 ...

  8. 如何在ASP.NET Core 中快速构建PDF文档

    比如我们需要ASP.NET Core 中需要通过PDF来进行某些简单的报表开发,随着这并不难,但还是会手忙脚乱的去搜索一些资料,那么恭喜您,这篇帖子会帮助到您,我们就不会再去浪费一些宝贵的时间. 在本 ...

  9. 在Winform程序中使用Spire.Pdf实现页面添加印章处理

    在一些场合,我们往往需要使用印章来给每页文档加盖一个印章,以表示该文档经过某个部门的认证的,常规的做法就是打印文档后盖章,如果需要电子档再行扫描一下.这样的的处理,如果文档很多,且仅仅需要电子文档的就 ...

  10. 如何在hexo博客中在线阅读pdf

    前言 有一些资料或者笔记是pdf版本的,如果想要放在博客中进行阅读,那么就得将其转换为markdown格式或者html格式.但是这样转换后,其原pdf的格式就会混乱了,排版将会变得很困难,不过一山更比 ...

随机推荐

  1. JPush 使用教程

    JPush 使用教程 自己使用的一些经验,为了方便直接从这里复制过去就行. 就当做个笔记,防止长时间忘记之后,还需要去官网看文档. 主要思路: sdk文件 + 三方依赖系统库 + 头文件 + 添加代理 ...

  2. HTML5使用Canvas来绘制图形

    一.Canvas标签: 1.HTML5<canvas>元素用于图形的绘制,通过脚本(通常是javascript)来完成. 2.<canvas>标签只是图形容器,必须使用脚本来绘 ...

  3. 文科生细谈学习Linux系统的重要性

    首先大概介绍下自己,我学的是公共事业管理方面的专业,可以说是面向纯理论,社区管理社会管理的专业,但是从大二开始,对网络及服务器运维方面产生浓厚兴趣,并不断在网上找相关资料. 在这期间经历过很多,单说桌 ...

  4. Round #427 A. Key races(Div.2)

      time limit per test 1 second memory limit per test 256 megabytes input standard input output stand ...

  5. 4. leetcode 461. Hamming Distance

    The Hamming distance between two integers is the number of positions at which the corresponding bits ...

  6. Ubuntu 16.04 LTS安装 TeamViewer

    Ubuntu 16.04 LTS安装 TeamViewer     64位Ubuntu 16.04系统需要添加32位架构支持,命令如下. sudo dpkg --add-architecture i3 ...

  7. 有关cxf与安卓客户端或者C客户端的中文乱码问题

    前段时间在与C的客户端和安卓的客户端进行联调,首先我的方法接收的是C客户端所传递的数据,但是传递到方法内的中文就变成了乱码(我的方法的编码是utf8),最后通过String a = new Strin ...

  8. 使用纯css3写出来的表情包 (^v^)

    效果如图所示: 不多说,我们直接一个一个来写出,主要列出每个表情的结构,样式我们统一写出,基本全部会用到,颜色以及结构可以根据自己的需求来调整.(里面可是没有一张图片的哦) 页面预览:http://2 ...

  9. Json 查看Json的插件

    # 写写写写写,每个人有每个人写东西的方式,这些都是好的方式.需要感谢的人有几个,对我的成长有启发,所以我也会把能够想到.接触到的东西告诉team里面的人.新人,然后这些人又可以把这些东西传递给下一波 ...

  10. iOS开发 Android开发 移动Web开发

    通常,来自移动端的测试需求涉及2类: iOS/Android 移动端H5 因此,需要把基础的概念清清楚楚地落地 Client端 Server端 平台描述 语言 相同 差别 / web平台 web平台开 ...