【vue3.0】实现导出的PDF文件内容是红头文件格式

效果图:

在这里插入图片描述

编写文件里面的主要内容

  <main>
        <div id="report-box">
          <p>线索描述</p>
          <p class="label">
            <span>线索发现时间:</span> <span>{{ detailInfoVal?.problem.createdDate }}</span>
          </p>
          <p class="label">
            <span>派发时间:</span> <span>{{ detailInfoVal?.taskCreateTime }}</span>
          </p>

          <p class="label">
            <span>所属责任区:</span> <span>{{ detailInfoVal?.problem.regionalName }}</span>
          </p>

          <p>处置描述</p>
          <ElInput
            v-model="textarea"
            :autosize="{ minRows: 4, maxRows: 4 }"
            maxlength="200"
            type="textarea"
            placeholder="请填写"
            show-word-limit
          />
          <div style="margin-top: 10px">
            <p>整改图片对比</p>
            <span>【整改前 {{ detailInfoVal?.taskCreateTime }}</span>
            <br />
            <ElImage
              v-for="(item, index) in srcList"
              :key="item"
              class="img"
              :infinite="false"
              :src="item"
              :zoom-rate="1.2"
              :initial-index="initialIndexImage"
              :preview-src-list="srcList"
              fit="cover"
              hide-on-click-modal
              @show="onPreviewImg(index)"
            />
            <br />
            <span>【整改后 {{ detailInfoVal?.taskUpdateTime }}</span>
            <div v-if="srcList2.length" class="img_box">
              <div v-for="(item, index) in srcList1" :key="index">
                <img
                  v-if="['png', 'jpg', 'jpeg'].includes(item.type)"
                  :src="item.url"
                  style="width: 120px; height: 120px; border-radius: 5px; margin-right: 5px"
                />
              </div>
            </div>
            <br />
            <span v-if="!srcList2.length">暂无图片信息</span>
          </div>
        </div>
      </main>

在导出事件里面处理文件的红色标题以及红丝横线,小圆点功能

在这里插入图片描述

在这里插入图片描述

使用的工具:【jspdf】【html2canvas】

npm install jspdf
npm install html2canvas

引入

import jsPDF from 'jspdf';
import html2canvas from 'html2canvas';
import dayjs from 'dayjs';//文件里内容我用到了时间

核心代码

html2canvas(document.querySelector('#report-box'), { backgroundColor: '#fff', useCORS: true }).then((canvas) => {
    const pageData = canvas.toDataURL('image/png');
    var contentWidth = canvas.width;
    var contentHeight = canvas.height;

    var imgWidth = 530;
    var imgHeight = (595.28 / contentWidth) * contentHeight;

    var pdf = new jsPDF('', 'pt', 'a4'); // 纵向排列

    window.pdfAddFont(pdf);
    pdf.addFont('SourceHanSans-Normal.ttf', 'SourceHanSans-Normal', 'normal');
    pdf.setFont('SourceHanSans-Normal');

    const fontColor = 'red'; //文字的颜色,哪里需要设置 就在需要添加文字之前去执行

    // 添加双横线的函数
    function addDoubleLine(y) {
      pdf.setLineWidth(5);
      pdf.setDrawColor(255, 0, 0);
      // 绘制第一条横线
      pdf.line(40, y, 570, y);

      pdf.setLineWidth(2);
      // 绘制第二条横线,y + 10 表示下方有10单位的间隔
      pdf.line(40, y + 5, 570, y + 5);
    }

    // 添加圆点
    function addDoubleDot(x, y) {
      // 设置圆的样式(红色填充)
      pdf.setFillColor('red');

      // 开始一个新的路径
      const radius = 1;

      pdf.ellipse(x, y, radius, radius);
    }

    pdf.setFontSize(20); // 设置字体大小
    pdf.setTextColor(fontColor); // 设置字体颜色
    pdf.text('有害生物异常任务报告', 620 / 2, 40, {  //第二个参数 和第三个参数(左、上)
      align: 'center',
    });

    pdf.setFontSize(12); // 设置字体大小
    pdf.setTextColor(0, 0, 0);
    pdf.text('有害生物防治检疫站', 40, 75, {
      align: 'left',
    });

    pdf.text(`${dayjs().format('YYYY-MM-DD HH:mm:ss')}`, 570, 75, {
      align: 'right',
    });

    pdf.setTextColor(227, 60, 47);

    // 调用函数添加双横线
    addDoubleLine(80);

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

    pdf.setFontSize(12); // 设置字体大小
    pdf.setTextColor(113, 115, 118);
    pdf.text(`编辑${userRoleInfo.value.userName}`, 40, imgHeight + 160, {
      align: 'left',
    });
    
	// 调用函数添加双横线
    addDoubleLine(imgHeight + 140);
    
	// 调用函数添加小圆点
    addDoubleDot(620 / 2, imgHeight + 155);

    pdf.save(`有害生物异常任务报告-${dayjs().format('YYYY-MM-DD HH:mm:ss')}`);
  });

