iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > VUE >前端如何使用pdfmake生成现有报告
  • 908
分享到

前端如何使用pdfmake生成现有报告

2024-04-02 19:04:59 908人浏览 薄情痞子
摘要

这篇文章主要讲解了“前端如何使用pdfmake生成现有报告”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“前端如何使用pdfmake生成现有报告”吧!在使用层

这篇文章主要讲解了“前端如何使用pdfmake生成现有报告”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“前端如何使用pdfmake生成现有报告”吧!

在使用层面讲如何使用pdfmake生成现有报告,从以下几方面实现:

  • 支持中文

  • 预览页面搭建

  • 封面实现和断页

  • 页眉和页脚实现

  • pdfmake显示类型

  • 如何实现内边距

  • table无法居中显示

支持中文

pdfmake默认不支持中文,需要我们自己实现。找中文的字体文件(ttf结尾的文件)这个任务就交到我们自己手里了,并且字体文件需要支持粗体和斜体,否则字体加粗和斜体属性不生效。

把我们找到的字体文件,放入pdfmake官方GitHub目录下examples下,执行

npm run build:vfs

它会把你放入examples下的所有字体都统一打包到build文件下的vfs_fonts.js中,然后在项目中使用:

import pdfmake from "pdfmake/build/pdfmake" const pdfFonts = require('@/assets/js/vfs_fonts.js')  pdfMake.vfs = pdfFonts  pdfMake.fonts = {      Roboto: {          nORMal: 'Roboto-Regular.ttf',          bold: 'Roboto-Medium.ttf',          italics: 'Roboto-Italic.ttf',          bolditalics: 'Roboto-Italic.ttf'      },      微软雅黑: {          normal: '微软雅黑.ttf',          bold: '微软雅黑-bold.ttf',          italics: '微软雅黑-italics.ttf',          bolditalics: '微软雅黑-bolditalics.ttf'      }  }

使用时:

var docDefinition = {      content: [ '惊天码盗' ],      defaultStyle: {          fontSize: 15,          bold: true,         font:"微软雅黑"     }  };

预览页面搭建

pdf预览的逻辑大都是通过iframe实现,通过getDataUrl获取url地址

