需要做一个导出PDF的功能,网上找有很多,但是一般导出来的都是比较模糊的那种,下面这个是高清版的,导出的PDF都是几M,跟正常手动导出的差不多,很清晰。

  首先用到的JS有:

  1. <script type="text/javascript" charset="utf-8" src="js/html2canvas.js"></script>
  2. <script type="text/javascript" charset="utf-8" src="js/jsPdf.debug.js"></script>
  3. <script type="text/javascript" charset="utf-8" src="js/canvas2image.js"></script>

  代码:  

  1. <script>
  2. function exportReportTemplet() {
  3. var element = $("#print"); // 这个dom元素是要导出pdf的div容器
  4. var w = element.width(); // 获得该容器的宽
  5. var h = element.height(); // 获得该容器的高
  6. var offsetTop = element.offset().top; // 获得该容器到文档顶部的距离
  7. var offsetLeft = element.offset().left; // 获得该容器到文档最左的距离
  8. var canvas = document.createElement("canvas");
  9. canvas.width = w * 2; // 将画布宽&&高放大两倍
  10. canvas.height = h * 2;
  11. var context = canvas.getContext("2d");
  12. var scale = 2;
  13. context.scale(2, 2);
  14. // context.translate(-offsetLeft - abs, -offsetTop);
  15.  
  16. var opts = {
  17. scale: scale,
  18. canvas: canvas,
  19. width: w,
  20. height: h,
  21. useCORS: true,
  22. background: '#FFF'
  23. }
  24.  
  25. html2canvas(element, opts).then(function (canvas) {
  26. allowTaint: false;
  27. taintTest: false;
  28. var contentWidth = canvas.width;
  29. var contentHeight = canvas.height;
  30. //一页pdf显示html页面生成的canvas高度;
  31. var pageHeight = contentWidth / 592.28 * 841.89;
  32. //未生成pdf的html页面高度
  33. var leftHeight = contentHeight;
  34. //页面偏移
  35. var position = 0;
  36. //a4纸的尺寸[595.28,841.89],html页面生成的canvas在pdf中图片的宽高
  37. var imgWidth = 595.28;
  38. var imgHeight = 592.28 / contentWidth * contentHeight;
  39.  
  40. var pageData = canvas.toDataURL('image/jpeg', 1.0);
  41. // var oCanvas = document.getElementById("print");
  42. // Canvas2Image.saveAsJPEG(oCanvas);
  43. var pdf = new jsPDF('', 'pt', 'a4');
  44.  
  45. //有两个高度需要区分,一个是html页面的实际高度,和生成pdf的页面高度(841.89)
  46. //当内容未超过pdf一页显示的范围,无需分页
  47. if (leftHeight < pageHeight) {
  48. pdf.addImage(pageData, 'JPEG', 0, 0, imgWidth, imgHeight);
  49. } else { // 分页
  50. while (leftHeight > 0) {
  51. pdf.addImage(pageData, 'JPEG', 0, position, imgWidth, imgHeight)
  52. leftHeight -= pageHeight;
  53. position -= 841.89;
  54. //避免添加空白页
  55. if (leftHeight > 0) {
  56. pdf.addPage();
  57. }
  58. }
  59. }
  60. pdf.save('销售合同.pdf');
  61. })
  62.  
  63. }
  64. </script>

