将div的内容生成清晰的PDF、高清PDF
//需要引入html2canvas.js、jquery.js文件
html:
<button type="button" class="btn btn-primary " id="pdfDown" >PDf导出</button>
js:
$("#pdfDown").on('click',function(){
        var element = $(".orgchart");    // 这个dom元素是要导出pdf的div容器,即要生成PDF的div
        var w;    // 获得该容器的宽
        var h;    // 获得该容器的高
     //因为我是两种分布情况,故而有了下边的if、else,如果只有一种用else里的即可
        if($(".btnActive").attr('id') == 'Hmerage'){
            h = element.outerWidth()
            w = element.outerHeight()
        }else{
            w = element.outerWidth()
            h = element.outerHeight()
        }
        var offsetTop = element.offset().top;    // 获得该容器到文档顶部的距离
        var offsetLeft = element.offset().left;    // 获得该容器到文档最左的距离
        var canvas = document.createElement("canvas");
        canvas.width = w * 2;    // 将画布宽&&高放大两倍
        canvas.height = h * 2;
        var context = canvas.getContext("2d");
        var scale = 2;
        context.scale(2, 2);
        context.translate(-offsetLeft, -offsetTop);
        var opts = {
            scale: scale,
            canvas: canvas,
            width: w,
            height: h,
            useCORS: true,
            background: '#ffffff'
        }
        html2canvas(element, opts).then(function (canvas) {
          var contentWidth = canvas.width;
          var contentHeight = canvas.height;
          //一页pdf显示html页面生成的canvas高度;
          var pageHeight = contentWidth / 592.28 * 841.89;
          //未生成pdf的html页面高度
          var leftHeight = contentHeight;
          //页面偏移
          var position = 0;
          //a4纸的尺寸[595.28,841.89],html页面生成的canvas在pdf中图片的宽高
          var imgWidth = 595.28*1.01;
          var imgHeight = 592.28 / contentWidth * contentHeight*1.01;
          var pageData = canvas.toDataURL('image/jpeg', 1.0);
          var pdf = new jsPDF('', 'pt', 'a4');
          //有两个高度需要区分,一个是html页面的实际高度,和生成pdf的页面高度(841.89)
          //当内容未超过pdf一页显示的范围,无需分页
          if (leftHeight < pageHeight) {
              pdf.addImage(pageData, 'JPEG', 0, 0, imgWidth, imgHeight);
          } else {    // 分页
              while (leftHeight > 0) {
                  pdf.addImage(pageData, 'JPEG', 0, position, imgWidth, imgHeight)
                  leftHeight -= pageHeight;
                  position -= 841.89;
                  //避免添加空白页
                  if (leftHeight > 0) {
                      pdf.addPage();
                  }
              }
          }
          pdf.save('content.pdf');
      })
    })
将div的内容生成清晰的PDF、高清PDF的更多相关文章
- PHP和MySQL Web开发(原书第4版) 高清PDF+源代码
		PHP和MySQL Web开发(原书第4版) 高清PDF+源代码 [日期:2014-08-06] 来源:Linux社区 作者:Linux [字体:大 中 小] 内容简介 <PHP和My ... 
- 21天网站建设实录 (雨辰资讯) 高清pdf扫描版
		<21天网站建设实录>以网页设计师的项目开发为背景,以“阿里里在线购物”商业网站的开发过程为流程,通过21天的任务期限,以一天一项任务.一天掌握一项技能项目实战的学习模式,全面讲解了一个网 ... 
- 《数据可视化之美》高清PDF全彩版|百度网盘免费下载|Python数据可视化
		<数据可视化之美>高清PDF全彩版|百度网盘免费下载|Python数据可视化 提取码:i0il 内容简介 <数据可视化之美>内容简介:可视化是数据描述的图形表示,旨在一目了然地 ... 
- Sass和Compass设计师指南 Ben Frain 中文高清PDF扫描版
		Sass和Compass设计师指南是<响应式Web设计:HTML5和CSS3实战>作者Ben Frain的又一力作.作者通过丰富.完整的案例,循序渐进地展示了Sass和Compass的使用 ... 
