vue 图片转pdf
尝试了集中图片转pdf的方式,
(1)最终较为优秀的一种是使用jspdf将图片转为pdf,支持JPG/JPEG/PNG/BMP/TIF/TIFF图片格式转换,详见我的另一篇文章:
https://blog.csdn.net/Ann_52547/article/details/132214909?spm=1001.2014.3001.5502
(2)使用print-js插件,去看看
(3)pdfMake图片转pdf,支持JPG/JPEG/PNG图片格式转换,去看看
(4)html2canvas,转出来的图片模糊,需要处理啊,我没处理,去看看
(2)print-js图片转pdf
npm安装print-js依赖
main.js:
import print from 'print-js'
使用:
printJS({// blob链接 数组printable: ['blob:http//.....'],// 打印类型 目前为图片样式 可以根据上面的网址进行修改 type: 'pdf',// 二维码样式 可以自己进行修改imageStyle: 'margin:0px; padding:0px; width:40%; height:40%; display: block; margin: 0 auto; padding-top:12%'// 也可以设置以下参数 继承所有css样式 没试过image的 html的效果不错// targetStyles:['*']})
(3)pdfMake图片转pdf
安装pdfMake依赖
async convertToPDF(blob, id) {let this_ = thislet base64Data = await this.readFile(blob);const docDefinition = {content: [{ image: base64Data, fit: [190, 277], alignment: 'center' } //width: 400,]}const pdfDocGenerator = pdfMake.createPdf(docDefinition)pdfDocGenerator.getBlob(pdfBlob => {console.log("这是pdf的blob格式-----"pdfBlob);// 可以在这里使用blob,比如将其转换为Blob URLlet url = window.URL.createObjectURL(new Blob([pdfBlob], { type: 'application/pdf' }))});
},//blob转base64
readFile(file) {return new Promise((resolve, reject) => {const reader = new FileReader();reader.onload = function () {const contents = reader.result;resolve(contents);};reader.onerror = function (event) {reject(event.target.error);};reader.readAsDataURL(file);});
},
其他一些转化方法
//ArrayBuffer转换为Base64
arrayBufferToBase64(arrayBuffer) {const uint8Array = new Uint8Array(arrayBuffer);let binaryString = '';for (let i = 0; i < uint8Array.length; i++) {binaryString += String.fromCharCode(uint8Array[i]);}return btoa(binaryString);
},
(4)html2canvas图片转pdf
安装依赖
<div v-for="(item, index) in list" :key="index"><img :id="'imageContainer'+item.id" :src="item.imgurl" alt="" />
</div>
async imgToPdf(imgUrl, id) {// 将图片渲染为Canvas//因为img标签是循环展示图片的,通过id判断是哪个img标签const canvas = await html2canvas(window.document.getElementById('imageContainer'+id))// 获取Canvas的DataURLconst imageURL = canvas.toDataURL('image/png')//const imageURL = canvas.toDataURL(imgUrl)// 创建PDF实例并设置纸张大小const pdf = new jsPDF('p', 'px', 'a4')// 计算图片在PDF中的宽度和高度const pdfWidth = pdf.internal.pageSize.getWidth()const pdfHeight = (canvas.height * pdfWidth) / canvas.width// 将图片添加到PDF中pdf.addImage(imageURL, 'JPEG', 0, 0, pdfWidth, pdfHeight)pdf.save()const blob = new Blob([pdf], { type: 'application/PDF' })console.log("生成的pdf的blob文件---",blob)},
相关文章:
vue 图片转pdf
尝试了集中图片转pdf的方式, (1)最终较为优秀的一种是使用jspdf将图片转为pdf,支持JPG/JPEG/PNG/BMP/TIF/TIFF图片格式转换,详见我的另一篇文章: https://blog.csdn.net/Ann_52547/article/details/1322149…...
20.5 HTML 媒体
1. video视频标签 video视频标签: 是HTML中用于在网页上嵌入视频的元素.常用的视频标签属性: - src属性: 指定视频文件的URL地址. - controls属性: 用于显示视频播放控件(如播放按钮, 进度条等), 使用户能够控制视频的播放. - width和height: 指定视频的宽度和高度. - autopla…...
科大讯飞分类算法挑战赛2023的一些经验总结
引言: ResNet是he kaiming大佬的早年神作,当年直接刷榜各大图像分类任务。ResNet是一种残差网络,咱们可以把它理解为一个子网络,这个子网络经过堆叠可以构成一个很深的网络,而ResNext在其基础上,进行了一定修改完善&am…...
2023年京东按摩仪行业数据分析(京东销售数据分析)
近年来,小家电行业凭借功能与颜值,取代黑电和白电,成为家电市场的主要增长点。在这一市场背景下,颜值更高、功能更丰富、品种更齐全的各类按摩仪,借助新消费和电子商务的风潮,陆续被推上市场。今年…...
【C语言】进阶指针,超详解,含丰富代码示例
文章目录 前言指针进阶的重点内容1.字符指针2.数组指针3.指针数组4.函数指针5.函数指针数组6. 指向函数指针数组的指针 总结 这里是初阶的链接,方便大家对照查看!!!添加链接描述 前言 大家好呀,今天和大家将指针进阶…...
wireshark入门指北
文章目录 前言安装Linux上wireshark安装 使用捕获的时候添加过滤条件抓取浏览器https内容 附录抓取非浏览器的https流量 前言 本文长期维护,记录使用wireshark的使用过程。 虽然有官方文档-Wireshark User’s Guide,但是不想去慢慢读。应用层的图形软件…...
18、SQL注入之堆叠及WAF绕过注入
目录 堆叠查询注入WAF绕过-SQL注入简要讲解安全狗、宝塔等防护waf策略规则大小写和关键字替换加密解密编码解码等价函数特殊符号反序列化注释符混用更改提交方式Fuzz大法数据库特性垃圾数据溢出HTTP参数污染 实测简易CMS头部注入漏洞Bypass原理分析 堆叠查询注入 stacked inje…...
nodejs+vue+elementui+express旅游出行指南网站_655ms
本文主要介绍了一种基于windows平台实现的旅游出行指南。该系统为用户找到景点信息和酒店信息提供了更安全、更高效、更便捷的途径。本系统有两个角色:管理员和用户,要求具备以下功能: (1)用户可以浏览主页了解旅游出行…...
【心电图信号压缩】ECG信号压缩与通过三次样条近似重建的ECG信号压缩研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
matlab使用教程(11)—创建随机数
MATLAB 使用算法来生成伪随机数和伪独立数。这些数在数学意义上并非严格随机和独立的,但它们能够通过各种随机和独立统计测试,并且其计算可以重复,方便用于测试或诊断目的。 rand 、 randi 、 randn 和 randperm 函数是创建随机数数组的主要…...
一、安全世界观
文章目录 1、 Web安全简史1.1 中国黑客简史1.2 黑客技术的发展历程1.3 web安全的兴起 2、黑帽子、白帽子3、安全的本质4、安全三要素5、如何实施安全评估5.1 资产等级划分5.2 威胁分析5.3 风险分析5.4 设计安全方案 6、白帽子兵法6.1 Secure By Default6.2 纵深防御原则6.3 数据…...
爬虫014_文件操作_打开关闭_读写_序列化_反序列化---python工作笔记033
报错,没有指定路径,没有指定路径无法创建文件 这样可以在当前目录下创建一个可写的文件 可以看到找到刚才生成的文件,看看内容...
企业前后端分离软件架构如何设计?
企业前后端分离软件架构的设计涉及到前端和后端的独立性、通信方式、数据流管理等多个方面。下面我将为你介绍一个常见的前后端分离软件架构设计: 1、前端层: 框架选择:选择适合项目需求的前端框架,例如React、Vue.js、Angular等…...
生产执行MES系统:提升企业灵活性和响应速度的关键利器
在竞争激烈的市场环境下,企业需要不断提高其灵活性和响应速度,以适应快速变化的需求和市场动态。生产执行MES(Manufacturing Execution System)系统作为信息技术的重要应用,为企业提供了强大的工具和平台,能…...
什么是分布式系统,如何学习分布式系统
正文 虽然本人在前面也写过好几篇分布式系统相关的文章,主要包CAP理论,分布式储存与分布式事务,但对于分布式系统,并没有一个跟清晰的概念。分布式系统涉及到很多的技术、理论与协议,很多人也说,分布式系统…...
数据库锁表 Lock wait timeout exceeded; try restarting transaction
锁等待超时 Lock wait timeout exceeded; try restarting transaction,是当前事务在等待其它事务释放锁资源造成的 解决办法 1、数据库中执行如下sql,查看当前数据库的线程情况: show full PROCESSLIST2、再到 INNODB_TRX 事务表中查看&…...
Oracle 知识篇+分区表上的索引由global改为local注意事项
★ 知识点 二、知识点 Local型索引有如下优点 1.Only one index partition must be rebuilt when a maintenance operation other than SPLIT PARTITION or ADD PARTITION is performed on an underlying table partition. 2.The duration of a partition maintenance opera…...
基于2.4G RF开发的无线游戏手柄解决方案
平时喜欢玩游戏的朋友,肯定知道键鼠在某些类型的游戏适配和操作方面,不如手柄。作为一个游戏爱好者,还得配上一个游戏手柄才行。比如动作和格斗、体育游戏,由于手柄更合理的摇杆位置和按键布局,操作起来也是得心应手。…...
Python之一:基础信息
#查看pip版本,cmd命令窗口(注意环境变量%PYTHON_HOME%\scripts,是否在path中) pip --version #安装pip,cmd命令窗口 python -m pip install pip #查看已安装模块,cmd命令窗口 python -m pydoc modules #查看…...
K8S系列文章之 Traefik快速入门
traefik 与 nginx 一样,是一款优秀的反向代理工具,或者叫 Edge Router。至于使用它的原因则基于以下几点 无须重启即可更新配置自动的服务发现与负载均衡与 docker 的完美集成,基于 container label 的配置漂亮的 dashboard 界面metrics 的支…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...
RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...
【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验
Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...
redis和redission的区别
Redis 和 Redisson 是两个密切相关但又本质不同的技术,它们扮演着完全不同的角色: Redis: 内存数据库/数据结构存储 本质: 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能: 提供丰…...
Vue3中的computer和watch
computed的写法 在页面中 <div>{{ calcNumber }}</div>script中 写法1 常用 import { computed, ref } from vue; let price ref(100);const priceAdd () > { //函数方法 price 1price.value ; }//计算属性 let calcNumber computed(() > {return ${p…...
CMS内容管理系统的设计与实现:多站点模式的实现
在一套内容管理系统中,其实有很多站点,比如企业门户网站,产品手册,知识帮助手册等,因此会需要多个站点,甚至PC、mobile、ipad各有一个站点。 每个站点关联的有站点所在目录及所属的域名。 一、站点表设计…...
无需布线的革命:电力载波技术赋能楼宇自控系统-亚川科技
无需布线的革命:电力载波技术赋能楼宇自控系统 在楼宇自动化领域,传统控制系统依赖复杂的专用通信线路,不仅施工成本高昂,后期维护和扩展也极为不便。电力载波技术(PLC)的突破性应用,彻底改变了…...