备注

代码中添加字体之前调用了 window.pdfAddFont() 是提前写好的一个js文件,放到了服务器上,文件的内容
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/5fcc724083f342fe9d5987d2fd1a21b5.png

其中对于html2canvas参数的介绍如下:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/480291.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Springboot+vue的四川美食分享网站+数据库+报告+免费远程调试

项目介绍: Springbootvue的四川美食分享网站。Javaee项目&#xff0c;springboot vue前后端分离项目 本文设计了一个基于Springbootvue的前后端分离的四川美食分享网站&#xff0c;采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&am…

WORD某一段格式调整,其他段落也调整

在编辑WORD文字格式时&#xff0c;有时候会出现WORD某一段格式调整&#xff0c;其他段落的格式直接就乱了&#xff0c;该如何修复&#xff1f; 答&#xff1a;问题的根源在于格式的自动更新&#xff0c;把自动更新前面的勾选框取消即可。

同步服务器操作系统公网仓库到本地02--搭建http内网仓库源 _ 麒麟KOS _ 统信UOS _ 中科方德 NFSCNS

原文链接&#xff1a;同步服务器操作系统公网仓库到本地02 —搭建http内网仓库源| 麒麟KOS | 统信UOS | 中科方德 NFSCNS Hello&#xff0c;大家好啊&#xff01;继之前我们讨论了如何同步服务器公网仓库到本地服务器之后&#xff0c;今天我们将进入这个系列的第二篇文章——通…

编程出现bug?怎么用Python打印异常

在 Python 编程中&#xff0c;异常是指程序执行过程中出现的错误或异常情况。当程序遇到异常时&#xff0c;为了更好地调试和定位问题&#xff0c;我们需要打印异常信息。本文将详细介绍如何在 Python 中打印异常&#xff0c;并提供一些示例和注意事项。 一、try-except 语句捕…

Ubuntu 安装 Carla仿真环境

1、系统要求 Ubuntu 16.04/18.04/20.04 CARLA 为 16.04 之前的 Ubuntu 版本提供支持。然而&#xff0c;Unreal Engine需要合适的编译器才能正常工作。 CARLA 服务器至少需要 6 GB GPU&#xff0c;但建议使用 8 GB。 2、安装NIVDIA驱动 BISO设置 开机F12&#xff0c;进入BIOS…

如何让电脑定时开机?这个方法你一定要学会

前言 前段时间小白在上班的时候&#xff0c;个人使用一台台式机和一台笔记本电脑。台式机并不是经常使用&#xff0c;但整个公司的数据中心是建立在小白所使用的那台台式机上。 如果台式机没有开机&#xff0c;同事们就没办法访问数据中心获取自己想要的资料。领导也没办法链…

python的OA公文发文管理系统flask-django-php-nodejs

采用结构化的分析设计&#xff0c;该方法要求结合一定的图表&#xff0c;在模块化的基础上进行系统的开发工作。在设计中采用“自下而上”的思想&#xff0c;在OA公文发文管理系统实现了用户、公文分类、公文信息、待办提醒等的功能性。系统根据现有的管理模块进行开发和扩展&a…

【python】python3基础

文章目录 一、安装pycharm 二、输入输出输出 print()文件输出&#xff1a;格式化输出&#xff1a; 输入input注释 三、编码规范四、变量保留字变量 五、数据类型数字类型整数浮点数复数 字符串类型布尔类型序列结构序列属性列表list &#xff0c;有序多维列表列表推导式 元组tu…

python爬虫使用代理ip的好处是什么?

近年来&#xff0c;随着信息时代的不断发展&#xff0c;网络数据的获取和分析变得愈发重要。而Python作为一种强大的编程语言&#xff0c;其爬虫技术在数据采集领域得到了广泛应用。然而&#xff0c;在使用Python爬虫时&#xff0c;为何要考虑使用代理服务器呢?这和python爬虫…

