av素人天堂_free性亚洲_久久亚洲国产视频_国产网红在线_午夜av在线播放_欧美成人精品福利网站_热99在线观看_国产在线观看免费麻豆_日本高清在线观看_亚洲免费网站观看视频

JavaScript實現(xiàn)網(wǎng)頁截圖導(dǎo)出方案

前言

網(wǎng)頁截圖導(dǎo)出不是一個非常高頻的需求,但時不時的也會遇到。這里總結(jié)一下系統(tǒng)的解決方案,然后從中選擇合適自己的。

截圖導(dǎo)出可以看到是兩個功能,第一步實現(xiàn)截圖,第二步實現(xiàn)導(dǎo)出也就是下載能力。

截圖實現(xiàn)

首先,我們必須明白正常javascript是運行在瀏覽器里的,本身沒有截圖的能力。所以要想實現(xiàn)截圖,必須通過其他迂回方案實現(xiàn),廢話少說,直接上結(jié)論。

前端方案1 canvas

[dh url="https://html2canvas.hertzen.com/" icon="" des="html2canvas官網(wǎng)"]html2canvas[/dh]

[dh url="https://html2canvas.hertzen.com/" icon="" des="中文文檔"]中文文檔[/dh]

實現(xiàn)原理:
html2canvas 是一個 HTML 渲染器,屏幕截圖是基于 DOM,因此生成的圖片并不一定 100% 一致,因為它沒有制作實際的屏幕截圖,而是根據(jù)頁面上可用的信息構(gòu)建屏幕截圖。
文檔介紹的比較清楚,canvas只是去還原dom的展示效果。

根據(jù)實現(xiàn)原理,可以想象,實現(xiàn)成本還是比較高的,需要解析dom和css樣式,而且css樣式不一定能完美映射到canvas,另外還會受限于canvas收到的一些限制,比如跨域資源問題。

前端方案2 svg

[dh url="https://github.com/tsayen/dom-to-image" icon="" des="html2canvas官網(wǎng)"]dom-to-image[/dh]

[dh url="https://github.com/1904labs/dom-to-image-more" icon="" des="Github"]dom-to-image升級版[/dh]

實現(xiàn)原理:

核心要素是SVG 的一個特性,允許在 <foreignObject> 標(biāo)簽中包含任意的 HTML 內(nèi)容。所以為了渲染該dom節(jié)點,需要如下步驟:

  1. 遞歸克隆原始DOM節(jié)點
  2. 計算節(jié)點和每個子節(jié)點的樣式并將其復(fù)制到相應(yīng)的克隆,并且要重新創(chuàng)建偽元素,因為它們當(dāng)然不會以任何方式克隆
  3. 嵌入網(wǎng)頁字體,鏈接所有css樣式到style標(biāo)簽,應(yīng)用到clone節(jié)點
  4. 嵌入圖像
    在 <img> 元素中嵌入圖像 URL
    背景 CSS 屬性中使用的內(nèi)嵌圖像,以類似于字體的方式
  5. 將克隆的節(jié)點序列化為 XML
  6. 將 XML 包裹到 <foreignObject> 標(biāo)簽中,然后包裹到 SVG 中,然后使其成為數(shù)據(jù) URL
  7. 創(chuàng)建一個以 SVG 作為源的 Image 元素,并將其呈現(xiàn)在您也已創(chuàng)建的離屏畫布上,然后從畫布中讀取內(nèi)容

嗯,這就是svg方式實現(xiàn)了,和canvas方式一樣,需要我們處理dom,css和資源,但是后續(xù)的繪制渲染工作交給了瀏覽器,所以減輕了很多工作量和代碼量。

服務(wù)端方案

 

[dh url="https://zhaoqize.github.io/puppeteer-api-zh_CN" icon="" des="官方文檔"]Puppeteer [/dh]

Puppeteer 是一個 Node 庫,它提供了一個高級 API 來通過 DevTools 協(xié)議控制 Chromium 或 Chrome。這里具體就不介紹了,我們只使用它的截圖功能。

這個就是真正的截圖能力了,官網(wǎng)有demo。

