国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

前端vue基于html2canva jspdf 實現(xiàn)前端頁面加水印 并導(dǎo)出頁面PDF

這篇具有很好參考價值的文章主要介紹了前端vue基于html2canva jspdf 實現(xiàn)前端頁面加水印 并導(dǎo)出頁面PDF。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

隨著技術(shù)的發(fā)展,開發(fā)的復(fù)雜度也越來越高,傳統(tǒng)開發(fā)方式將一個系統(tǒng)做成了整塊應(yīng)用,經(jīng)常出現(xiàn)的情況就是一個小小的改動或者一個小功能的增加可能會引起整體邏輯的修改,造成牽一發(fā)而動全身。通過組件化開發(fā),可以有效實現(xiàn)單獨開發(fā),單獨維護,而且他們之間可以隨意的進行組合。大大提升開發(fā)效率低,降低維護成本。

組件化對于任何一個業(yè)務(wù)場景復(fù)雜的前端應(yīng)用以及經(jīng)過多次迭代之后的產(chǎn)品來說都是必經(jīng)之路。組件化要做的不僅僅是表面上看到的模塊拆分解耦,其背后還有很多工作來支撐組件化的進行,例如結(jié)合業(yè)務(wù)特性的模塊拆分策略、模塊間的交互方式和構(gòu)建系統(tǒng)等等 。

本文給大家介紹的組件是:

基于html2canva jspdf 實現(xiàn)前端頁面加水印 并導(dǎo)出頁面PDF;

閱讀全文下載完整組件代碼請關(guān)注微信公眾號: 前端組件開發(fā)

vue水印前端組件,前端,javascript,vue.js,微信小程序,前端框架,uni-app,css3

效果圖如下:

vue水印前端組件,前端,javascript,vue.js,微信小程序,前端框架,uni-app,css3

代碼實現(xiàn)如下:

# 使用方法

```使用方法

<!-- 引入加入 導(dǎo)出pdf插件 -->

<script type="text/javascript" src="./static/html2canvas.js"></script>

<script type="text/javascript" src="./static/jspdf.debug.js"></script>

//? 調(diào)用頁面加水印方法

this.watermark({

"watermark_txt": "中國廣東cc.gd"

});

// 調(diào)用下載pdf報告方法

downKcReport();

```文章來源地址http://www.zghlxwxcb.cn/news/detail-772442.html

#### HTML代碼部分

```html

<template>

<view class="content">

<view class="exportPdfBtn" @click="downKcReport()">導(dǎo)出PDF</view>

<!-- 可視化 -->

<view style="background-color: white; border-radius: 4px; margin-top: -4px;">

<!-- 柱形圖 堆疊 -->

<h4 style="margin-left: 12px; font-size: 16px; height: 30px; line-height: 30px;"> 柱形圖 堆疊

</h4>

<div class="mui-content-padded">

<div id="dsj_zscq" style="width: calc(100vw - 40px); height: 280px;"></div>

</div>

<!-- 折線圖 -->

<h4 style="margin-left: 12px; font-size: 16px; height: 30px; line-height: 30px;"> 折線圖

</h4>

<div class="mui-content-padded">

<div id="dsj_cxcg" style="width: calc(100vw - 40px); margin: -18px 0px; height: 280px;">

</div>

</div>

<!-- 柱狀圖 + 折線圖-->

<h4 style="margin-left: 12px; font-size: 16px; height: 30px; line-height: 30px; margin-top: 0px;">

柱狀圖 + 折線圖 </h4>

<div class="mui-content-padded">

<div id="dsj_zlhjl" style="width: calc(100vw - 40px); height: 290px;"></div>

</div>

<!-- 有效知識產(chǎn)權(quán)結(jié)構(gòu) -->

<h4 style="margin-left: 12px; font-size: 16px; height: 30px; line-height: 30px; margin-top: 0px;">

餅圖 </h4>

<div class="mui-content-padded">

<div id="dsj_zscqjg" style="width: calc(100vw - 40px); height: 306px;"></div>

</div>

<!-- 專利iPC結(jié)構(gòu) -->

<h4 style="margin-left: 12px; font-size: 16px; height: 30px; line-height: 30px; margin-top: 0px;">

樹形結(jié)構(gòu)圖 </h4>

<div class="mui-content-padded">

<div id="dsj_zlipc_content"

style="margin-left: -10px;? width: calc(100vw - 40px); height: auto; margin-bottom: 30px;">

</div>

</div>

<!-- 柱狀圖 -->

<h4 style="margin-left: 12px; font-size: 16px; height: 30px; line-height: 30px; margin-top: 0px;">

柱狀圖 </h4>

<div class="mui-content-padded">

<div id="dsj_zljz" style="width: calc(100vw - 40px); height: 280px;"></div>

</div>

<!-- 專利法律狀態(tài)分布 -->

<h4 style="margin-left: 12px; font-size: 16px; height: 30px; line-height: 30px; margin-top: 0px;">

餅圖 </h4>

<div class="mui-content-padded">

<div id="dsj_zlfl" style="width: calc(100vw - 40px); height: 280px;"></div>

</div>

<!-- 專利壽命分布 -->

<h4 style="margin-left: 12px; font-size: 16px; height: 30px; line-height: 30px; margin-top: 0px;">

柱狀圖 </h4>

<div class="mui-content-padded">

<div id="dsj_zlsm" style="width: calc(100vw - 40px); height: 280px;"></div>

</div>

<!-- 樹形結(jié)構(gòu)圖 -->

<h4 style="margin-left: 12px; font-size: 16px; height: 30px; line-height: 30px; margin-top: 0px;">

樹形結(jié)構(gòu)圖 </h4>

<div class="mui-content-padded">

<div id="dsj_zllhsq" style="width: calc(100vw - 40px); height: auto; margin-bottom: 30px;">

</div>

</div>

</view>

</view>

</template>

```

