温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
  • 忘记密码?
登录注册×
获取短信验证码
其他方式登录
点击 登录注册 即表示同意 《亿速云用户服务条款》
  • 服务器
  • 数据库
  • 开发技术
  • 网络安全
  • 互联网科技
登 录 注册有礼
最新更新 网站标签 地图导航
产品
  • 首页 > 
  • 教程 > 
  • 开发技术 > 
  • vue怎么将html页面生成高清晰pdf文件

vue怎么将html页面生成高清晰pdf文件

发布时间:2022-03-03 14:03:42 来源:亿速云 阅读:597 作者:iii 栏目: 开发技术

本文小编为大家详细介绍“vue怎么将html页面生成高清晰pdf文件”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue怎么将html页面生成高清晰pdf文件”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

需要借助html2canvas和jspdf这两个插件

首先是将页面用html2canvas生成base64的图片,再用jspdf将图片插入到pdf

效果图如下

vue怎么将html页面生成高清晰pdf文件

 createImage(){//生成图片->pdf
        let _this = this;
        
        //----此处是解决页面带滚动条的时候截图不全问题
        window.pageYoffset = 0;
        document.documentElement.scrollTop = 0;
        document.body.scrollTop = 0;'
        //----------------------------------------
        
        let canvas = document.createElement("canvas");
        let context = canvas.getContext("2d");
        let _articleHtml = document.getElementById('imageTofile');
        let _w = _articleHtml.clientWidth;
        let _h = _articleHtml.clientHeight;
        
        //-----这里解决生成的pdf不清晰的问题 先放大3倍----后面再缩小3倍
        let scale = 3;
        canvas.width = _w * scale;
        canvas.height = _h * scale;
        context.scale(scale, scale);
        
        
        let opts = {
            scale: 1,
            width: _w,
            height: _h,
            canvas: canvas,
            useCORS: true
        };  
          (window.html2canvas || html2canvas)(_articleHtml, opts).then(canvas => {//IOS13.4无效解决 和{(intermediate value)(intermediate value)} is not a function+;
            _this.createPdfAll(canvas, scale);
           });
      },

我这里直接将整个的img插入到pdf,并未截断分页,因为截断的话需要调整,不太友好,不然会把文字从中间位置截断

        createPdfAll (canvas, scale) {//生成图片->pdf
        //-----------宽高缩小3倍---------------------
        let contentWidth = canvas.width / scale
        let contentHeight = canvas.height / scale
        //--------------------
        let pdf = new jsPDF('', 'pt', [contentWidth, contentHeight+50]) //此处加50是pdf最后离底部的空白距离。根据需要自行调节
        let pageData = canvas.toDataURL('image/jpeg', 1.0);
        //这里只生成了一页的pdf,并未截断,需要截断的话在此处操作
        pdf.addImage(pageData, 'JPEG', 0, 0, contentWidth, contentHeight)
        
        //这里是将pdf的流文件---》file文件
        let filename = 'question.pdf' ;
        let datauri = pdf.output('dataurlstring');
        let file = this.dataURLtoFile(datauri,filename);
        
        // 以文件的形式上传给 服务器
        this.uploadImg(file)
      },

流文件转成file

 dataURLtoFile(dataurl, filename) {
            var arr = dataurl.split(',');
            var mime = arr[0].match(/:(.*?);/)[1];
            var bstr = atob(arr[1]);
            var n = bstr.length; 
            var u8arr = new Uint8Array(n);
            while(n--){undefined
                u8arr[n] = bstr.charCodeAt(n);
            }
            //转换成file对象
            return new File([u8arr], filename, {type:mime});
            //转换成成blob对象
            //return new Blob([u8arr],{type:mime});
        },

种方案纯前端实现,无需后端配合,并且页面还原度比较高,对于pdf操作要求不高的需求,还是比较合适的解决方案。

缺点就是无法复制,对pdf操作不大兼容

读到这里,这篇“vue怎么将html页面生成高清晰pdf文件”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。

向AI问一下细节
推荐阅读:
  1. 如何生成PDF
  2. html页面转换成PDF文件

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

vue html pdf
  • 上一篇新闻:
    Python如何使用Numpy库
  • 下一篇新闻:
    CentOS7上如何使用pyenv搭建Django环境

猜你喜欢

  • 设置WINS服务器选项
  • 如何排查WindowsServer2003和WindowsXP中的网络连接
  • 如何阻止并删除病毒和其他恶意软件
  • 查看和删除MicrosoftEdge中的浏览历史记录
  • 使用DHCP通过TCP/IP禁用NetBIOS
  • 使用BootCamp在Mac上安装Windows7
  • 如何设置群集打印服务器
  • Access数据库中的常见对话框API使用情况
  • 如何使用调试诊断工具排查IIS中进程CPU使用率过高的问题
  • 无法通过HTTP代理服务器使用Web服务
最新资讯
  • 如何使用Cocoa Touch框架提升应用的可测试性和维护性
  • 在Cocoa Touch中如何利用Core Motion追踪和响应用户运动
  • 使用Cocoa Touch如何来优化应用的启动广告或引导页
  • 如何在Cocoa Touch中通过Core Spotlight实现内容的搜索和索引
  • 在Cocoa Touch应用中如何创建和管理动态快捷方式
  • 使用Cocoa Touch如何实现数据的加密与安全传输
  • 如何使用Cocoa Touch框架开发自适应布局的应用程序
  • 在Cocoa Touch中如何实现软件包的动态加载和卸载
  • 使用Cocoa Touch如何创建支持导出到不同格式的报表
  • 如何在Cocoa Touch中处理文本的自动校正和建议输入
相关推荐
  • 如何将HTML文件转化PDF文件
  • 使用vue怎么在HTML页面中生成图片
  • 如何将Python字符串生成PDF
  • 如何使用PHP中的mpdf将html页面转换pdf文件
  • 利用PHP将HTML页面转换成PDF文件
  • java如何根据富文本生成pdf文件
  • 如何使用TCPDF撰写和生成PDF文件
  • Python怎么将Office文件转PDF
  • Vue页面如何生成PDF
  • Vue3+Vue-PDF怎么实现PDF文件在线预览

相关标签

vue.use vuejs7 vue2.x vue面试题 mpvue vue框架 vue cli 3 vue router vuerouter vue-cil vuecli .vue vue.use() vue-i18n vue.set() vue-devtools vue-pdf vue1 vue.nexttick vue.directive
AI

深圳SEO优化公司通化营销型网站建设推荐南澳建网站多少钱遂宁英文网站建设公司衡水企业网站制作公司信阳网站改版报价莱芜优秀网站设计推荐苏州网站推广推荐随州设计公司网站推荐伊犁至尊标王垦利模板推广价格海北网络广告推广多少钱福州网页设计报价遂宁企业网站建设林芝网站建设多少钱海西百度网站优化多少钱长葛模板网站建设推荐普洱网络推广黔西南企业网站改版公司金昌关键词排名武汉推广网站价格南联关键词按天计费报价西宁模板制作遵义品牌网站设计杭州网站建设设计多少钱漯河网站开发价格淮南网站推广系统多少钱南昌设计网站哪家好光明网站优化软件多少钱淮南模板推广哪家好泸州网站建设多少钱歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化