HTML页面导出PDF——高清版的更多相关文章

  1. 电脑报2014年第43期 pdf高清版

    电脑报2014年第43期 pdf高清版

  2. 大话数据结构pdf高清版下载

    大话数据结构PDF下载 不得不说严老师版的虽然比较经典,但是真的有点难理解啊,而大话数据结构这本书还是比较不错的,通俗易懂,反正我个人觉得很不错,希望对诸位有帮助. 链接:点击打开 密码:xovz p ...

  3. 笨办法学python 第四版 中文pdf高清版|网盘下载内附提取码

    笨办法学 Python是Zed Shaw 编写的一本Python入门书籍.适合对计算机了解不多,没有学过编程,但对编程感兴趣的朋友学习使用.这本书以习题的方式引导读者一步一步学习编 程,从简单的打印一 ...

  4. 流程的python PDF高清版

    免费下载链接:https://pan.baidu.com/s/1qcPjLlFXhVXosIGBKHVVXQ 提取码:qfiz

  5. 正则指引 pdf 高清版

    链接:https://pan.baidu.com/s/1Xeuma4toE_L-MxROvTGBxw 提取码:nqyj

  6. Python编程:从入门到项目实践高清版附PDF百度网盘免费下载|Python入门编程免费领取

    百度网盘:Python编程:从入门到项目实践高清版附PDF免费下载 提取码:oh2g   第一部分 基础知识第1章 起步 21.1 搭建编程环境 21.1.1 Python 2和Python 3 21 ...

  7. 分享《Python 游戏编程快速上手(第3版)》高清中文版PDF+高清英文版PDF+源代码

    通过编写一个个小巧.有趣的游戏来学习Python,通过实例来解释编程的原理的方式.14个游戏程序和示例,介绍了Python基础知识.数据类型.函数.流程控制.程序调试.流程图设计.字符串操作.列表和字 ...

  8. 《最优化导论第4版》高清中文版PDF+高清英文版PDF+习题题解

    <最优化导论第4版>高清中文版PDF+高清英文版PDF+习题题解 存放在语雀 凸优化 · 语雀

  9. Java编程思想第四版完整中文高清版.pdf

    Java编程思想第四版完整中文高清版.pdf 链接: https://pan.baidu.com/s/1vV5BHF3L-bnaG6WGurdJ_A 提取码: vigy 复制这段内容后打开百度网盘手机 ...

随机推荐

  1. abp中使用同步方法调用异步方法

    var result= AsyncHelper.RunSync(()=>{   return  _service.GetUserAsync();   });

  2. Tensorflows安装(cpu版最简安装方法)

    一.说明 首先声明,本人系统是Windows10 64位,Win7未试. 本文旨在帮助园友以更简单的方式安装Tensorflow,下面介绍的是如何安装Python的Tensorflow cpu版本. ...

  3. Go1.13 标准库的 http 包爆出重大 bug,你的项目中招了吗? 原创: 王亚楼 Go语言中文网 今天

    Go1.13 标准库的 http 包爆出重大 bug,你的项目中招了吗? 原创: 王亚楼 Go语言中文网 今天

  4. x86 linux 支持的系统调用参数至多6个

    ebx ecx edx esi edi ebp

  5. odoo开发笔记 -- 提高访问安全性的一种方式

    场景描述: 最近在做项目的过程中,需要需要将odoo应用集成到其他系统中, 在对方的系统中点击我们的应用,打开对应系统,但是界面不做跳转,在当前页面打开,并且浏览器地址栏只显示IP+应用名,不让显示o ...

  6. apache环境.htaccess设置301跳转及常用.htaccess技巧整理

    apache环境.htaccess设置301跳转及常用.htaccess技巧整理 无论是Nginx,还是Apache都各自有优势,对于我们普通用户而言基本上也没有多大的区别.在虚拟主机环境中,基本上都 ...

  7. asp.net 的log4net的helper类

    using log4net; using System; using System.Diagnostics; namespace MxWeiXinPF.Common.log { public stat ...

  8. java自定义jar包让jemeter使用

    背景:可能在做定义化的要求上,jmeter原有的jar包,已经不能满足我们,就需要自己写一个方法,以下就是写入的一个模拟post的请求,在jmeter中使用的案例 一:写代码 1.代码中的有两个包,原 ...

  9. shell基础知识之数组

    数组允许脚本利用索引将数据集合保存为独立的条目.Bash支持普通数组和关联数组,前者 使用整数作为数组索引,后者使用字符串作为数组索引.当数据以数字顺序组织的时候,应该使 用普通数组,例如一组连续的迭 ...

  10. 图片转化base64格式

    public function Base64EncodeImage($ImageFile) { // 图片转化base64格式 , 图片需要在本地,有访问权限 , 相对于项目路径 if(file_ex ...