前端导出PDF(纯前端功能)

这篇具有很好参考价值的文章主要介绍了前端导出PDF(纯前端功能)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目场景:

例如:需要导出PDF格式


问题描述

发现:自己导出的PDF,有表格超出之后,只会截取当前屏幕可视区,下面的并不会导出

原因分析:

提示:问题出现在滚动条加错地方


解决方案:

首先:

npm install html2canvas

npm install jspdf

第二:新建一个htmlToPdf.js文件存放

// 导出页面为PDF格式

import html2Canvas from './html2canvas'

import JsPDF from './jsPdf.debug'

export default{

  name:'wwutils',

  toolExportPdf(fileName) {

    let isCompeleted = false;

    setTimeout(() => {

        // 获取需要打印的区域,以div为单位,此处使用的是vue的选择器

        $("iframe").remove();

        var pdfDom = document.getElementById("exportImg");

        $("#exportImg").scrollTop(0);

        // 设置背景色

        pdfDom.style.background = "#F4F7FC";

        let _this = this;

        var exportName = fileName; // 导出生成文件的名称

        var height = $("#exportImg").outerHeight();

        const Dom_height = $("#exportImg").height();

        const targetDom = document.querySelector("#exportImg");

        const copyDom = targetDom.cloneNode(true);

        copyDom.style.width = targetDom.scrollWidth + "px";

        copyDom.style.height = targetDom.scrollHeight + "px";

        document.body.appendChild(copyDom);

        html2Canvas(pdfDom, {

            allowTaint: false,

            useCORS: true,

            height: targetDom.scrollHeight,

            width: targetDom.scrollWidth,

            onrendered: function (canvas) {

                let contentWidth = canvas.width; //画布宽度

                let contentHeight = canvas.height; //画布高度

                let pageHeight = (contentWidth / 592.28) * 841.89;

                let leftHeight = contentHeight;

                let position = 0;

                let imgWidth = 592.28;

                let imgHeight = (592.28 / contentWidth) * contentHeight;

                let 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 + 4,imgWidth,imgHeight);

                        leftHeight -= pageHeight;

                        position -= 841.89;

                        if (leftHeight > 0) {

                            PDF.addPage();

                        }

                    }

                }

                PDF.save(exportName + ".pdf");

                document.body.removeChild(copyDom);

                isCompeleted = true;

                // PubSub.publish("isExportPdfCompleted", {

                //     state: true,

                // });

            },

            background: "#F4F7FC",

            windowHeight: targetDom.scrollHeight, // 获取y方向滚动条中的内容

            y: targetDom.scrollHeight // 页面在垂直方向的滚动距离

        });

    }, 1000);

    return isCompeleted

 },

}

前端导出pdf,前端,vue.js,javascript

 可以使用在main.js中引用,也可以在本地文件直接引用

前端导出pdf,前端,vue.js,javascript

 前端导出pdf,前端,vue.js,javascript

 文章来源地址https://www.toymoban.com/news/detail-598021.html

到了这里,关于前端导出PDF(纯前端功能)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 前端vue基于html2canva jspdf 实现前端页面加水印 并导出页面PDF

    随着技术的发展,开发的复杂度也越来越高,传统开发方式将一个系统做成了整块应用,经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改,造成牵一发而动全身。通过组件化开发,可以有效实现单独开发,单独维护,而且他们之间可以随

    2024年02月03日
    浏览(48)
  • 前端(vue)js在线预览PDF、Word、Excel、ppt等office文件

    可选参数 pdf=true,word文档尝试以pdf方式显示,默认false watermark=水印文本,显示文本水印;“img:”+图片url表示图片水印,如:img:https://view.xdocin.com/demo/wm.png saveable=true,是否允许保存源文件,默认false printable=false,是否允许打印,默认true ©able=false,是否允许选择复制内容,

    2024年02月13日
    浏览(77)
  • JS打印、导出PDF

    这种方式打印的pdf比较高清,且分页不会截断文字和图片,背景图片是会被截断的 1.直接打印 直接调用浏览器的打印功能,打印整个页面 2.打印指定区域 通过开始标记、结束标记来打印,打印局部页面 注意 :1.如果你要打印的区域中包含vue赋值对象,那你的开始结束标志符

    2024年02月15日
    浏览(46)
  • Java实现PDF导出功能

    一、添加依赖 二、实现示例代码 如下代码中使用了 【SIMYOU.TTF】幼圆字体,根据需要可以自行下载 三、效果展示 对应目录下生成test.pdf 文件 生成效果如下所示:

    2024年02月15日
    浏览(50)
  • 纯前端实现导出pdf文件(服务端不参与)

    大致查阅了现阶段使用较多的几种方案,,大概有以下几种方式: 一、原生window.print()方法导出pdf 二、jspdf 三、jspdf + html2canvas 四、pdfmake 方案 优点 缺点 window.print() 1、兼容性最好 2、可以将任意内容导出成 pdf 文档, 甚至是非改页面上的内容 1、调用方法时部分条件下导出pd

    2024年04月08日
    浏览(44)
  • react-前端excel 文件/PDF文件 导入 --导出,照片上传

    需要了解,new FormData() --上传时,将内容转为文件流                   FormData提供一种表示表单数据的键值对的构造方式,实现表单数据的序列化,从而减少表单元素的拼接,提高工作效率                  new FileReader()--base64压缩,目前不了解 一、excel文件导出      三

    2023年04月08日
    浏览(46)
  • Vue3导出pdf方案

    1.引入两个依赖 2.在utils文件夹下新建htmlToPdf.js文件 扩展 :还可以传多个不同容器id 3.来到需要将vue转成pdf的页面 methods: 扩展 :多个容器不同id 介绍一下纯jspdf用法,将一个图片列表导出为pdf文件,根据图片宽高计算在pdf中的位置 jsPDF 是一个基于 HTML5 的客户端解决方案,用于

    2024年02月16日
    浏览(37)
  • springboot项目实现导出pdf功能,这也太简单了吧

    在现代Web应用程序中,导出数据为PDF格式是一项常见需求。本文将详细介绍如何使用Spring Boot框架和iText库实现导出PDF功能。首先,我们会添加必要的依赖项,并创建一个PDF生成类来设置内容、样式和格式。然后,我们会在控制器中调用该类,并使用HTTP响应返回导出的PDF文件。最后,我们会提供代码示例和常见的PDF处理操作,以帮助你灵活地扩展和自定义导出的PDF文件。通过按照本文的步骤,你将能够简单地集成导出PDF功能到你的Spring Boot项目中。

    2024年02月07日
    浏览(60)
  • vue3 ts 导出PDF jsPDF

    jsPDF 是一个基于 HTML5 的客户端解决方案,用于生成各种用途的 PDF 文档。 1、安装:npm install jspdf                  npm install --save html2canvas 2、引入:import jsPDF from \\\"jspdf\\\"                  import html2canvas from \\\'html2canvas\\\' 3、使用

    2024年02月05日
    浏览(41)
  • vue3 如何将页面生成 pdf 导出

    原文链接:vue3 如何将页面生成 pdf 导出 最近工作中有需要将一些前端页面(如报表页面等)导出为 pdf 的需求,博主采用的是 html2Canvas + jspdf 。 请阅读 vue3 如何将页面生成 pdf 导出

    2024年02月16日
    浏览(49)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包