vue中实现将页面或者div内容导出为pdf格式
将Vue单页面转成pdf并下载
步骤1:下载对应的库
npm install html2canvas;npm install jspdf --save
步骤2:创建一个htmlToPdf.js的js文件, 然后在main.js中全局引用一下,编写如下代码:
// htmlToPdf.js
// 导出页面为PDF格式
import html2Canvas from 'html2canvas'
import JsPDF from 'jspdf'
export default {install(Vue, options) {Vue.prototype.getPdf = function () {var title = this.htmlTitle //DPF标题html2Canvas(document.querySelector('#pdfDom'), {allowTaint: true,taintTest: false,useCORS: true,y:72, // 对Y轴进行裁切// width:1200,// height:5000,dpi: window.devicePixelRatio * 4, //将分辨率提高到特定的DPI 提高四倍scale: 4 //按比例增加分辨率 }).then(function (canvas) {let contentWidth = canvas.widthlet contentHeight = canvas.heightlet pageHeight = contentWidth / 592.28 * 841.89let leftHeight = contentHeightlet position = 0let imgWidth = 595.28let imgHeight = 592.28 / contentWidth * contentHeightlet pageData = canvas.toDataURL('image/jpeg', 1.0)let PDF = new JsPDF('', 'pt', 'a4')if (leftHeight < pageHeight) {PDF.addImage(pageData, 'JPEG', 0, 0, imgWidth, imgHeight)} else {while (leftHeight > 0) {PDF.addImage(pageData, 'JPEG', 0, position, imgWidth, imgHeight)leftHeight -= pageHeightposition -= 841.89if (leftHeight > 0) {PDF.addPage()}}}PDF.save(title + '.pdf')})}}
}
// main.js
import htmlToPdf from '@/util/htmlToPdf'
Vue.use(htmlToPdf)
步骤三:在vue页面中给需要打印的区域一个div标签,然后给div一个id,id名和htmlToPdf.js中选择的名字一致,代码如下:
<div id="pdfDom">... 将要打印的内容放入其中
</div>
步骤四:在data节点中声明一个htmlTitle变量,指定为pdf文件的文件名
data() {return {htmlTitle: '要生成pdf的文件名'}
}
步骤五:在vue页面中添加一个button按钮,事件名和htmlToPdf.js中的方法名保持一致。
<el-button @click="getPdf()">PDF</el-button>
欧克了,完成以上步骤就可以实现div中内容的转为pdf并下载文件
相关文章:
vue中实现将页面或者div内容导出为pdf格式
将Vue单页面转成pdf并下载 步骤1:下载对应的库 npm install html2canvas;npm install jspdf --save 步骤2:创建一个htmlToPdf.js的js文件, 然后在main.js中全局引用一下,编写如下代码: // htmlToPdf.js // 导出页面为PDF格式 …...
Ubuntu 配置国内源
配置国内源 因为众所周知的原因,国外的很多网站在国内是访问不了或者访问极慢的,这其中就包括了Ubuntu的官方源。 所以,想要流畅的使用apt安装应用,就需要配置国内源的镜像。 市面上Ubuntu的国内镜像源非常多,比较有…...
分布式核心知识
文章目录 前言一、分布式中的远程调用1.1RESTful接口1.2RPC协议1.3区别与联系 二、分布式中的CAP原理 前言 关于分布式核心知识详解 一、分布式中的远程调用 在微服务架构中,通常存在多个服务之间的远程调用的需求。远程调用通常包含两个部分:序列化和通…...
【JMeter】常用线程组设置策略
目录 一、前言 二、单场景基准测试 1.介绍 2.线程组设计 3.测试结果 三、单场景并发测试 1.介绍 2.线程组设计 3.测试结果 四、单场景容量/爬坡测试 1.介绍 2.线程组设计 3.测试结果 五、混合场景容量/并发测试 1.介绍 六、稳定性测试 1.介绍 2.线程组设计 …...
【数据结构】回溯算法公式化解题 leetcode经典题目带刷:全排列、组合、子集
目录 回溯算法一、什么是回溯算法1、基本思想:2、一般步骤: 二、题目带练1、全排列2、组合3、子集 三、公式总结 回溯算法 一、什么是回溯算法 回溯算法(Backtracking Algorithm)是一种解决组合问题、排列问题、选择问题等一类问…...
WPF基础入门-Class3-WPF数据模板
WPF基础入门 Class3:WPF数据模板 1、先在cs文件中定义一些数据 public partial class Class_4 : Window{public Class_4(){InitializeComponent();List<Color> test new List<Color>();test.Add(new Color() { Code "Yellow", Name &qu…...
js将搜索的关键字加颜色
js将搜索的关键字加颜色 使用正则匹配关键字并加入span标签,页面渲染时使用v-html渲染即可 // 文本框内容 let searchCont 测试;const reg new RegExp((${searchCont.value}), g); let data 图片保存测试A; data data.replace(reg, <span style"color:…...
Docker安装Oracle数据库打开、链接速度很慢
问题: 使用Docker安装Oracle数据库打开、链接速度很慢,明显的在在转圈严重影响效率。 解决: 排查到DNS时,发现宿主机DNS配置清空后,通过JDBC连接目标Oracle数据库速度很快 进入容器中进行测试,发现清空DNS…...
学生分班查询系统的创建与使用指南
开学季,负责分班工作的老师们又面临一个难题:如何公布分班结果?将结果放在学校官网上可能会让很多无关人员看到,而不放则会导致家长们纷纷打电话来询问。那么,有没有一种方法可以让家长们自行查看分班结果呢࿱…...
全套解决方案:基于pytorch、transformers的中文NLP训练框架,支持大模型训练和文本生成,快速上手,海量训练数据!
全套解决方案:基于pytorch、transformers的中文NLP训练框架,支持大模型训练和文本生成,快速上手,海量训练数据! 1.简介 目标:基于pytorch、transformers做中文领域的nlp开箱即用的训练框架,提…...
ffmpeg
文章目录 libavcodec实现 libavformat实现libavfilter实现 libswscale实现对比libavfilter图像处理libswscale vs libyuvlibavutil 命令行工具ffmpeg例子 ffprobe例子 FFmpeg 是一个由 C 语言编写的开源跨平台音视频处理工具集,它具有模块化的架构。下面是 FFmpeg 的…...
CH03_代码的坏味道(下)
循环语句(Loops) 从最早的编程语言开始,循环就一直是程序设计的核心要素。如今,函数作为一等公民已经得到了广泛的支持,因此我们可以使用以管道取代循环(231)管道操作(如filter和ma…...
journal日志导致服务器磁盘满
背景 ubuntu 18.04服务器磁盘突然100% 一查/var/log/journal目录占了14G 清理 要清理 journal 日志,可以使用以下步骤: 运行以下命令来查看 journal 日志的使用情况: journalctl --disk-usage这将显示 journal 日志的当前使用情况&#x…...
“Go程序员面试笔试宝典”复习便签
一.逃逸分析 1.1逃逸分析是什么? 逃逸分析,主要是Go编译器用来决定变量分配在堆或者栈的手段。 区分于C/C手动管理内存分配,Go将这些工作交给了编译器。 1.2逃逸分析有什么作用 解放程序员。程序员不需要手动指定指针分配内存。 灵活的…...
数组的度(指数组里任一元素出现频数的最大值)
题目: 给定一个非空且只包含非负数的整数数组 nums,数组的 度 的定义是指数组里任一元素出现频数的最大值。 你的任务是在 nums 中找到与 nums 拥有相同大小的度的最短连续子数组,返回其长度。 示例 1: 输入:nums …...
scala array类型参数
在Scala中,数组(Array)是一种用于存储相同类型元素的数据结构。数组可以用于保存基本数据类型和自定义数据类型的元素。当定义数组类型参数时,您通常是在函数、类或方法签名中使用它们。以下是一些有关Scala数组类型参数的示例&am…...
构建 NodeJS 影院预订微服务并使用 docker 部署(03/4)
一、说明 构建一个微服务的电影网站,需要Docker、NodeJS、MongoDB,这样的案例您见过吗?如果对此有兴趣,您就继续往下看吧。 你好社区,这是🏰“构建 NodeJS 影院微服务”系列的第三篇文章。本系列文章演示了…...
html写一个向flask_socketio发送消息和接收消息并显示在页面上
以下是一个简单的HTML页面,它包含一个输入框、一个发送按钮和一个显示区域。用户可以在输入框中输入消息,点击发送按钮,然后这个消息会被发送到 Flask-SocketIO 服务器。当服务器回应消息时,它会在页面的显示区域显示出来。 <…...
C#使用.Net Core进行跨平台开发
使用 .NET Core 进行跨平台开发是一种灵活的方法,可以在多个操作系统上运行 C# 应用程序。以下是在 C# 中使用 .NET Core 进行跨平台开发的一般步骤: 安装 .NET Core SDK: 在开始之前,需要安装适用于操作系统的 .NET Core SDK。可…...
Java“牵手”天猫店铺所有商品API接口数据,通过店铺ID获取整店商品详情数据,天猫API申请指南
天猫商城是一个网上购物平台,售卖各类商品,包括服装、鞋类、家居用品、美妆产品、电子产品等。天猫商品详情可以帮助消费者更好的了解宝贝信息,从而做出购买决策。同时,消费者也可以通过商品详情了解其他买家对宝贝的评价…...
Kubernetes集群管理终极指南:使用kubectx和kubens高效切换上下文与命名空间
Kubernetes集群管理终极指南:使用kubectx和kubens高效切换上下文与命名空间 【免费下载链接】kubectx Faster way to switch between clusters and namespaces in kubectl 项目地址: https://gitcode.com/gh_mirrors/ku/kubectx 在Kubernetes多集群环境中&am…...
M2LOrder模型管理实战:Python脚本自动扫描/opt目录并生成模型索引表
M2LOrder模型管理实战:Python脚本自动扫描/opt目录并生成模型索引表 1. 项目背景与需求 在实际的AI模型部署和维护过程中,我们经常会遇到模型文件分散存储、版本混乱、信息不透明的问题。M2LOrder情感识别系统就是一个典型的例子,它包含了9…...
OpenClaw自动化写作助手:基于GLM-4.7-Flash的草稿生成与润色
OpenClaw自动化写作助手:基于GLM-4.7-Flash的草稿生成与润色 1. 为什么需要自动化写作助手 作为一个长期与文字打交道的内容创作者,我经常面临这样的困境:明明有好的选题灵感,却卡在初稿阶段耗费大量时间;或是写完后…...
【ArkTS】编程规范
ArkTS 是 HarmonyOS 应用的默认开发语言,在 TypeScript(简称 TS)生态基础上做了扩展,保持 TS 的基本风格。通过规范定义,从而强化了开发期的静态检查和分析,提升了程序执行的稳定性和性能。 一、术语与定义 术语 缩略语 中文解释 ArkTS 无 ArkTS编程语言 TypeScript TS …...
05-OpenClaw 自动生成 PPT 实战:每天节省 3 小时
作者:程序员小明儿 字数:约 9000 字 阅读时间:约 25 分钟 难度:⭐⭐⭐ 中级 系列:OpenClaw 实战 16 例(第 5 篇) 前置条件:已完成 OpenClaw 环境部署和基础配置写在前面 你是不是也这…...
gemeni 生成图片的提示词
[System / Prompt]You are an illustration assistant specialized in creating hand-drawn cartoon-style infographics. Follow all rules below strictly and without deviation.🎨 STYLE RULES(风格规则)Use a pure hand-drawn illustrat…...
终极指南:用Java打造你的专属微信机器人 - 深入解析wechat-api框架
终极指南:用Java打造你的专属微信机器人 - 深入解析wechat-api框架 【免费下载链接】wechat-api 🗯 wechat-api by java7. 项目地址: https://gitcode.com/gh_mirrors/we/wechat-api 想象一下这样的场景:每天早上7点,你的微…...
将Autoresearch转化为通用技能
我是一名技术作家。我每天在文档仓库、Markdown 文件、API 参考、风格指南和 SEO 审计中度过。我不训练语言模型。我不写 CUDA 内核。但当 Andrej Karpathy 发布了他的 autoresearch 时,我无法停止思考它。 这个想法太简单了,事后看来似乎很明显&#x…...
从‘丐版’到‘神板’:深度拆解Raspberry Pi Zero 2 W的散热设计与性能压榨指南
从‘丐版’到‘神板’:深度拆解Raspberry Pi Zero 2 W的散热设计与性能压榨指南 当一款信用卡大小的开发板搭载四核处理器时,散热与性能的平衡便成为硬件极客们最热衷的挑战。Raspberry Pi Zero 2 W以不到15美元的定价,却藏着令人惊喜的工程智…...
从拼图游戏到自动驾驶:点云配准技术的跨领域进化史
从拼图游戏到自动驾驶:点云配准技术的跨领域进化史 1. 三维世界的数字拼图师 1987年,当Paul Besl和Neil McKay在实验室里尝试将两组扫描数据对齐时,他们可能不会想到,这项被称为迭代最近点(ICP)的技术会成为…...
