当前位置: 首页 > news >正文

学校为什么要做网站深圳seo网站优化公司

学校为什么要做网站,深圳seo网站优化公司,国内的电商平台,手机上搭建个人网站🚀 场景一:利用vue向pdf文件中写入二维码图片或其他图片 🚀 场景二:向pdf中添加水印 思路: 1、先通过url链接生成二维码,二维码存在于dom中 2、使用html2canvas库将二维码的dom转为一个canvas对象 3、根据c…

🚀 场景一:利用vue向pdf文件中写入二维码图片或其他图片
🚀 场景二:向pdf中添加水印

思路:
1、先通过url链接生成二维码,二维码存在于dom中
2、使用html2canvas库将二维码的dom转为一个canvas对象
3、根据canvas对象获取blob中的buffer
4、最后将这个二维码以图片的形式嵌入到pdf文件流中

安装依赖

npm i html2canvas
npm i qrcodejs2-fixes
npm i pdf-lib

引入

import html2canvas from 'html2canvas'
import QRCode from 'qrcodejs2-fixes'
import { degrees, PDFDocument } from 'pdf-lib'

封装

封装qrToPdf.js,用的时候直接调用该方法,将pdf文件流(blob对象)和二维码url链接地址传入进去 就可以,我这里就以window打开一个新页签预览处理之后的pdf为例了,真实项目也可能是下载,都是差不多的,下载也很简单,通过a标签,window.URL.createObjectURL转为一个路径,然后给a标签增加download属性,值为文件名称,click即下载了

src/utils/qrToPdf.js

import html2canvas from 'html2canvas'
import QRCode from 'qrcodejs2-fixes'
import { degrees, PDFDocument } from 'pdf-lib'export default function ({ pdfBlob, qrcodeUrl = 'https://www.baidu.com/' }) {if(!pdfBlob) returnpdfBlob.arrayBuffer().then(async buffer => {const pdfDoc = await PDFDocument.load(buffer)const qrcodeDom = document.createElement('div')qrcodeDom.id = 'wft-qrcode'document.body.appendChild(qrcodeDom)new QRCode(document.getElementById('wft-qrcode'), {text: qrcodeUrl,width: '128',height: '128',colorDark: '#000000',colorLight: '#ffffff',correctLevel: QRCode.CorrectLevel.H,})html2canvas(document.getElementById('wft-qrcode')).then(canvas => {canvas.toBlob(qrcodeBlob => {qrcodeBlob.arrayBuffer().then(async qrcodeBuffer => {const image = await pdfDoc.embedPng(qrcodeBuffer)const dims = image.scale(0.6)const pages = pdfDoc.getPages()for (let i = 0; i < pages.length; i++) {let page = pages[i]const { width, height } = page.getSize()page.drawImage(image, {x: width - 100, // 距离右侧100y: height - 100, // 距离上侧100  就是右上角width: dims.width,height: dims.height,rotate: degrees(0)})}const pdfBytes = await pdfDoc.save()preView(pdfBytes)document.body.removeChild(qrcodeDom)})}, 'image/png')})})
}// 打开新页签预览
function preView(stream, docTitle = '测试PDF') {const URL = window.URL || window.webkitURL;// href 就是生成的pdf地址,可以拿到href做不通操作,下载预览等等const href = URL.createObjectURL(new Blob([stream], { type: 'application/pdf;charset=utf-8' }))const wo = window.open(href)// 设置新打开的页签 document titlelet timer = setInterval(() => {if (wo.closed) {clearInterval(timer)} else {wo.document.title = docTitle}}, 500)
}

引入调用使用的时候:

previewEmbedQrcodeToPdf({pdfBlob: file, // 你的文件流qrcodeUrl: 'xxxx' // 你的生成二维码的url链接
})

案例(Vue3)

vue2大致写法都一样

<template><div class="main"><input id="fileInp" type="file"></div>
</template>
<script setup>
import { onMounted, onUnmounted } from 'vue'
import previewEmbedQrcodeToPdf from '@/utils/qrToPdf'let cusInp = nullonMounted(() => {cusInp = document.getElementById('fileInp')cusInp.addEventListener('input', inpHander)
})onUnmounted(() => {cusInp.removeEventListener('input', inpHander)
})function inpHander(event) {const file = event.target.files[0]if(!file) returnpreviewEmbedQrcodeToPdf({pdfBlob: file})
}
</script>
<style scoped>
.main {width: 100%;height: 100%;
}
</style>

合成预览图

在这里插入图片描述

此博客主要参考:https://blog.csdn.net/m0_51431448/article/details/131216664
Vue向Pdf添加水印:https://blog.csdn.net/m0_51431448/article/details/129539428?spm=1001.2014.3001.5501

http://www.laogonggong.com/news/100311.html

相关文章:

  • 网站备案号是什么样子怎么做静态网页
  • 有自己的域名怎么建立网站网站如何规范的排版编辑
  • 网站建设与制作教案建网站教程
  • wordpress 雪花插件企业网站做seo的必要性
  • 微网站开发协议做最好的win7系统下载网站
  • 做网站需要哪些东西天津建设部网站首页
  • 做测算的网站php企业网站开发
  • 怎么建立自己公司的网站泰安网站建设开发公司
  • 成品网站货源1688在线app和网站开发人员工作职责
  • wordpress后台登陆太慢整站优化 快速排名
  • 连云港建设网站公司企业文化
  • 深圳火狼设计公司招聘网站做网站需要会什么条件
  • 长沙网站建设工作室沭阳网站开发
  • 银川做网站公司郑州彩票网站建设
  • 网站统计代码放哪里关键词广告
  • 零代码建站平台手机网站开发多少钱
  • dw个人网站建立教学国家电网网站开发图片素材
  • 网站推广策划方案大数据股票软件定制公司
  • 南宁建设厅网站是什么设计网页设计师培训
  • 霍邱网站设计seo推广有用吗
  • 企业网站有哪些类型宣城市网站集约化建设
  • 数据线 东莞网站建设北京景观设计公司
  • 广州新塘网站制作推广做任务的兼职网站
  • 帝国企业网站源码兼职20网站开发
  • 本地网站建设软件建设通会员多少钱一个月
  • 小说网站论文摘要买卖商标交易平台
  • 友点企业网站管理系统忘记密码常见网站模式
  • 带登录网站模板android studio下载官网
  • 寻找聊城做网站的公司揭阳网站制作平台
  • 兰州网站建设程序公司一定建设网站吗