最近研究了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. web前端开发面试题(未完待续)

    一.HTML与XHTML的不同:1)XHTML元素必须被正确地嵌套 2)元素必须被关闭   如:<h1>--</h1>关闭 3)标签名必须用小写字母 4)XHTML文档必须有根 ...

  2. Linux(9)后台运行python程序并输出到日志文件

    后台运行python程序并标准输出到文件 现在有test.py程序要后台部署, 里面有输出内容 使用命令: nohup python -u test.py > test.log 2>&am ...

  3. Python使用openpyxl读写excel文件

    Python使用openpyxl读写excel文件 这是一个第三方库,可以处理xlsx格式的Excel文件.pip install openpyxl安装.如果使用Aanconda,应该自带了. 读取E ...

  4. wamp问题:关于另个php.ini文件的”…

    一.现象解说 修改从图表打开的php.ini文件,重启apache后,我们的问题没有解决... 二.解决方法 1.php.ini的位置 wamp/apache2/bin/php.ini wamp/ph ...

  5. HDU5723 Abandoned country (最小生成树+深搜回溯法)

    Description An abandoned country has n(n≤100000) villages which are numbered from 1 to n. Since aban ...

  6. Premiere&After Effects的实时预览插件开发

    一.介绍 Adobe Premiere和After Effects在影视编辑.渲染领域已经得到广泛应用.全景视频在相应工具拼接好后也可以导入Premiere/After Effects后也可进行剪辑. ...

  7. ETL作业调度工具TASKCTL的两个重大突破

    在传统设计理念下,流程图的可视化.作业流的定义设计功能,随着作业量增加,越来越难用,越来越不适用是一个难以避免的问题.就这两个问题,我给大家分享一下TASKCTL是如何转变思路.如何突破.如何带来一些 ...

  8. RabbitMQ --- Publish/Subscribe(发布/订阅)

    目录 RabbitMQ --- Hello Mr.Tua RabbitMQ --- Work Queues(工作队列) 前言 在第二篇文章中介绍了 Work Queues(工作队列),它适用于把一个消 ...

  9. ML: 聚类算法R包-模糊聚类

    1965年美国加州大学柏克莱分校的扎德教授第一次提出了'集合'的概念.经过十多年的发展,模糊集合理论渐渐被应用到各个实际应用方面.为克服非此即彼的分类缺点,出现了以模糊集合论为数学基础的聚类分析.用模 ...

  10. 【EntityFramework 6.1.3】个人理解与问题记录(3)

    前言 说点题外话:前几天接连微软老爹发布了 .net core 2.0 / asp.net core 2.0 / ef core 2.0 / .net standard 2.0(此处撒花,不管是否后面 ...