實現方式比較簡單,使用js代碼實現的。html
須要引入的js:git
一、jQuery.js;github
二、html2canvas.js(實現方式是先將Html頁面轉換成image圖片而後在轉換爲pdf,因此轉換以後會有一點不清晰【我的認爲影響不大】);canvas
二、FileSaver.js(下面的jspdf.js中的「savaAS」函數是基於FileSaver.js的);jsp
三、jspdf.js(jspdf.js的支持仍是挺多的,由於我寫的這個頁面沒有那些相對複雜的標籤【svg…】。因此本次只引入了插件包中的jspdf.js、addimage.js這兩個js文件);svg
五、addimage.js;函數
上代碼:this
$("#turnToPdfButton").click(function(){ html2canvas($("#mainPdfHtml"), { //選擇你要導出的html區域 onrendered: function(canvas) { var imgData = canvas.toDataURL('image/jpeg'); var img = new Image(); img.src = imgData; //根據圖片的尺寸設置pdf的規格,要在圖片加載成功時執行,之因此要*0.225是由於比例問題 img.onload = function() { //此處須要注意,pdf橫置和豎置兩個屬性,須要根據寬高的比例來調整,否則會出現顯示不徹底的問題 if (this.width > this.height) { var doc = new jsPDF('l', 'mm', [this.width * 0.225, this.height * 0.225]); } else { var doc = new jsPDF('p', 'mm', [this.width * 0.225, this.height * 0.225]); } doc.addImage(imgData, 'jpeg', 0, 0, this.width * 0.225, this.height * 0.225); //根據下載保存成不一樣的文件名 doc.save('下載名稱.pdf'); } }, background: "#fff", //這裏給生成的圖片默認背景,否則的話,若是你的html根節點沒設置背景的話,會用黑色填充。 allowTaint: true //避免一些不識別的圖片干擾,默認爲false,遇到不識別的圖片干擾則會中止處理html2canvas }); });
資源下載地址:spa
html2canvas.js >>> https://github.com/niklasvh/html2canvas/releases插件
FileSaver.js >>> https://github.com/eligrey/FileSaver.js/
jspdf.js >>> https://github.com/MrRio/jsPDF