HarmonyOS实战开发-编写一个分布式邮件系统

概述 本篇Codelab是基于TS扩展的声明式开发范式编程语言编写的一个分布式邮件系统&#xff0c;可以由一台设备拉起另一台设备&#xff0c;每次改动邮件内容&#xff0c;都会同步更新两台设备的信息。效果图如下&#xff1a; 说明&#xff1a; 本示例涉及使用系统接口&#xff…

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之五 简单局部/整体马赛克效果

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之五 简单局部/整体马赛克效果 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之五 简单局部/整体马赛克效果 一、简单介绍 二、简单局部/整体马赛克效果实现原理 三、简单局部/整体马赛克…

Maven发布开源框架到远程仓库

1.背景 当你写了一个自我感觉良好的开源工具希望给他人分享&#xff0c;如果只是在github等网站进行公布之外&#xff0c;用户使用起来还不是很方便&#xff0c;特别是当你提供是特定领域的基础工具。你还可以把它部署到中央仓库&#xff0c;这样别人使用就会方便很多。接下来…

Csharp学习Linq

Linq的学习 这里继续使用之前文章创建的学生类&#xff0c;首先简单介绍一下linq的使用。 Student.cs public class Student{public int Id { get; set; }public int ClassId { get; set; }public string Name { get; set; }public int Age { get; set; }public string Descr…

欧科云链:2024将聚焦发展与安全,用技术助力链上数据安全和合规

近期&#xff0c;OpenAI和Web3.0两大新技术发展势头迅猛。OpenAI 再次引领AI领域的新浪潮&#xff0c;推出了创新的文本转视频模型——Sora&#xff0c;Sora 可以创建长达60 秒的视频&#xff0c;包含高度详细的场景、複杂的摄像机运动以及情感丰富角色&#xff0c;再次将AI 的…

网络基础「HTTP」

&#x1f52d;个人主页&#xff1a; 北 海 &#x1f6dc;所属专栏&#xff1a; Linux学习之旅、神奇的网络世界 &#x1f4bb;操作环境&#xff1a; CentOS 7.6 阿里云远程服务器 文章目录 1.再谈协议1.1.认识URL1.2.Encode 和 Decode 2.HTTP 协议2.1.协议格式2.2.见一见请求2.…

【OpenCV C++Python】(五)图像平滑(模糊)

文章目录 图像平滑均值滤波高斯滤波中值滤波双边滤波(Bilateral Filtering ) PythonC 图像线性平滑空间滤波&#xff08;加权均值滤波器&#xff0c;几何均值滤波&#xff0c;谐波均值滤波&#xff0c;逆谐波均值滤波&#xff09;&#xff0c;非线性平滑空间滤波&#xff08;中…

2024 年 5 个 Linux 开源数字化学习平台

与其他行业一样&#xff0c;教育界多年来一直在经历数字化转型的过程。随着数字化学习平台的建立&#xff0c;目前只要能上网&#xff0c;任何人都可以接受教育。 “e-learning”一词的意思是“数字化学习”&#xff0c;是当今最常用的词之一。 它指的是通常在互联网上进行的培…

unity Mirror网络同步

我们直接来剖析&#xff0c;上干货 在github上的主页代码&#xff0c;稍微修改了下&#xff1a; using System.Collections; using System.Collections.Generic; using Mirror; using UnityEngine;public class Player : NetworkBehaviour {// Synced automatically //自动同…

0201线性方程组和矩阵-矩阵及其运算-线性代数

文章目录 一、线性方程组二、矩阵的定义结语 一、线性方程组 设有 n 个未知数 m n个未知数m n个未知数m个方程的线性方程组 { a 11 x 1 a 12 x 2 ⋯ a 1 n x n b 1 , a 21 x 1 a 22 x 2 ⋯ a 2 n x n b 2 , ⋯ a m 1 x 1 a m 2 x 2 ⋯ a m n x n b m , \begin{ca…

[AutoSar]BSW_Com017 COM模块介绍(一)

目录 关键词平台说明一、COM 所处架构位置二、COM 的功能概述三、Functional Specification3.1 AUTOSAR COM basis function3.2 Signal Gateway3.2.1 Signal routing requirements3.2.2 Routing of signal groups3.2.3 Routing latency for normal Signal Gateway3.2.4 Gateway…
最新文章