最近研究了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. Spring源码情操陶冶-AbstractApplicationContext#prepareBeanFactory

    阅读源码有助于陶冶情操,本文承接Spring源码情操陶冶-AbstractApplicationContext#obtainFreshBeanFactory 瞧瞧官方注释 /** * Configur ...

  2. python学习好文

    摘要: 学习别人的学习历程. 一 iTech的博客 http://www.cnblogs.com/itech/archive/2011/01/31/1948265.html

  3. 定时器(setTimeout)的秘密

    原文地址:→传送门 写在前面 setTimeout()是大家再熟悉不过的定时器,但平时对定时器的了解甚少,于是想看看setTimeout()的原理机制. setTimeout()基础 setTimeo ...

  4. Maven “Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:2.4:create...”问题总结

    今天学习Maven的过程中,一直遇到一个问题:用maven指令构建新项目时,一直报错,用的 Maven 3.2 , JDK 6. 构建的命令: 错误信息: 解决方案: 在StackOverFlow上找 ...

  5. 使用VMware安装CentOS

    使用VMware安装CentOS 第1步:首先安装VMware Workstation,只需点下一步即可,安装过程略 第2步:文件 → 新建虚拟机 或 直接点击 创建新的虚拟机 图标 第3步:选择 典 ...

  6. oracle 查看表空间,及大小,利用率

    selectb.file_name 物理文件名,b.tablespace_name 表空间,b.bytes/1024/1024 大小M,(b.bytes-sum(nvl(a.bytes,0)))/10 ...

  7. 被DDOS攻击的解决方法

    在DDOS分布式借"机"堵塞正常访问的非法攻击中,任何技术高手都成了文科生.只能用非专业的方法解决.DDOS攻击的重心是堵塞服务器,给域名解析访问造成困难,被攻击后我们可以采用以下 ...

  8. Dubbo实战快速入门 (转)

    Dubbo是什么? Dubbo[]是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案. 其核心部分包含: 远程通讯: 提供对多种基于长连接的NIO框架抽象封 ...

  9. hdu--1026--Ignatius and the Princess I(bfs搜索+dfs(打印路径))

    Ignatius and the Princess I Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (J ...

  10. Luogu P1001 A+B Problem

    题目描述 输入两个整数a,b,输出它们的和(|a|,|b|<=10^9). 注意 1.pascal使用integer会爆掉哦! 2.有负数哦! 3.c/c++的main函数必须是int类型,而且 ...