考慮到業(yè)務(wù)層的頁面都需要用戶訪問權(quán)限,所以正確的步驟應(yīng)該是:

  1. 啟動一個node服務(wù),利用puppeter實現(xiàn)截圖能力
  2. 客戶端發(fā)起一個請求,攜帶cookie
  3. 第一步啟動的服務(wù)處理此請求,生成圖片,地址返回給客戶端
  4. 客戶端拿到圖片資源,進(jìn)行下載即可

對比

html2canvas

優(yōu)點

簡單頁面截圖效果還可以,兼容性還好

缺點

  • 部分樣式無法支持
  • 復(fù)雜頁面,慘不忍睹。
  • cors可以解決跨域,但是實際應(yīng)用還是問題百出
  • 實現(xiàn)非常復(fù)雜,難以改動

在我們項目幾乎無法使用

dom-to-image

優(yōu)點

  • 實現(xiàn)簡單,可下載后自行改動源碼
  • 還原度良好,尤其chrome支持非常好

缺點

  • safari支持不是很好,不過一些問題可以解決(canvas節(jié)點會導(dǎo)出空白,如果使用繪圖引擎的話,建議轉(zhuǎn)化成svg引擎繪圖)
  • ie,edge 無法使用

基本能支持業(yè)務(wù)需求

后端截圖

優(yōu)點

  • 真實截圖,終極方案,無兼容問題

缺點

  • 實現(xiàn)流程稍微繁瑣
  • 需要考慮 用戶權(quán)限認(rèn)證問題

導(dǎo)出實現(xiàn)

導(dǎo)出也就是下載文件到本地

a標(biāo)簽

原理是通過a標(biāo)簽的download屬性實現(xiàn)下載。

// 基本使用
<a href="/images/xxxxx.jpg" download="filename">

// 腳本觸發(fā)
const download = (filename, url) => {
    let a = document.createElement('a'); 
    a.style = 'display: none'; // 創(chuàng)建一個隱藏的a標(biāo)簽
    a.download = filename;
    a.href = url;
    document.body.appendChild(a);
    a.click(); // 觸發(fā)a標(biāo)簽的click事件
    document.body.removeChild(a);
}

blob文件流對象

這個需要服務(wù)端支持,發(fā)起請求,服務(wù)端返回數(shù)據(jù)流,然后前端觸發(fā)下載。
具體就不多說了,網(wǎng)上有很多文章。

這里推薦幾個封裝好的下載文件庫
downloadjs

file-saver
上一篇 flex布局下,div設(shè)置overflow無效問題
下一篇 CorePress主題模仿Mac樣式
目錄
applek

applek管理員

個人說明在個人中心里面設(shè)置

本月創(chuàng)作熱力圖