- 《百面机器学习算法工程师带你去面试》高清PDF及epub+《美团机器学习实践》PDF及思维导图
		http://blog.sina.com.cn/s/blog_ecd882db0102yuek.html <百面机器学习算法工程师带你去面试>高清PDF及epub+<美团机器学习实践 ... 
- HTML5权威指南 中文版 高清PDF扫描版
		HTML5权威指南是一本系统学习网页设计的权威参考图书.<HTML5权威指南>分为五部分:第一部分介绍学习本书的预备知识和HTML.CSS和JavaScript的最新进展:第二部分讨论HT ... 
- HTML5与CSS3设计模式 中文版 高清PDF扫描版
		HTML5与CSS3设计模式是一部全面讲述用HTML5和CSS3设计网页的教程.书中含350个即时可用的模式 (HTML5和CSS3代码片段),直接复制粘贴即可使用,更可以组合起来构建出无穷的解决方案 ... 
- python网络爬虫高清PDF资料分享
		1.python+网络爬虫开发实战中文PDF高清版 链接:https://pan.baidu.com/s/1bks8J9kgqCArUlEoDg4acA 提取码:h9y2 复制这段内容后打开百度网盘手 ... 
- 《工程热力学沈维道童钧耕第四版-带书签》高清pdf下载链接
		<工程热力学沈维道童钧耕第四版-带书签>高清pdf下载链接 百度网盘链接:https://pan.baidu.com/s/1dWksA8O3y2JSfIQy5lrU5g 提取码:7x9w ... 
随机推荐
- jpa repostiory
			JpaRepository的查询 image.png image.png Spring Data JPA框架在进行方法名解析时,会先把方法名多余的前缀截取掉,比如 find.findBy.re ... 
- C++入门经典-例4.11-名称空间的定义和使用
			1:名称空间,也成为名字空间.命名空间,关键字为namespace.我们经常使用这样一条语句: using namespace std: 我们要使用标准输入输出流,除了包含它们所在的头文件外,还必须使 ... 
- WebSocket 结合 Nginx 实现域名及 WSS 协议访问-Nginx配置
			特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ... 
- Watir单元库
			http://www.cnblogs.com/Javame/p/4045229.html test: #require 'net/http' #require 'uri' #url = URI.par ... 
- MySQL MGR 单主模式下master角色切换规则
			MGR单主模式,master节点可读可写,其余节点都是只读.当配置MGR为单主模式,非master节点自动开启super_read_only 当可读可写的节点异常宕机,会进行怎样的切换?在选择新的可写 ... 
- [SQL]数据库常用语句
			1.使用旧表创建新表 SELECT * INTO CC FROM AA ; (适用于版本SQL SERVER) 
- Spring AOP junit错误整理
			1.[spring][Xlint:invalidAbsoluteTypeName]error 首先说一下最基本的错误,使用AOP的pointcut的expression表达式必须是正确的,表达式规则相 ... 
- angularjs的部分总结
			就在这个星期,我们学习了一个神奇的框架叫:"Angular js",它的神奇之处不是它的功能有多强,甚至它的功能还是很简陋的,但是它的那种思想是非常牛逼的;他完全抛弃了我们现在所常 ... 
- java:JavaScript2:(setTimeout定时器,history.go()前进/后退,navigator.userAgent判断浏览器,location.href,五种方法获取标签属性,setAttribute,innerHTML,三种方法获取form表单信息,JS表单验证,DOM对象,form表单操作)
			1.open,setTimeout,setInterval,clearInterval,clearTimeout <!DOCTYPE> <html> <head> ... 
- Java SE 8 docs——Static Methods、Instance Methods、Abstract Methods、Concrete Methods和field
			一.Static Methods.Instance Methods.Abstract Methods.Concrete Methods ——Static Methods:静态方法 ——Instance ... 
