pdfmake中文乱码解决

pdfmake是什么

pdfmake是一个功能强大的库,能帮助开发者轻松创建结构化的PDF文件。它的设计目标是提供一个简单易用的API,让即使不熟悉PDF规范的开发者也能快速上手。该项目提供了丰富的排版特性,包括文本样式、列表、表格、图像以及自定义页面布局等。此外,它还支持在不同平台上的浏览器和Node.js环境中运行。

官方文档:https://pdfmake.github.io/docs/

为什么会出现中文乱码

因为官方默认字体只有英文
在这里插入图片描述

解决方法

官方文档提供了两种方法:

  1. 创建一个新的vfs_fonts.js,替换掉原来项目中的vfs_fonts.js
  2. 引用网络字体

第一种方法操作有点烦,可以参考这篇文章做一下pdfmake实现中文支持,解决中文乱码问题
第二种方法比较简单
环境:vue3+typescript
代码:

<script setup lang="ts">
import pdfFonts from 'pdfmake/build/vfs_fonts';
import pdfMake from 'pdfmake/build/pdfmake'

// 加载字体
(pdfMake as any).vfs = pdfFonts.pdfMake.vfs;

// 注册字体
 (pdfMake as any).fonts = {
     ...pdfMake.fonts,
     PingFang: {
        normal: 'https://example.com/fonts/fontFile.ttf',
     	bold: 'https://example.com/fonts/fontFile2.ttf',
     	italics: 'https://example.com/fonts/fontFile3.ttf',
     	bolditalics: 'https://example.com/fonts/fontFile4.ttf
     }
 };

const generatePdf = () => {
  const docDefinition = {
    content: [
    { text: '中文测试', style: 'header' },
    { text: 'EnglishTest', style: 'header' },
  ],
    defaultStyle: {
    // 在这里设置字体
    font: 'PingFang'
  },
    styles: {
      header: {
        fontSize: 18,
        bold: true,
        margin: [0, 0, 0, 10],
      },
    },
  };

  pdfMake.createPdf(docDefinition).open();
};
</script>

效果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值