最新評論
chinacnd
chinacnd
6月26日
這個主題是怎么做到加載速度那么快的?
風(fēng)起云涌
風(fēng)起云涌
6月17日
前臺投稿現(xiàn)在有點太抽象了 希望可以弄成那種分區(qū)填寫的 標(biāo)題,內(nèi)容,圖片,目錄,標(biāo)簽,這樣的
評論于留言建議
風(fēng)起云涌
風(fēng)起云涌
6月17日
希望加個開關(guān)去掉頁腳的站點身份,還有自定義頁腳居中文字
評論于留言建議
卡卡
卡卡
5月31日
倒是放個演示地址啊
av素人天堂_free性亚洲_久久亚洲国产视频_国产网红在线_午夜av在线播放_欧美成人精品福利网站_热99在线观看_国产在线观看免费麻豆_日本高清在线观看_亚洲免费网站观看视频
久久久精品国产免费观看同学| www.日韩免费| 日本精品国语自产拍在线观看| 欧美日韩高清在线一区| 国产欧美日韩亚州综合| 精品久久久网| 欧美一级免费在线观看| 日韩视频在线观看视频| 亚洲国产综合久久| 欧美三级一区二区三区| 色综合影院在线| 中文字幕在线日韩| 国产高清视频一区二区| 在线精品观看| 不卡中文一二三区| 一级日本免费的| 国产99精品| 久精品在线观看| 91精品国产乱码久久蜜臀| 国产欧美日韩不卡免费| 欧美三级一区二区三区| 久久精品国产成人一区二区三区| 久久精品久久精品国产大片| 国产视频一区三区| 中文字幕在线观看亚洲| 成年人黄国产| 欧美 中文字幕| 91精品在线视频观看| 91精品国产91久久| 欧美三级在线看| 精品一二三区视频| 国产一区 二区 三区一级| 99久久久精品免费观看国产| 日韩在线视频二区| 91精品国产高清91久久久久久| 亚洲成年人在线播放| 国产裸体歌舞团一区二区| 黄色一区二区在线观看| 国产欧美日韩不卡免费| 国产成人日日夜夜| 国产小视频免费在线网址| 一级网站免费观看| 中文字幕欧美日韩精品| 欧美日韩成人一区二区| av三级在线观看| 日韩三级精品电影久久久| 久久久综合精品| 欧美变态tickling挠脚心| 99久热re在线精彩视频| 99久久精品国产亚洲| 国产在线黄色| 欧美在线中文字幕| 国产日韩在线视频| 中文字幕第一页在线播放| 中文字幕亚洲在| 国产91久久久久| 国产成人精品综合网站| 91精品国产日韩91久久久久久| 国产69精品久久久久孕妇国产69久久| 亚洲精品中文字幕乱码三区| 日韩欧美中文字幕视频| 国产乱码在线观看| 亚洲图片小说综合| 日本xxxwww免费视频| 国产欧美日韩综合精品| 欧美日韩综合高清一区二区| 天堂√8在线中文| 色综合久久六月婷婷中文字幕| 欧美亚洲另类制服自拍| 日韩免费视频一区二区| 中文字幕精品在线| 色综合婷婷久久| 国产欧美综合在线观看第十页| 久久久精品99| 在线免费播放av| 国产福利免费观看| 亚洲成年人在线播放| av影视在线看| 快she精品国产999| 久久精品国产成人一区二区三区| 午夜一区二区三区| 久久久精品日韩| 欧美中文字幕视频在线观看| 国产小视频免费在线网址| 欧美日韩在线看| 国产欧美久久久精品影院| 国产极品嫩模在线视频一区| 在线视频一区二区三区在线播放| 国产欧美日韩不卡免费| 91久久精品国产91久久| 黄色一级大片在线免费看国产一| 日韩高清不卡一区| 日韩专区视频网站| 日韩免费视频一区二区视频在线观看| 色www精品视频在线观看| 亚洲v中文字幕| 欧美日韩在线播放一区| 97久久精品午夜一区二区| 中文字幕五月天| 欧美日韩中文字幕日韩欧美| 亚洲三级中文字幕| 国产日韩精品在线观看| 999精品网| 国产一级免费看| 日韩欧美一级精品久久| 在线免费播放av| 欧美中文字幕在线视频| 欧美亚洲视频在线看网址| 日韩手机在线观看视频| 欧美 日韩 国产 在线观看| 中文天堂资源在线| 欧美一级免费看| www高清在线视频日韩欧美| 红桃视频国产一区| 亚洲欧洲综合另类| 大香一本蕉伊线亚洲网| 精人妻一区二区三区| 国产欧美日韩精品在线观看| www.精品视频| 亚洲福利在线观看| 日韩网站中文字幕| 顶级网黄在线播放| 国内不卡的二区三区中文字幕| 亚洲高清视频在线| 精品久久久视频| 中文字幕在线欧美| 午夜一区二区视频| 一区二区在线视频播放| 一级片免费在线| 九九视频精品免费| 国产 日韩 欧美 综合 一区| 国产资源在线观看| 视频一区视频二区中文| 国产欧美综合在线观看第十页| 国产亚洲一区字幕| 久久精品夜夜夜夜久久| 国产成人精品网址| 亚洲第一视频在线观看| 九九九精品视频| 人人做人人澡人人爽欧美| 欧美日韩精品综合在线| 深夜福利一区| 日韩精品一区二区三区视频播放| 亚洲va韩国va欧美va精品| 91精品国产日韩91久久久久久| 国产在线高潮| 日本不卡免费高清视频| 亚洲三级国产| 国产视频三级在线观看播放| 国产黄在线观看免费观看不卡| 欧美va亚洲va日韩∨a综合色| 成人精品国产福利| 亚洲人成欧美中文字幕| 欧美久久在线观看| 正在播放日韩精品| 国产资源中文字幕| 国精品产品一区| 日韩欧美中文字幕一区| 国产一级视频在线播放| 日本亚洲欧美三级| 正在播放日韩精品| 久久久久久久久综合| 91精品在线观| 国产黄在线播放| 免费高清在线一区| 中文字幕第一页在线播放| 日韩在线视频一区| 午夜国产欧美理论在线播放| 久久久综合精品| 亚洲一区在线观看网站| 欧美亚洲另类制服自拍| 亚洲第一页中文字幕| 久久婷婷国产| 搞黄在线观看| 亚洲天堂国产视频| 精品av中文字幕在线毛片| 欧美日韩一区二区在线视频| 精品久久久三级| 国产一级片在线播放| 日韩精品国产欧美| 日韩福利视频导航| 黄污视频在线看| 99国产成 人 综合 亚洲欧美| 精品国产91乱高清在线观看| 日本国产在线视频| www日韩在线观看| 中文字幕日韩高清| 午夜亚洲福利| 国产一级片在线播放| 国产亚洲一区字幕| 精品不卡一区二区| 亚洲一级特黄| 国产91一区| 99色在线视频| 91精品国产乱码久久蜜臀| 国产 日韩 欧美 综合| 国产在线二区| 欧美日韩视频免费播放| 国产乱码在线观看| 国产在线不卡一区| 欧美日韩在线观看一区| 国产无遮挡在线视频免费观看| 91久久大香伊蕉在人线| 日韩中文字幕久久| 亚洲一区中文字幕在线| 国产乱码在线| 日韩专区视频网站| 91精品国产色综合久久久蜜香臀| 欧美日韩在线视频免费观看| 国产手机精品视频| aaa大片在线观看| 久久手机免费观看| 国产成人日日夜夜| 中文字幕中文字幕精品| 日韩精品一区二区三区视频播放| 中文字幕第一页在线| av手机天堂| 九色蝌蚪视频在线| 日韩欧美国产高清91| 亚洲a级在线播放观看| 午夜影院在线观看欧美| 日韩亚洲一区在线| 美女尤物久久精品| 久久香蕉av| 视频一区不卡| 日韩精品a在线观看91| 国产欧美中文在线| 中文字幕视频一区二区三区久| 国产一级片网站| 中文字幕亚洲国产| 精品日韩欧美在线| 国产一级在线免费观看| 亚洲福利在线观看| 国产一级网站视频在线| 欧美日韩精品国产| 久久久精品欧美| 欧美日韩国产一区中文午夜| 精品一区二区在线观看视频| 日韩欧美中文字幕公布| 亚洲天堂国产视频| 1区2区3区在线视频| 欧美 日韩 综合| 欧美日韩在线第一页| 国产字幕在线看| 日韩美女视频一区二区在线观看| 亚洲成年人在线播放| 日韩 欧美 中文| 在线欧美一级视频| 在线国产三级| 欧美日韩视频不卡| 精品亚洲永久免费| 亚洲精品欧美二区三区中文字幕| 国产欧美一级| 亚洲乱码一区av黑人高潮| 亚洲一级二级| 亚洲 欧美 日韩系列| 91精品久久久久久久91蜜桃| 国产福利免费在线观看| 国产黄色在线免费观看| 国产手机视频一区二区| 久久精品国产成人一区二区三区| 亚亚洲欧洲精品| 精品国产欧美日韩不卡在线观看| 欧美日韩精品免费在线观看视频| av影视在线看| 国产亚洲污的网站| 日韩亚洲一区在线| 久久久水蜜桃| 日韩欧美中文字幕在线观看| 欧美日韩久久不卡| 一区二区三区精品在线观看| 黄色片网站在线| 中文字幕高清在线播放| 深夜福利亚洲| 日韩亚洲国产欧美| 欧美日韩高清一区二区| 天天综合天天综合| 日韩精品视频在线| 欧美日韩亚洲国内综合网俺| 国产免费电影网站入口| 97久久精品午夜一区二区| 99国产成 人 综合 亚洲欧美| 日本不卡高清视频一区| 国产欧美久久久精品免费| 亚洲专区一二三| 韩日中文字幕第一页| 精品中文字幕在线播放| 亚洲综合在线中文字幕| 国产欧美日韩成人| 欧美日韩国产123区| 欧美日韩精品在线视频| 国产无遮挡在线视频免费观看| 日韩欧美亚洲国产| 天堂在线中文资源| 国产成人精品999| 国产成人精品免费在线| 午夜伊人狠狠久久| 亚洲成av人片一区二区密柚| 国产日韩三级| 欧美日韩99| 久久精品人妻一区二区三区| 国产www在线观看| 三级精品视频| 在线视频亚洲| 韩国av一区二区| 国产一级一片免费播放| 欧美日韩国产高清一区| 一区二区欧美国产| 亚洲视频中文字幕| 亚洲综合在线不卡| 国产香蕉免费精品视频| 日韩精品视频在线看| 精品国产欧美成人夜夜嗨| 久本草在线中文字幕亚洲欧美| 天堂在线视频中文网| 亚洲第一页中文字幕| 欧美亚洲视频在线看网址| 亚洲电影中文字幕在线观看| 婷婷久久综合九色国产成人| 成人h视频在线观看| 中文字幕一区二区三区精品| 国产一区在线不卡| 欧美日韩中文字幕在线视频| 国产亚洲人成a一在线v站| 国产三级在线观看视频| 欧美日韩国产首页| 日韩国产一区久久| 国产一级免费| 二区视频在线观看| 91精品国产综合久久香蕉的特点| 亚洲精华国产欧美| 精品国产综合久久| 日韩精品在线第一页| 中文字幕在线观看视频www| 日韩亚洲欧美中文高清在线| 久久精品夜夜夜夜久久| 日韩欧美在线视频| 日韩欧美资源站| 精品人妻一区二区三区视频| 日韩在线视频免费观看高清中文| 国产乱国产乱老熟300部视频| 欧美日韩国产免费观看视频| 91精品国产日韩91久久久久久| 亚洲欧洲国产视频| 精品一二三区视频| 久久精品人妻一区二区三区| 91久久精品国产91久久| 亚洲三级中文字幕| 99日韩精品| 中文字幕日韩在线观看| 亚洲欧洲在线观看av| 999精品视频在线观看播放| 天堂在线www天堂中文在线| 二区视频在线观看| 欧美日韩精品免费看| 国产视频中文字幕| 日韩在线观看视频一区| 中文字幕欧美日韩在线| 欧美国产综合在线V| 区日韩二区欧美三区| 91国内精品在线视频| 日韩在线一区二区视频| 欧美日韩一级片在线观看| a视频在线播放| 日韩视频精品| 99久久www免费| 亚洲综合欧美在线| 91精品国产99| 欧美久久一二三四区| 二区视频在线观看| 精品国产欧美日韩不卡在线观看| 国产成人精品免费久久久久| 日韩免费看网站| av免费在线播放| 国产高清精品在线观看| 91精品国产综合久久精品| 欧美1区免费| 免费视频中文字幕| 不卡av免费在线| 国产欧美 在线欧美| av免费在线不卡| 欧美日韩不卡在线视频| 999在线视频| 亚洲黄色www| 在线视频国内一区二区| 中文字幕欧美人妻精品一区蜜臀| av免费网站在线观看| 五月天久久比比资源色| 国产偷国产偷亚洲清高网站| 高清在线一区| 最新中文字幕在线| 日韩欧美国产午夜精品| 国产天堂素人系列在线视频| 欧美日韩在线播放视频| 蜜臀91精品国产高清在线观看| 最新日韩中文字幕| 欧美日韩夫妻久久| 亚洲黄色在线观看| 日韩欧美一级在线播放| 中文字幕精品在线|