校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識(shí)庫 > 詳解使用canvas保存網(wǎng)頁為pdf文件支持跨域

詳解使用canvas保存網(wǎng)頁為pdf文件支持跨域

熱門標(biāo)簽:漳州人工外呼系統(tǒng)排名 威海營(yíng)銷外呼系統(tǒng)招商 ai電銷機(jī)器人連接網(wǎng)關(guān) 鄭州電銷外呼系統(tǒng)違法嗎 中紳電銷智能機(jī)器人 跟電銷機(jī)器人做同事 農(nóng)村住宅地圖標(biāo)注 濟(jì)南辦理400電話 鶴壁手機(jī)自動(dòng)外呼系統(tǒng)怎么安裝

前言

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

使用canvas保存網(wǎng)頁為pdf文件支持跨域

正文

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

思路:繼續(xù)使用Canvas截圖后將畫布內(nèi)容轉(zhuǎn)換為pdf文件。

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

引入canvas的js文件,js文件獲取地址官網(wǎng)主頁: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">導(dǎo)出為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倍,然后盛放在小的容器內(nèi),處理模糊
 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);
 //修改背景顏色,默認(rèn)是黑色
 $('.sta-main').css("background", "#fff")
 html2canvas( _canvas, {
 //處理pdf跨域獲取不到跨域信息問題
 taintTest : false,
 useCORS : true,
 allowTaint : false, 
 canvas : canvas2,
 dpi: 172,//導(dǎo)出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');
 //有兩個(gè)高度需要區(qū)分,一個(gè)是html頁面的實(shí)際高度,和生成pdf的頁面高度(841.89)
 //當(dāng)內(nèi)容未超過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> 

此次網(wǎng)頁改為PDF,與上次截圖網(wǎng)頁為PNG,使用同一種技術(shù),都是先使用Canvas截圖畫布后轉(zhuǎn)格式。

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

轉(zhuǎn)換pdf會(huì)讓背景色變?yōu)楹谏褂胏ss樣式改一下背景色就可以了。

完美轉(zhuǎn)換為pdf。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

標(biāo)簽:惠州 甘南 咸陽 營(yíng)口 文山 蘇州 紅河 萍鄉(xiāng)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《詳解使用canvas保存網(wǎng)頁為pdf文件支持跨域》,本文關(guān)鍵詞  詳解,使用,canvas,保存,網(wǎng)頁,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《詳解使用canvas保存網(wǎng)頁為pdf文件支持跨域》相關(guān)的同類信息!
  • 本頁收集關(guān)于詳解使用canvas保存網(wǎng)頁為pdf文件支持跨域的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 泰顺县| 佳木斯市| 定南县| 宜春市| 安仁县| 会昌县| 太保市| 敖汉旗| 偃师市| 泗洪县| 拜泉县| 石狮市| 玛纳斯县| 公主岭市| 民权县| 临沭县| 浦江县| 历史| 武威市| 洞头县| 孝昌县| 白银市| 永新县| 隆回县| 定兴县| 台湾省| 拜城县| 北安市| 旺苍县| 开远市| 桃江县| 舒兰市| 樟树市| 余庆县| 罗甸县| 吉首市| 新乡市| 澜沧| 蒙城县| 盖州市| 将乐县|