# Jquery套件-PrintArea ###### tags: `實作功能` [官網](https://plugins.jquery.com/PrintArea/) > ![](https://i.imgur.com/oDyGXQp.png) > [參考來源](http://tech.yunyingxbs.com/article/detail/id/355.html) ## 實際使用遇到問題1 * 第一頁最上面都會有空白 ![](https://i.imgur.com/VDsmfGC.png) ![](https://i.imgur.com/NctKaNi.png) #### 跟同事 Debug 後 * PrintArea建了一個 iframe * 發現是 css 的問題 ( body padding-top 50px ) ![](https://i.imgur.com/XH431VA.png) ![](https://i.imgur.com/N9iPfev.png) ![](https://i.imgur.com/dg3mQ4B.png) * 解決問題 ![](https://i.imgur.com/PiVikLZ.png) * 結論:基本上大部分不需要設定就很好用,注意一下CSS ## 實際使用遇到問題2 配合 ChartJs 使用時,沒有顯示圖 #### 原因 我猜應該是因為畫布複製不過去... 複製過去也只是空有設定好 Size 的畫布 #### 解法 準備一個隱藏的 image 元素 ![](https://i.imgur.com/YbC8ydC.png) 因為 PrintArea 每次都會重新產生 iframe, 只好在列印的時候隱藏 canvas,顯示 canvas 轉的 img; 在顯示的時候 顯示 canvas,隱藏 canvas 轉的 img ``` function CreateHiddenImgFromCanvas() { // 清掉原本的圖 $('#imageFromMyChart_PC').remove(); var canvas = document.getElementById('myChart_PC'), dataUrl = canvas.toDataURL('image/png', 1), // quality = 1 ( 最佳 ) imageFoo = document.createElement('img'); imageFoo.src = dataUrl; imageFoo.id = 'imageFromMyChart_PC' // Style your image here imageFoo.style.display = 'none'; imageFoo.style.width = '100%'; imageFoo.style.height = '400px'; // After you are done styling it, append it to the BODY element $('#divChartContainer_PC').append(imageFoo); } ``` ---