使用pdfmake导出pdf文件

1、在项目中安装依赖

npm install pdfmake

2、配置中文

在项目的node_modules文件夹下找到pdfmake,在pdfmake目录下新建examples/fonts文件夹
我是在本地C:\Windows\Fonts复制了方正姚体 常规字体,放到刚刚新建的examples/fonts文件夹下
如下图
在这里插入图片描述
在pdfmake目录下执行node build-vfs.js "./examples/fonts"
在这里插入图片描述
在build文件夹下会生成 vfs_fonts.js文件,里面有我们需要用的字体

3、使用

代码中引入

import pdfMake from 'pdfmake/build/pdfmake'
import vfs_fonts from 'pdfmake/build/vfs_fonts'
pdfMake.vfs = vfs_fonts.pdfMake.vfs
// 定义字体
pdfMake.fonts = {
  // webfont是字体名,可以自定义,下面需要用这个名字配置字体
  webfont: {
    // FZYTK.TTF 这个文件已经在 我们生成的 vfs_font.js 文件中,且已经引入,所以可以直接使用
    normal: 'FZYTK.ttf',
    bold: 'FZYTK.ttf',
    italics: 'FZYTK.ttf',
    bolditalics: 'FZYTK.ttf'
  }
}

// 定义pdfmake需要用的 pdf文件描述对象
var docDefinition = {
  pageSize: 'A4',
  content: this.content,//内容按照文档写即可
  defaultStyle: {
    // 设置我们定义的字体为默认字体
    font: 'webfont'
  },
  styles: {
    cover: {
      fontSize: 32, alignment: 'center', color: '#4472C4', margin: [0, 180, 0, 0]
    },
    tableExample: {
      fontSize: 12, alignment: 'center'
    },
    header: {
    	bold: true, margin: [0, 4, 0, 0]
    }
  }
}
// filename为自定义文件名
pdfMake.createPdf(docDefinition).download(filename, () => {
  console.log('complete')
})

pdfmake文档

图片转base64

注意:pdfMake 仅适用于 .jpeg / .jpg / .png 文件

getBase64Sync(imgUrl) {
  return new Promise(function(resolve, reject) {
    // 一定要设置为let,不然图片不显示
    const image = new Image()
    // 解决跨域问题
    image.setAttribute('crossOrigin', '*') // 解决跨域
    // image.crossOrigin = '*'
    image.crossOrigin = 'Anonymous'
    // 图片地址
    image.src = imgUrl
    // image.onload为异步加载
    image.onload = function() {
      const canvas = document.createElement('canvas')
      canvas.width = image.width
      canvas.height = image.height
      const context = canvas.getContext('2d')
      context.drawImage(image, 0, 0, image.width, image.height)
      // 图片后缀名
      const ext = image.src.substring(image.src.lastIndexOf('.') + 1).toLowerCase()
      // 图片质量
      const quality = 0.8
      // 转成base64
      const dataurl = canvas.toDataURL('image/' + ext, quality)
      // 返回
      resolve(dataurl)
    }
  })
}
要实现使用Datatable和pdfmake导出中文PDF,需要以下几个步骤: 1. 首先,确保在HTML页面中引入Datatable和pdfmake的相关库文件使用CDN引入时,可以在<head>标签中添加以下代码: ```html <script src="https://cdn.datatables.net/1.10.25/js/jquery.dataTables.min.js"></script> <script src="https://cdn.datatables.net/buttons/1.7.1/js/dataTables.buttons.min.js"></script> <script src="https://cdn.datatables.net/buttons/1.7.1/js/buttons.html5.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.68/pdfmake.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.68/vfs_fonts.js"></script> ``` 2. 在Datatable的初始化代码中,设置导出按钮和相关选项,如下所示: ```javascript $(document).ready(function() { $('#example').DataTable( { dom: 'Bfrtip', buttons: [ 'copyHtml5', 'excelHtml5', 'csvHtml5', { extend: 'pdfHtml5', text: '导出PDF', customize: function(doc) { // 在这里可以对PDF进行自定义设置,如修改字体、添加中文支持等 doc.defaultStyle.font = 'SimSun'; // 设置字体为宋体 } } ] } ); } ); ``` 3. 注意,在上述代码中的customize函数中,可以对PDF进行自定义设置。如果需要添加中文支持,可以设置字体为中文宋体(SimSun)或其他中文字体。 通过以上步骤,就可以实现使用Datatable和pdfmake导出中文PDF了。在导出PDF时,表格中的中文内容将正确显示,并且可以根据需要添加其他自定义设置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值