import pdfmake from "pdfmake/build/pdfmake" export function previewPdf(params) {     if(!params) return ;     const pdfDocGenerator = pdfMake.createPdf(params);        pdfDocGenerator.getDataUrl( dataUrl=>{         const targetElement = document.querySelector("#iframeContainer");         const pdfMakeIframe = document.querySelector("#pdfMakeKey");         if(pdfMakeIframe){             pdfMakeIframe.src = dataUrl;         }else{             const iframe = document.createElement("iframe");             iframe.id = 'pdfMakeKey';             iframe.src = dataUrl;              targetElement.appendChild(iframe)         }     }}

封面实现和断页

pdfmake默认是没有封面这个设置,但是提供了一个设置背景的函数,可以给每个页面设置一个背景,可以是文字背景,也可以是图片背景。

const docDefinition = {     background: function( currentPage, pageSize){         if(currentPage === 1){             return {                 iamge: "bGCoverImgUrl",                 width: pageSize.width,                 height: pageSize.height             }         }         return null;     }     content: ["惊天码盗"] }

这个自动断页可以说是非常的赞,省去了你复杂的计算。如果你想某一页单独放一段文案,或者在某段文案后单独开一页,pageBreak可以帮你实现。

{   pageOrientation: 'portrait',   content: [     {text: 'Text on Portrait'},     {text: 'Text on Landscape', pageOrientation: 'landscape', pageBreak: 'before'},     {text: 'Text on Landscape 2', pageOrientation: 'portrait', pageBreak: 'after'},     {text: 'Text on Portrait 2'},   ] }

页眉和页脚

页眉和页脚的实现就太方便了。

const docDefinition = {   footer: function(currentPage, pageCount) {          return currentPage.toString() + ' of ' + pageCount;    },   header: function(currentPage, pageCount, pageSize) {     return [{         columns: [             {                 text:  this.headerContent.left,                 alignment:  'left'             },             {                 text:  this.headerContent.middle,                 alignment:  'center'             },             {                 text:  this.headerContent.right,                 alignment:  'right'             }             ],              margin: [10, 20]         }]   },   content: ["惊天码盗"] };

可以精准定位某个页面做一些特殊的设置。

显示类型

相对于前端来说大多显示类型都已经定型了,比如表格、文本、列表、图片等。在pdfmake中一共给我们提供了这些显示类型:

text
普通文本,需要注意的就是字体,如果所提供字体不支持,所设置的属性就不显示。同时text可以嵌套。
columns
列,平铺的列元素。在pdfmake中没有块级元素的概念,如果你想平铺两个或者多个文本(比如前面icon,后面文本),colums会满足你。每列之间的距离可以通过columnGap设置。
list
html标签ul或ol相同。
table
表格,唯一提供内边距属性的类型。强大到可以实现任何简单的样式,相当于display:table。但是弊端也相当明显,不能垂直居中。
image/svg
图片。
stack栈,相当于数组[]。

内边距的实现

text文本在pdfmake中是一个块级元素(CSS思路定义)。无法实现内边距,单个text文本独占一行。

const dd = {     content: [         'First paragraph',         { text:"234", background:'red',color:"#fff",fontSize:20 },         'Another paragraph, this time a little bit longer to make sure, this line will be divided into at least two lines'     ] }

前端如何使用pdfmake生成现有报告

在pdfmake类型中只有table可以实现内边距,那么我们就可以尝试以table的方式布局,例如

const dd = {   content: [     {       margin: [0, 20],       table: {         body: [           [             { text: 'CONTENTS', width: 'auto', fillColor: '#e7e6e6', fontSize: 26 },             { text: 'Padding ', fillColor: '#58ac5b', color: '#FFF', fontSize: 26 }           ]         ]       },       layout: {         defaultBorder: false,         paddingLeft: function (i, node) {           if (i === 0) {             return 10           }           return 20         },         paddingRight: function (i, node) {           if (i === 0) {             return 10           }           return 20         },         paddingTop: function (i, node) { return 10 },         paddingBottom: function (i, node) { return 10 }       }     }   ] }

效果是:

前端如何使用pdfmake生成现有报告

像目录这种效果也是table做出来的:

前端如何使用pdfmake生成现有报告

table的缺陷

看似table可以实现任何样本组合,但是在单元格垂直居中这块,卡住了。

{   // style: 'tableExample',   table: {     body: [       ['Column 1', 'Column 2The following table has nothing more than a body array,The following table has nothing more than a body array,The following table has nothing more than a body array,The following table has nothing more than a body array', 'Column 3'],       ['One value Goes here', 'Another one here', 'OK?']     ]   } }

前端如何使用pdfmake生成现有报告

其他

目前发现不完美的一点,就是table单元格垂直居中,除了这一点,table很灵活,可以实现多级表头,嵌套表格,合并单元格,灵活定制各个单元格边框线条宽度和颜色。

同时还具备水印、加密、二维码生成、内外链接、目录生成。相比jspdf帮我们节省了很多步骤。那么我们下期聊聊jsPdf。

感谢各位的阅读,以上就是“前端如何使用pdfmake生成现有报告”的内容了,经过本文的学习后,相信大家对前端如何使用pdfmake生成现有报告这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: 前端如何使用pdfmake生成现有报告

本文链接: https://www.lsjlt.com/news/67102.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 前端如何使用pdfmake生成现有报告
    这篇文章主要讲解了“前端如何使用pdfmake生成现有报告”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“前端如何使用pdfmake生成现有报告”吧!在使用层...
    99+
    2022-10-19
  • 如何使用awrrpt.sql 生成AWR报告
    本篇内容主要讲解“如何使用awrrpt.sql 生成AWR报告”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用awrrpt.sql 生成AWR报告”吧!使...
    99+
    2022-10-18
  • 如何来禁用win8.1系统生成错误报告关闭Windows错误报告
    小编在使用Win8.1系统的过程中发现一个问题,当我们用垃圾清理软件进行清理的时候总是会发现其中有很多的系统垃圾,而这些垃圾就是Windows错误报告,在我们清除以后,没几天发现又有很多了,有一次达到了几个...
    99+
    2022-06-04
    错误报告 系统 Windows
  • python自动化之如何利用allure生成测试报告
    Allure测试报告框架帮助你轻松实现”高大上”报告展示。本文通过示例演示如何从0到1集成Allure测试框架。重点展示了如何将Allure集成到已有的自动化测试工程中、以及如何实现报表的优化展示。Allure非常强...
    99+
    2022-06-02
    python allure生成 python自动化测试 python自动化测试实战
  • Vue前端如何实现生成PDF并下载功能详解
    目录1. 安装及引入2. 封装导出 pdf 文件方法配置详解封装导出 pdf 文件方法(utils/htmlToPdf.js)相关组件中应用效果待优化部分总结思路: 通过 html2...
    99+
    2022-11-12
  • 【项目实战】使用Maven插件(jacoco-maven-plugin),实现生成代码覆盖率报告
    一、jacoco-maven-plugin是啥? jacoco-maven-plugin是一个Maven插件,用于生成代码覆盖率报告。 它可以帮助您了解您的代码中哪些部分已经被测试覆盖,哪些部分需要更多的测试。 注意,jacoco-mave...
    99+
    2023-08-19
    maven 代码覆盖率 java
  • webpack4.0+vue2.0如何利用批处理生成前端单页或多页应用
    这篇文章将为大家详细讲解有关webpack4.0+vue2.0如何利用批处理生成前端单页或多页应用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。批处理前端现在在做项目的时...
    99+
    2022-10-19
  • 如何使用director.js实现前端路由
    这篇文章主要介绍了如何使用director.js实现前端路由,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。director.js是什么? 理...
    99+
    2022-10-19
  • Python如何使用reportlab实现制作pdf报告
    这篇文章主要讲解了“Python如何使用reportlab实现制作pdf报告”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python如何使用reportlab实现制作pdf报告”吧!rep...
    99+
    2023-07-04
  • 如何利用Python实现自动生成数据日报
    这篇文章主要讲解了“如何利用Python实现自动生成数据日报”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何利用Python实现自动生成数据日报”吧!需求详解朋友的需求是这样的,他们平时的...
    99+
    2023-07-02
  • 如何使用react-color实现前端取色器
    这篇文章主要介绍如何使用react-color实现前端取色器,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!背景我们可以通过react-color实现前端界面的取色器,效果如下图所示:安装npm i react-col...
    99+
    2023-06-25
  • 如何使用纯jQuery实现前端分页功能
    这篇文章给大家分享的是有关如何使用纯jQuery实现前端分页功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。效果展示:因为核心代码主要在前端jquery,为了简便,后台就用se...
    99+
    2022-10-19
  • 如何使用vue实现前端导入excel数据
    目录前言一、主界面先引入导入组件二、封装excel-import组件1.首先是template代码(这里用的是ant vue desgin框架的组件)2.引入接口3.js代码meth...
    99+
    2023-05-17
    vue前端导入excel文件 vue导入excel并预览 前端导入excel文件
  • 如何使用MySQL进行数据分析和报表生成?
    如何使用MySQL进行数据分析和报表生成MySQL是一种广泛使用的关系型数据库管理系统,用于存储和管理结构化数据。除了作为数据存储和管理工具之外,MySQL还可以用于进行数据分析和报表生成。本文将介绍如何使用MySQL进行数据分析和报表生成...
    99+
    2023-10-22
    数据分析 MySQL 报表生成
  • 如何使用Vue3和ElementPlus前端实现分片上传
    这篇文章主要讲解了“如何使用Vue3和ElementPlus前端实现分片上传”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用Vue3和ElementPlus前端实现分片上传”吧!1. ...
    99+
    2023-07-04
  • 如何利用原生JS实现图片预览加上传(前后端交互)
    目录前言效果大致如下前端代码后端代码总结前言 最近在写vue项目的时候发现了个Vant的一个upload的图片上传的组件,就好奇了一下下,于是萌生了一个自己手写一个图片上传的组件的想...
    99+
    2022-11-13
  • 如何使用Python实现举牌小人生成器
    小编给大家分享一下如何使用Python实现举牌小人生成器,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Selenium库的安装与简单使用 1. 安装se...
    99+
    2023-06-15
  • 如何使用canvas生成含有微信头像的邀请海报没有微信头像问题
    这篇文章主要介绍了如何使用canvas生成含有微信头像的邀请海报没有微信头像问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。最近做了一个微信内访问的H5页面,长按分享图片发...
    99+
    2023-06-09
  • 如何利用Jenkins与Nginx实现前端项目自动构建与持续集成
    这篇文章主要为大家展示了“如何利用Jenkins与Nginx实现前端项目自动构建与持续集成”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何利用Jenkins与...
    99+
    2022-10-19
  • 前端不使用i18n该如何优雅的实现多语言
    目录前言:一、业务需求1. 确定业务2.  实现思路二、实现步骤    1. 新建 VFrame.js 文件 2. main.js 中 使用我...
    99+
    2023-01-18
    前端实现多语言切换 前端多语言方案 多语言网站的实现
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作