#### JS代碼 (引入組件 填充數(shù)據(jù))

```javascript

<script>

import myIndex from '../index/index.js'

export default {

data() {

return {

title: 'Hello'

}

},

mounted() {

// 刷新Echart數(shù)據(jù)

this.refreshEchartData();

},

onLoad() {

//? 頁面加水印方法

this.watermark({

"watermark_txt": "中國廣東cc.gd"

});

},

methods: {

//? 頁面加水印方法

watermark(settings) {

//默認設(shè)置

var defaultSettings = {

watermark_txt: "text",

watermark_x: 20, //水印起始位置x軸坐標(biāo)

watermark_y: 80, //水印起始位置Y軸坐標(biāo)

watermark_rows: 80, //水印行數(shù)

watermark_cols: 20, //水印列數(shù)

watermark_x_space: 80, //水印x軸間隔

watermark_y_space: 102, //水印y軸間隔

watermark_color: '#aaa', //水印字體顏色

watermark_alpha: 0.4, //水印透明度

watermark_fontsize: '14px', //水印字體大小

watermark_font: '微軟雅黑', //水印字體

watermark_width: 180, //水印寬度

watermark_height: 80, //水印長度

watermark_angle: 20 //水印傾斜度數(shù)

};

//采用配置項替換默認值,作用類似jquery.extend

if (arguments.length === 1 && typeof arguments[0] === "object") {

console.log("arguments = " + JSON.stringify(arguments[0]));

// 獲取參數(shù)配置

var src = arguments[0];

for (let key in src) {

if (src[key] && defaultSettings[key] && src[key] === defaultSettings[key])

continue;

else if (src[key])

defaultSettings[key] = src[key];

}

}

var oTemp = document.createDocumentFragment();

//獲取頁面最大寬度

var page_width = Math.max(document.body.scrollWidth, document.body.clientWidth);

var cutWidth = page_width * 0.0150;

var page_width = page_width - cutWidth;

//獲取頁面最大高度

var page_height = Math.max(document.body.scrollHeight, document.body.clientHeight) + 2860;

// var page_height = document.body.scrollHeight+document.body.scrollTop;

//如果將水印列數(shù)設(shè)置為0,或水印列數(shù)設(shè)置過大,超過頁面最大寬度,則重新計算水印列數(shù)和水印x軸間隔

if (defaultSettings.watermark_cols == 0 || (parseInt(defaultSettings.watermark_x + defaultSettings

.watermark_width * defaultSettings.watermark_cols + defaultSettings.watermark_x_space * (

defaultSettings.watermark_cols - 1)) > page_width)) {

defaultSettings.watermark_cols = parseInt((page_width - defaultSettings.watermark_x + defaultSettings

.watermark_x_space) / (defaultSettings.watermark_width + defaultSettings

.watermark_x_space));

defaultSettings.watermark_x_space = parseInt((page_width - defaultSettings.watermark_x -

defaultSettings

.watermark_width * defaultSettings.watermark_cols) / (defaultSettings.watermark_cols - 1));

}

//如果將水印行數(shù)設(shè)置為0,或水印行數(shù)設(shè)置過大,超過頁面最大長度,則重新計算水印行數(shù)和水印y軸間隔

if (defaultSettings.watermark_rows == 0 || (parseInt(defaultSettings.watermark_y + defaultSettings

.watermark_height * defaultSettings.watermark_rows + defaultSettings.watermark_y_space * (

defaultSettings.watermark_rows - 1)) > page_height)) {

defaultSettings.watermark_rows = parseInt((defaultSettings.watermark_y_space + page_height -

defaultSettings

.watermark_y) / (defaultSettings.watermark_height + defaultSettings.watermark_y_space));

defaultSettings.watermark_y_space = parseInt(((page_height - defaultSettings.watermark_y) -

defaultSettings

.watermark_height * defaultSettings.watermark_rows) / (defaultSettings.watermark_rows - 1));

}

var x;

var y;

for (var i = 0; i < defaultSettings.watermark_rows; i++) {

y = defaultSettings.watermark_y + (defaultSettings.watermark_y_space + defaultSettings

.watermark_height) * i;

for (var j = 0; j < defaultSettings.watermark_cols; j++) {

x = defaultSettings.watermark_x + (defaultSettings.watermark_width + defaultSettings

.watermark_x_space) *

j;

var mask_div = document.createElement('div');

mask_div.id = 'mask_div' + i + j;

mask_div.className = 'mask_div';

mask_div.appendChild(document.createTextNode(defaultSettings.watermark_txt));

//設(shè)置水印div傾斜顯示

mask_div.style.webkitTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";

mask_div.style.MozTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";

mask_div.style.msTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";

mask_div.style.OTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";

mask_div.style.transform = "rotate(-" + defaultSettings.watermark_angle + "deg)";

mask_div.style.visibility = "";

mask_div.style.position = "absolute";

mask_div.style.left = x + 'px';

mask_div.style.top = y + 'px';

mask_div.style.overflow = "hidden";

mask_div.style.zIndex = "9999";

mask_div.style.pointerEvents = 'none'; //pointer-events:none? 讓水印不遮擋頁面的點擊事件

//mask_div.style.border="solid #eee 1px";

mask_div.style.opacity = defaultSettings.watermark_alpha;

mask_div.style.fontSize = defaultSettings.watermark_fontsize;

mask_div.style.fontFamily = defaultSettings.watermark_font;

mask_div.style.color = defaultSettings.watermark_color;

mask_div.style.textAlign = "center";

mask_div.style.width = defaultSettings.watermark_width + 'px';

mask_div.style.height = defaultSettings.watermark_height + 'px';

mask_div.style.display = "block";

oTemp.appendChild(mask_div);

};

};

document.body.appendChild(oTemp);

},

// 下載pdf報告

downKcReport() {

html2canvas(

document.body, {

scale: 2,

dpi: 192, //導(dǎo)出pdf清晰度

onrendered: function(canvas) {

var contentWidth = canvas.width;

var contentHeight = canvas.height;

//一頁pdf顯示html頁面生成的canvas高度;

var pageHeight = contentWidth / 592.28 * 841.89;

//未生成pdf的html頁面高度

var leftHeight = contentHeight;

//pdf頁面偏移

var position = 0;

//html頁面生成的canvas在pdf中圖片的寬高(a4紙的尺寸[595.28,841.89])

var imgWidth = 595.28;

var imgHeight = 592.28 / contentWidth * contentHeight;

var pageData = canvas.toDataURL('image/jpeg', 1.0);

var pdf = new jsPDF('', 'pt', 'a4');

//有兩個高度需要區(qū)分,一個是html頁面的實際高度,和生成pdf的頁面高度(841.89)

//當(dāng)內(nèi)容未超過pdf一頁顯示的范圍,無需分頁

if (leftHeight < pageHeight) {

pdf.addImage(pageData, 'JPEG', 0, 0, imgWidth, imgHeight);

} else {

while (leftHeight > 0) {

pdf.addImage(pageData, 'JPEG', 0, position, imgWidth, imgHeight)

leftHeight -= pageHeight;

position -= 841.89;

//避免添加空白頁

if (leftHeight > 0) {

pdf.addPage();

}

}

}

pdf.save(name + '.pdf');

console.log('成功導(dǎo)出pdf');

},

//背景設(shè)為白色(默認為黑色)

background: "#fff"

})

},

refreshEchartData() {

// 返回數(shù)據(jù)需在json轉(zhuǎn)換格式工具 轉(zhuǎn)成Json格式

let result = {

"data": {

"unionCompanyNum": 4,

"goldList": [{

"isNewRecord": true,

"comId": "1",

"socialCode": "123456",

"fmsqYx": "1",

"cfmwyxzscqsl": "1",

"years": "1",

"yxzscqsl": "1",

"dnzlhjl": "1"

}],

"patentLifeList": [{

"isNewRecord": true,

"comId": "1",

"socialCode": "123456",

"percentage": "1",

"quantity": "1",

"scope": "1-3",

"totalNum": "1"

}, {

"isNewRecord": true,

"comId": "1",

"socialCode": "123456",

"percentage": "1",

"quantity": "1",

"scope": "3-5",

"totalNum": "2"

}, {

"isNewRecord": true,

"comId": "1",

"socialCode": "123456",

"percentage": "1",

"quantity": "3",

"scope": "5-10",

"totalNum": "3"

}, {

"isNewRecord": true,

"comId": "1",

"socialCode": "123456",

"percentage": "1",

"quantity": "3",

"scope": "10-",

"totalNum": "4"

}],

"patentValueList": [{

"isNewRecord": true,

"comId": "1",

"socialCode": "123456",

"fmgbZs": "1",

"fmsqYx": "1",

"syxxYx": "1",

"wgsjYx": "1",

"scope": "0-5",

"totalNum": "1",

"percentageHighRights": "1",

"percentageHigh": "1",

"dspw": "1",

"jslypw": "1"

}, {

"isNewRecord": true,

"comId": "1",

"socialCode": "123456",

"fmgbZs": "1",

"fmsqYx": "1",

"syxxYx": "1",

"wgsjYx": "1",

"scope": "5-10",

"totalNum": "1",

"percentageHighRights": "1",

"percentageHigh": "1",

"dspw": "1",

"jslypw": "1"

}, {

"isNewRecord": true,

"comId": "1",

"socialCode": "123456",

"fmgbZs": "1",

"fmsqYx": "2",

"syxxYx": "3",

"wgsjYx": "4",

"scope": "90-100",

"totalNum": "10"

}],

"legalList": [{

"isNewRecord": true,

"comId": "1",

"socialCode": "123456",

"underTrial": "1",

"invalid": "1",

"efficient": "1",

"totalNum": "1",

"percentage": "1"

}],

"propertyRightList": [{

"isNewRecord": true,

"comId": "1",

"socialCode": "123456",

"fmgbZs": "1",

"fmgbZsP": "1",

"fmsqYx": "1",

"fmsqYxP": "1",

"syxxYx": "1",

"syxxYxP": "1",

"wgsjYx": "1",

"wgsjYxP": "1",

"rzYx": "1",

"rzYxP": "1",

"maxPercentage": "1",

"maxPercentageRights": "1",

"dspw": "1",

"jslypw": "1"

}],

"unionPatentNum": 13,

"ipcList": [{

"isNewRecord": true,

"comId": "1",

"socialCode": "123456",

"ipcDept": "1",

"ipcClass": "1",

"ipcNum": "1",

"ipcZbClass": "1",

"ipcZb": "1",

"dspw": "1",

"jslypw": "1"

}],

"yearList": [{

"isNewRecord": true,

"comId": "1",

"fmgbZs": "1",

"fmsqYx": "1",

"syxxYx": "1",

"wgsjYx": "1",

"rzYx": "1",

"years": "2022",

"dnkjcxcgkbjshl": "1",

"socialCode": "123456"

}, {

"isNewRecord": true,

"comId": "1",

"years": "2023",

"dnkjcxcgkbjshl": "2",

"socialCode": "123456"

}, {

"isNewRecord": true,

"comId": "1",

"years": "2026",

"dnkjcxcgkbjshl": "6",

"socialCode": "123456"

}, {

"isNewRecord": true,

"comId": "1",

"years": "2027",

"dnkjcxcgkbjshl": "7",

"socialCode": "123456"

}],

"unionList": [{

"isNewRecord": true,

"comId": "1",

"socialCode": "123456",

"unionName": "測試5",

"unionNum": "5",

"unionCompany": "1"

}, {

"isNewRecord": true,

"comId": "1",

"socialCode": "123456",

"unionName": "測試4",

"unionNum": "4",

"unionCompany": "1"

}, {

"isNewRecord": true,

"comId": "1",

"socialCode": "123456",

"unionName": "測試3",

"unionNum": "3",

"unionCompany": "1"

}, {

"isNewRecord": true,

"comId": "1",

"socialCode": "123456",

"unionName": "測試1",

"unionNum": "1",

"unionCompany": "1"

}]

},

"statusCode": 200,

"header": {

"date": "Tue, 30 May 2023 07:08:28 GMT",

"powered-by": "JeeSite V5.0.1 0",

"transfer-encoding": "chunked",

"content-type": "application/json"

},

"errMsg": "request:ok"

};

let resultData = result.data;

if (resultData.yearList != undefined && resultData.yearList.length > 0) {

console.log('執(zhí)行圖表1');

// 填充圖表1 2

myIndex.fillChartOneTwo(resultData.yearList);

}

if (resultData.goldList != undefined && resultData.goldList.length > 0) {

// 填充圖表3

myIndex.fillChartThree(resultData.goldList);

}

if (resultData.propertyRightList != undefined && resultData.propertyRightList.length > 0) {

// 填充圖表4

myIndex.fillChartFour(resultData.propertyRightList);

}

if (resultData.ipcList != undefined && resultData.ipcList.length > 0) {

// 填充圖表5

myIndex.fillChartFive(resultData.ipcList);

}

if (resultData.patentValueList != undefined && resultData.patentValueList.length > 0) {

// 填充圖表6

myIndex.fillChartSix(resultData.patentValueList);

}

if (resultData.legalList != undefined && resultData.legalList.length > 0) {

// 填充圖表7 法律

myIndex.fillChartSeven(resultData.legalList);

}

if (resultData.patentLifeList != undefined && resultData.patentLifeList.length > 0) {

// 填充圖表8 壽命

myIndex.fillChartEight(resultData.patentLifeList);

}

if (resultData.unionList != undefined && resultData.unionList.length > 0) {

// 填充圖表9 專利聯(lián)合

myIndex.fillChartNine(resultData, "廣汽集團");

}

}

}

}

</script>

```

