1. 程式人生 > 其它 >Vue使用html2canvas將頁面轉化為圖片下載到本地

Vue使用html2canvas將頁面轉化為圖片下載到本地

install

npm install --save html2canvas

在所需頁面引入

import html2canvas from "html2canvas"

use

<div
  ref="codeRef"
  class="code text-white text-center p-20px relative mb-30px"
>
  <p class="text-xl mb-10px">
    {{ univName }}
  </p>
  <p>報名點</p>
  <img
    class="mt-22px"
    width
="154" height="154" src="~assets/images/pages/opcenter/admissions/code.png" alt="報名二維碼" /> <p class="absolute bottom-12 left-0 w-full text-xs"> 招生老師:{{ teacherName }} {{ formState.phone }} </p> </div> <a-button class="default-acctive mr-12px flex-shrink-0 block m-auto"
@click="downloadCode" > 下載報名海報 </a-button>

vue中用ref來指定你需要轉成圖片下載的dom

const downloadCode = () => {
  html2canvas(this.$refs.codeRef).then(canvas => {
    const base64 = canvas.toDataURL('image/png')
    const myBlob = dataURLtoBlob(base64)
    const myUrl = URL.createObjectURL(myBlob)
    downloadFile(myUrl, 
'報名二維碼') }) } const dataURLtoBlob = (dataurl: string) => { const arr: any[] = dataurl.split(',') const mime = arr[0].match(/:(.*?);/)[1] const bstr = atob(arr[1]) let n = bstr.length const u8arr = new Uint8Array(n) while (n--) { u8arr[n] = bstr.charCodeAt(n) } return new Blob([u8arr], { type: mime }) } const downloadFile = (url: string, name: string) => { const a = document.createElement('a') a.setAttribute('href', url) a.setAttribute('download', name) a.setAttribute('target', '_blank') const clickEvent = document.createEvent('MouseEvents') clickEvent.initEvent('click', true, true) a.dispatchEvent(clickEvent) }

參考連結:https://www.cnblogs.com/zouwangblog/p/11140568.html

參考連結:https://www.cnblogs.com/myflowers/p/13753540.html