91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-05-28 14:06:44 來源:億速云 閱讀:387 作者:小新 欄目:web開發

這篇文章給大家分享的是有關如何使用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。

感謝各位的閱讀!關于“如何使用canvas保存網頁為pdf文件支持跨域”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大足县| 绥滨县| 惠东县| 遂昌县| 永泰县| 谷城县| 四平市| 土默特左旗| 桐柏县| 阿尔山市| 海兴县| 达州市| 庐江县| 达日县| 重庆市| 巴彦淖尔市| 山阳县| 敦化市| 潼关县| 沧州市| 开封县| 永宁县| 伊宁县| 临猗县| 乌海市| 临西县| 淳化县| 石景山区| 资源县| 卢氏县| 巨野县| 镇坪县| 巴东县| 商河县| 庆安县| 房产| 长治市| 湄潭县| 木兰县| 湘乡市| 北京市|