#### CSS

```CSS

<style>

.content {

display: flex;

flex-direction: column;

align-items: center;

justify-content: center;

}

.mui-content-padded {

margin: 10px 8px;

}

.mui-content-padded div {

font-size: 13px;

}

.exportPdfBtn {

width: 100px;

height: 40px;

line-height: 40px;

margin-top: 20px;

background-color: greenyellow;

text-align: center;

}

</style>

```

到了這里,關(guān)于前端vue基于html2canva jspdf 實現(xiàn)前端頁面加水印 并導(dǎo)出頁面PDF的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 前端生成pdf之html2canvas+jsPDF,以及解決圖片不顯示bug

    開發(fā)背景: 需要給頁面中相應(yīng)的內(nèi)容生成pdf,查找文檔后發(fā)現(xiàn)要用到兩個插件。html2canvas 以及 jsPDF html2canvas 給dom結(jié)構(gòu)轉(zhuǎn)化為canvas,然后生成各種類型圖片 jsPDF 把canvas 生成的圖片url 轉(zhuǎn)化為pdf 參數(shù) image:表示要插入的圖片資源,可以是圖片文件的路徑或者base64編碼字符串。

    2024年02月02日
    瀏覽(28)
  • (vue)Vue項目中使用jsPDF和html2canvas生成PDF

    (vue)Vue項目中使用jsPDF和html2canvas生成PDF

    效果: 1.:安裝jsPDF和html2canvas 2.在需要生成PDF文檔的組件中引入jsPDF和html2canvas 解決參考: 1.https://www.jianshu.com/p/31d37bef539b 2.https://www.php.cn/faq/556634.html 3.https://blog.csdn.net/m0_54967474/article/details/123820384

    2024年02月10日
    瀏覽(22)
  • vue2如何將頁面生成 pdf 導(dǎo)出 html2Canvas + jspdf

    vue2如何將頁面生成 pdf 導(dǎo)出 html2Canvas + jspdf

    npm i html2canvas npm i jspdf import html2canvas from \\\'html2canvas\\\'; import jsPDF from \\\'jspdf\\\' export const htmlToPDF = async (htmlId, title = \\\"報表\\\", bgColor = \\\"#fff\\\") = { ? let pdfDom = document.getElementById(htmlId) ? pdfDom.style.padding = \\\'0 10px !important\\\' ? const A4Width = 595.28; ? const A4Height = 841.89; ? let canvas = await html2canvas(pd

    2024年02月16日
    瀏覽(24)
  • vue前端實現(xiàn)將頁面顯示內(nèi)容生成pdf文件的幾種方法,html2canvas、dom-to-image、jspdf(帶分頁)基本使用以及介紹

    實際開發(fā)需求:vue項目中,根據(jù)數(shù)據(jù)結(jié)構(gòu)生成echarts圖表組件,生成帶有樣式的圖表以后,點擊下載按鈕,把圖表以pdf格式的文件下載到本地 實現(xiàn)思路:將vue界面的echarts組件生成圖片,然后使用插件將生成的圖片放入pdf中,再實現(xiàn)pdf文件的下載 涉及框架以及插件:vue、echar

    2024年01月25日
    瀏覽(30)
  • html2canvas和jspdf實現(xiàn)html導(dǎo)出pdf文件

    實現(xiàn)原理 先使用html2canvas對頁面進行截圖,再使用jspdf將截圖生成pdf文件 html2canvas:通過純JS對瀏覽器頁面進行截圖 jspdf:一個基于 HTML5 的客戶端解決方案,用于在客戶端 JavaScript 中生成 pdf文件 的庫 安裝html2canvas和pdf 截圖源碼 1. 截長圖不分頁 2. 截圖分頁 導(dǎo)出pdf源碼 函數(shù)調(diào)

    2024年02月12日
    瀏覽(19)
  • html2Canvas+jsPDF 下載PDF 遇到跨域的對象存儲的圖片無法顯示

    html2Canvas+jsPDF 下載PDF 遇到跨域的對象存儲的圖片無法顯示

    ? ? 一、問題原因? 對象存儲的域名和你網(wǎng)址的域名不一樣,此時用Canvas相關(guān)插件 將DOM元素轉(zhuǎn)化為PDF,就會出現(xiàn)跨域錯誤。 二、解決辦法? 兩步 1. 圖片元素上設(shè)置屬性??crossorigin=\\\"anonymous\\\"? 支持原生img和eleme組件 ?2. 存儲桶設(shè)置資源跨域訪問 阿里騰訊云為例:↓ 阿里云OS

    2024年02月15日
    瀏覽(21)
  • 【無標(biāo)題】使用html2canvas和jspdf生成的pdf在不同大小的屏幕下文字大小不一樣

    【無標(biāo)題】使用html2canvas和jspdf生成的pdf在不同大小的屏幕下文字大小不一樣

    問題:使用html2canvas和jspdf生成的pdf在不同大小的屏幕下文字大小不一樣,在mac下,一切正常,看起來很舒服,但是當(dāng)我把頁面放在擴展屏幕下(27寸),再生成一個pdf,雖然排版一樣,但是文字就變得非常小 下面的是在mac下的,上面是在擴展屏幕下的,最開始我以為是文字大

    2024年02月16日
    瀏覽(25)
  • 【vue-qrcode + html2canvas】前端二維碼生成與下載

    【vue-qrcode + html2canvas】前端二維碼生成與下載

    其實一開始搜的時候,很多還都是推薦的 vue-qrcode ,于是就先用這個,但是發(fā)現(xiàn)想要在二維碼中間放一個自定義的image的時候,這個庫有點麻煩,需要自己將 image 圖片蓋在二維碼上面(官方教程也是如此)。好吧,一開始我也這么干了,但是蓋完之后,我需要下載這個有居中

    2024年04月17日
    瀏覽(38)
  • 【前端】html2canvas生成圖片空白排查data:;(js vue react uniapp)

    【前端】html2canvas生成圖片空白排查data:;(js vue react uniapp)

    因為要做一個分享圖,就用到了html2canvas,一開始是好好的,今天隨便測了下,發(fā)現(xiàn)圖片顯示不出來了。打印了下,生成的圖片鏈接變成了 data:; 。后面一步一步地排查,發(fā)現(xiàn)是頁面內(nèi)容太多了,刪減一點內(nèi)容就能顯示出來。然后我又去認真看了下html2canvas的各個參數(shù),發(fā)現(xiàn)可

    2024年02月03日
    瀏覽(23)
  • 解決前端html2canvas生成圖片慢問題

    分享一個小發(fā)現(xiàn) 這里首先直接說結(jié)論: ????????由于html2canvas生成圖片的過程會從html的head、body層標(biāo)簽開始遍歷,所以對于項目較大,但是只需要對 某個dom (下文以D稱呼)生成圖片的情況非常不友好! ??????? ?所以,一定要通過ignoreElements過濾掉大部分沒用的標(biāo)簽。

    2024年02月13日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包