vue 页面内容生成图片\PFD方法

这篇具有很好参考价值的文章主要介绍了vue 页面内容生成图片\PFD方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.下载插件

npm install html2canvas jspdf

2.引入

import html2canvas from 'html2canvas';
import JsPDF from 'jspdf';

3.使用方法

在需要生成的内容绑定类名或id,在下面获取元素

<div class="input_box">
    <div id="content">
        <table class="input_table">
            <tr>
                <th colspan="6">表单标题</th>
            </tr>
            <tr>
                <td style="width:100px">客户姓名</td>
                <td colspan="2"><el-input v-model="setinputobj.customer_compute_name"></el-input>
                <td>销售方</td>
                <td colspan="2"><el-input v-model="setinputobj.staff_name"></el-input></td>
            </tr>
            <tr>
                <td>客户电话</td>
                <td colspan="2"><el-input v-model="setinputobj.mobile"></el-input></td>
                <td>电话</td>
                <td colspan="2"><el-input v-model="setinputobj.staff_moblie"></el-input></td>
            </tr>
            <tr>
                <td>客户单位</td>
                <td colspan="2"><el-input v-model="setinputobj.unit"></el-input></td>
                <td>单位</td>
                <td colspan="2"><el-input v-model="my_setinputobj.my_unit"></el-input></td>
            </tr>
            <tr>
                <td colspan="6"></td>
            </tr>
            <tr>
                <th>项目编号</th>
                <th>项目名称</th>
                <th>软件</th>
                <th>数量</th>
                <th>单价(元)</th>
                <th>报价(元)</th>
            </tr>
            <tr v-for="item, index in setinputobj.extend" :key="index">
                <td>{{ index + 1 }}</td>
                <td><el-input v-model="item.entry_name"></el-input></td>
                <td><el-input v-model="item.software"></el-input></td>
                <td><el-input v-model="item.num"></el-input></td>
                <td><el-input v-model="item.price"></el-input></td>
                <td><el-input v-model="item.quoted_price"></el-input></td>
            </tr>
            <tr>
                <td colspan="6"></td>
            </tr>
            <tr>
                <td colspan="2">价格(元)</td>
                <td colspan="4"><el-input v-model="setinputobj.tea_money"></el-input></td>
            </tr>
            <tr>
                <td colspan="2">周期(工作日天数)</td>
                <td colspan="4"><el-input v-model="setinputobj.cycle"></el-input></td>
            </tr>
            <tr rowspan="4">
                <td colspan="2">备注</td>
                <td colspan="4">
                    <p style="margin-left:1em;">1.以上报价有效期为7天;</p>
                    <p style="margin-left:1em;">2.付款方式:按照合同签订付款方式执行;</p>
                    <p style="margin-left:1em;">3.付款过程中产生的手续费双方各自承担;</p>
                </td>
            </tr>
        </table>
    </div>
    <div class="btn">
        <el-button type="success" @click="set_png">生成报价单</el-button>
    </div>
</div>

js 

set_png() {
    // 获取需要截图的元素
    const element = await document.querySelector('#content');
    // 使用 html2canvas 将元素转换为图片
    html2canvas(element).then(function (canvas) {
        // 将图片转换为 DataURL
        const dataUrl = canvas.toDataURL('image/png');
        // 创建一个 a 标签,用于下载图片
        const link = document.createElement('a');
        link.href = dataUrl;
        link.target = "_blank";
        link.download = '报价单.png';
        link.click();
    });
    // 生成pdf方法
    // pdf宽度800px 图片没有限制
    // const canvas = await html2canvas(element); // 将元素转换为canvas
    // const imgData = canvas.toDataURL('image/png'); // 将canvas转换为图片数据
    // const pdf = new JsPDF(); // 创建一个新的PDF文档
    // pdf.addImage(imgData, 'PNG', 5, 10); // 将图片添加到PDF文档中
    // pdf.save('报价单.pdf'); // 保存PDF文档
},

less样式 

.input_box {
    color: #606266;
    position: relative;
    padding-bottom: 80px;
    box-sizing: border-box;

    #content {
        padding: 20px;
        margin-top: 10px;
    }

    // 表格
    .input_table {
        text-align: center;
        border-collapse: collapse;
        width: 100%;

        /deep/ .el-input__wrapper {
            box-shadow: none;
        }

        tr {
            height: 40px;
        }

        th {
            border: 1px solid #000;
        }

        td {
            border: 1px solid #000;
        }

        .last {
            width: 80px;
            display: flex;
            justify-content: space-around;
            align-items: center;
            background-color: #fff;
        }
    }

    p {
        text-align: left;
    }

    .btn {
        float: right;
        margin-right: 20px;
        margin-top: 20px;
    }
}

 效果vue 页面内容生成图片\PFD方法,vue2,前端,javascript,开发语言

 点击生成图片或pdf

