之前在網路上找到一個用<a> 的download屬性下載的方法,確實很簡單也很方便,但此方法不支援IE,無奈又找到另一個方法。
使用html2canvas將頁面轉換成圖,用canvas2image下載本例所使用的版本:
安裝
npm install html2canvas canvas2image --save
引入
import html2canvas from 'html2canvas';require('./canvas2image.js');
canvas2image.js 需要改動一下,以便綁在window上
(function($){ Canvas2Image = function () { ... }}
_dataURL 可以用來回顯,Canvas2Image.saveAsPNG(canvas) 會直接下載。
Canvas2Image提供了以下幾種方法:
Canvas2Image.saveAsImage(canvasObj, width, height, type)Canvas2Image.saveAsPNG(canvasObj, width, height)Canvas2Image.saveAsJPEG(canvasObj, width, height)Canvas2Image.saveAsJPEG(canvasObj, width, height)Canvas2Image.saveAsJPEG(canvasObj, width, height)Canvas2Image.saveAsJPEG(canvasObj, width, height)Canth, heightheights,m height)Canvas2Image.saveAsBMP(canvasObj, width, height)Canvas2Image.convertToImage(canvasObj, width, height, type)Canvas2Image.convertToPNG(canvasObj, height, type)Canvas2Image.convertToPNG(canvasObj, widvas, height, widvasth. height)Canvas2Image.convertToGIF(canvasObj, width, height)Canvas2Image.convertToBMP(canvasObj, width, height)
在vue中可以用$refs 確定DOM;
backgroundColor: null,此句可使轉出的圖沒有白邊
methods: { toImage() { let _this = this; html2canvas(this.$refs.index,{ backgroundColor: null }).then((canvas) => { let _dataURL = canvas.toDataURL(image/png); // _this.dataURL = _dataURL; Canvas2Image.saveAsPNG(canvas) }); },
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。