麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > HTML > 正文

詳解使用canvas保存網頁為pdf文件支持跨域

2024-08-26 00:21:10
字體:
來源:轉載
供稿:網友

前言

之前上一篇隨筆說了Canvas截圖網頁為圖片,下來個新需求,把網頁截圖后保存為PDF文件供用戶下載。

使用canvas保存網頁為pdf文件支持跨域

正文

需求:用戶點擊下載,將頁面保存為PDF文件并下載。

思路:繼續使用Canvas截圖后將畫布內容轉換為pdf文件。

首先我們需要引入js文件jspdf.debug.js 下載路徑 https://github.com/MrRio/jsPDF

引入canvas的js文件,js文件獲取地址官網主頁:http://html2canvas.hertzen.com/

<script type="text/javascript" src="js/html2canvas.js"></script><script type="text/javascript" src="js/html2canvas.min.js"></script><script type="text/javascript" src="js/jspdf.debug.js"></script>

div按鈕代碼

 <div id="down_pdf">導出為PDF按鈕</div> <div class="sta-main">需要獲取為PDF的div</div>

jsp代碼

<script type="text/javascript">/* var downPdf = document.getElementById("down_pdf"); */var downPdf = document.getElementById("down_pdf");$("#down_pdf").on("click", function() { var canvas2 = document.createElement("canvas"); let _canvas = document.querySelector('.sta-main'); //獲取寬高 var w = parseInt(window.getComputedStyle(_canvas).width); var h = parseInt(window.getComputedStyle(_canvas) .height); //將canvas畫布放大2倍,然后盛放在小的容器內,處理模糊 canvas2.width = w * 2; canvas2.height = h * 2; canvas2.style.width = w + "px"; canvas2.style.height = h + "px"; var context = canvas2.getContext("2d"); //處理偏移 context.scale(1.5, 1.5); //修改背景顏色,默認是黑色 $('.sta-main').css("background", "#fff") html2canvas( _canvas, { //處理pdf跨域獲取不到跨域信息問題 taintTest : false, useCORS : true, allowTaint : false,  canvas : canvas2, dpi: 172,//導出pdf清晰度 onrendered: 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; //pdf頁面偏移 var position = 0; //html頁面生成的canvas在pdf中圖片的寬高(a4紙的尺寸[595.28,841.89]) var imgWidth = 595.28; var imgHeight = 592.28 / contentWidth * contentHeight; 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('PDF的名字.pdf'); } }) $('.sta-main').css("background", "")})</script> 

此次網頁改為PDF,與上次截圖網頁為PNG,使用同一種技術,都是先使用Canvas截圖畫布后轉格式。

同樣也有偏移、模糊、跨域等問題,使用之前的代碼來處理。

轉換pdf會讓背景色變為黑色使用css樣式改一下背景色就可以了。

完美轉換為pdf。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到HTML教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久精品在这里 | 综合99 | 91精品最新国内在线播放 | 久久精品免费国产 | 黄色一级片免费观看 | 亚洲欧美国产视频 | chinese 军人 gay xx 呻吟 | 毛片免费在线视频 | 国产精品久久久久久久久久久久久久久久 | 久久国产综合视频 | 毛片在线免费 | 亚洲成人在线视频网站 | 国产女同疯狂激烈互摸 | 91精品国产乱码久久桃 | 久久久久亚洲美女啪啪 | 午夜视频在线免费观看 | 日本成人二区 | 午夜视频在线观看免费视频 | 久久97超碰 | 国产成人精品一区二区视频免费 | 国产 日韩 一区 | 成人啪啪色婷婷久 | 91在线色 | 成人视屏在线 | 欧美激情 在线播放 | 视频一区二区在线播放 | 亚洲第一综合色 | 久久国产成人精品国产成人亚洲 | 免费观看在线 | 国产乱淫a∨片免费观看 | h视频免费在线 | 在线观看av国产一区二区 | 成人在线激情视频 | 国产精品久久久久久久久久iiiii | 黑人三级毛片 | 日韩一级毛毛片 | 美女wc| 国产精品久久久久久久久粉嫩 | 久久国产精品久久久久 | 日本欧美一区二区三区在线观看 | 久久精品亚洲精品国产欧美kt∨ |