參考文件:http://jackyrong.iteye.com/blog/2169683javascript
https://my.oschina.net/aruan/blog/418980css
https://segmentfault.com/a/1190000013168209html
js引用文件地址:https://files.cnblogs.com/files/likui-bookHouse/tableExport.jquery.plugin-master.rarjava
html文件代碼:jquery
<html> <head> <title>Export html table to excel and csv using jquery</title> <script src="~/Content/js/jquery-1.7.1.js"></script> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css"> <script type="text/javascript" src="~/Content/js/excel/jquery.base64.js"></script> <script type="text/javascript" src="~/Content/js/excel/tableExport.js"></script> <script type="text/javascript" src="~/Content/js/excel/jspdf/libs/sprintf.js"> </script> <script type="text/javascript" src="~/Content/js/excel/jspdf/jspdf.js"></script> <script type="text/javascript" src="~/Content/js/excel/jspdf/libs/base64.js"></script> </head> <body> [align=right] <br><br><br> <button class="btn btn-success" onClick="$('#customers').tableExport({type: 'excel', escape: 'false'});">Excel Export</button> <button class="btn btn-success" onClick="$('#customers').tableExport({type: 'pdf', escape: 'false'});">CSV Export</button> <br><br> [/align] <table id="customers" class="table table-striped table-bordered"> <thead> <tr class='warning'> <th>Country</th> <th>Population</th> <th>Date</th> </tr> </thead> <tbody> <tr> <td>Chinna</td> <td>1,363,480,000</td> <td>March 24, 2014</td> </tr> <tr> <td>India</td> <td>1,241,900,000</td> <td>March 24, 2014</td> </tr> <tr> <td>United States</td> <td>317,746,000</td> <td>March 24, 2014</td> </tr> <tr> <td>Indonesia</td> <td>249,866,000</td> <td>July 1, 2013</td> </tr> <tr> <td>Brazil</td> <td>201,032,714</td> <td>July 1, 2013</td> </tr> <tr> <td>澳大利亞</td> <td>2018年3月20日</td> <td>二零一八年三月二十日</td> </tr> </tbody> </table> </div> </body> </html>
顯示效果:git
導出pdf(解決中文亂碼問題)github
導出過程當中發現中文顯示亂碼,根據文檔發現jsPDF不支持中文,網上資料是使用html2canvas
方式轉換canva
方式,並非十分靈活。後根據項目jsPDF-CustomFonts-support引入中文字體,解決了導出pdf後中文字體顯示亂碼的問題。
將項目源碼下載到本地,dist文件夾下爲相關腳本,font文件夾下爲相關字體文件。bootstrap
腳本實現:tabExport.js 中的代碼canvas
}else if(defaults.type == 'pdf'){ //var doc = new jsPDF('p','pt', 'a4', true); //doc.setFontSize(defaults.pdfFontSize); var doc = new jsPDF('p', 'pt', 'a6'); //a4:表示打印的pdf紙張大小(這個設置得越大,會顯得內容越小) doc.addFont('NotoSansCJKtc-Regular.ttf', 'NotoSansCJKtc', 'normal'); //添加字體 //pdf標題設置 doc.setFont('NotoSansCJKtc'); //設置字體 //pdf標題設置 doc.text(20, 20, '導出標題'); //而且設置字體大小爲5。(以前採用它默認的字體大小,打印的pdf字體都堆在一塊兒了。都是淚啊!) doc.setFontSize(5);
好了,pdf文件打印出來了,看效果吧!segmentfault
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第二種打印pdf的方法(把文字部分轉換爲圖片類型,而後再打印成pdf文件)
四、具體操做
1)下載jspdf插件,官網有。
2)html頁面引用兩個js文件 jspdf.debug.js 和 html2canvas.js (利用該插件將html頁面轉化成圖片,在插入到pdf中)
這裏我沒引入jspdf.debug.js,而是引用的jspdf.js(它們都包含了全部文件)
3)編寫一個js方法 便可實現 轉化pdf。並能夠指定導出區域。
pdf.js中的方法代碼:
function exportPhotoPdf() { if(confirm("您確認下載打印pdf的功能模板?")){ var pdf = new jsPDF('p','pt','a4'); // 設置打印比例 越大打印越小 pdf.internal.scaleFactor = 2; var options = { pagesplit: true, //設置是否自動分頁 "background": '#FFFFFF' //若是導出的pdf爲黑色背景,須要將導出的html模塊內容背景 設置成白色。 }; var printHtml = $('#customers').get(0); // 頁面某一個div裏面的內容,經過id獲取div內容 pdf.addHTML(printHtml,15, 15, options,function() { pdf.save('pdf打印功能測試.pdf'); }); } }
點擊打印按鈕,打印效果以下:
總結:這種方法導出的pdf格式效果最理想,可是不支持中文。而且相對於第一種方法,清晰度不夠。第一種方法雖然很清晰,但樣式消失了。算是各有各的優勢吧!