图片没有宽高大小限制

pdf宽度大概800px,长度也有限制,不建议使用pdf文章来源地址https://www.toymoban.com/news/detail-798403.html

到了这里,关于vue 页面内容生成图片\PFD方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Jeecg开发框架前端VUE2数据页面与后端数据库交互实现

    ​ JeecgBoot 是一款基于代码生成器的 低代码 开发平台,零代码开发!采用前后端分离架构:SpringBoot2.x,Ant DesignVue,Mybatis-plus,Shiro,JWT。强大的代码生成器让前后端代码一键生成,无需写任何代码! JeecgBoot引领新的开发模式(Online Coding模式- 代码生成器模式- 手工MERGE智能开发

    2024年02月11日
    浏览(41)
  • Vue3 - vite 引入本地图片方法,页面引入本地静态资源图像详细教程,解决 UI 前端组件库的图片属性无法使用本地图像问题(无论是本地开发还是打包部署,本地图片的路径正常可用)

    在 webpack 中通常用 require() 来引入静态图片,但在 vite 中这种方法就不行了。 本文实现了 在 vue3+vite 项目开发中,实现引入本地图片(静态资源),并且 build 打包后依然正常运行, 支持普通 img 标签使用,也支持 UI 组件库的各种 “图片属性” 当参数进行使用。 如下图所示

    2024年02月08日
    浏览(67)
  • vue2如何将页面生成 pdf 导出 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日
    浏览(54)
  • 前端Vue页面中如何展示本地图片

    我们使用img标签展示图片,src属性设置成图片请求路径 \\\"http://localhost:8888/image/img.jpg\\\" 的格式,也就是会向后端发送这个请求获取图片。 但是图片是存放在本地的某个文件里,那如何才能找到呢? 这就需要对这个请求的路径进行映射,以找到真正的存放图片的地址。

    2024年02月04日
    浏览(38)
  • vue2跨域问题解决[前端方法]

    前端项目中常见的跨域报错如下: Access to XMLHttpRequest at \\\'https://xxx.com/ms/\\\' from origin \\\'http://10.23.30.135:8080\\\' has been blocked by CORS policy: No \\\'Access-Control-Allow-Origin\\\' header is present on the requested resource. 针对这种跨域的报错我们可以通过后端设置 Access-Control-Allow-Origin 的header来解决,但一般

    2024年02月08日
    浏览(50)
  • 【手机号验证/前端】Vue2+elementUI编写一个手机号验证码登录页面,路由式开发(附完整代码)

    目录 效果图: 一、template部分 二、style样式 三、script部分 1.先对手机号的格式进行一个判断 2.接下来就是表单验证规则rules 3.最后就是methods了 (1)首先我们给获取验证码绑定一个方法 (2)然后封装一个axios接口,方便后面测试联调(这部分每个人封装的都不一样) (3)然

    2024年02月17日
    浏览(50)
  • vue3+elementplus前端生成图片验证码

    1、安装 使用npm i identify --save 或者 yarn add identify --save 2、新建vue组件components/identify/identify.vue 3、一般是登录页面用到这个,在你的登录页面的from表单的相应位置加上填写验证码的html 4、在script下引入组件,并编写方法 5、效果  

    2024年01月20日
    浏览(47)
  • 国内前端vue对接OpenAI/chatgpt【文本互动/生成图片】

       如图;国内通过调用openai接口进行互动,实现图文互动/文本互动  注意:请求人数较多,需要等待   1、🔔 获取ApiKey 注册 OpenAI 账号,获取你的 ApiKey,过程略。 2、💬 聊天接口 ⚠️ 不再推荐使用本接口,后面将废弃。 接口地址 ( POST请求 ) POST https://api.openai.com/pro/cha

    2023年04月20日
    浏览(66)
  • 前端excel文件处理,vue2 、file-saver、xlsx, excel文件生成与excel文件链接数据导出

    安装插件 如使用TS开发,可安装file-saver的TypeScript类型定义 下载文件流 本地文件下载 文件下载(列宽自适应) 表格显示,每列列宽自适应 xlsx文件链接数据导出 方法调用

    2024年02月11日
    浏览(57)
  • 前端vue项目:生成二维码,扫二维码跳转到相应页面

    Vue2项目 1、安装依赖::npm i arale-qrcode --save 2、引入:import AraleQRCode from \\\"arale-qrcode\\\"; 接下来让我们纯前端生成一个二维码                               【PS:亲测有效,大家可以放心使用 CV 大法哈  !】 HTML JS 需求中遇到的情况,也是百度了很久参考了很多大佬的文章

    2024年02月07日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包