You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VueJS+jsPDF生成PDF时UTF-8特殊字符显示异常求助

VueJS + jsPDF 解决UTF-8特殊字符(法文)显示异常问题

在VueJS项目中使用jsPDF生成产品目录PDF,数据来自API并支持多语言切换(英文、法文等)。英文文本显示正常,但法文中的é、è、à、ç等特殊字符出现乱码(如显示为é、è),部分字符甚至空白。尝试过设置自定义字体但未解决,现需要一份VueJS环境下支持UTF-8编码的自定义字体配置脚本。

原示例代码

download() {
  let pdfRef = this.$refs.pdf;

  html2canvas(pdfRef).then(canvas => {
    let pdf = new jsPDF();
    const str = "éçàeéi test";
    pdf.save("Articles.pdf");
  });
}

当前PDF显示效果

éçàeéi test 显示为:é è à ç test

期望显示效果

éçàeéi test


解决方案:配置支持UTF-8的自定义字体

步骤1:准备字体文件

选择一款支持法文及UTF-8扩展字符的字体(如Noto Sans、Roboto等),将字体文件(.ttf格式)放入项目的public/assets/fonts目录下。

步骤2:转换字体为jsPDF兼容格式

使用jsPDF官方提供的字体转换工具,将.ttf文件转为.js格式,转换后得到的文件同样放入public/assets/fonts目录。

步骤3:Vue组件中配置字体并生成PDF

以下是完整的组件代码示例,包含字体注册、两种场景的PDF生成(直接写入文本/从canvas转换):

<template>
  <div ref="pdf">
    <!-- 页面内容,包含法文字符 -->
    <p>éçàeéi test</p>
    <button @click="download">下载PDF</button>
  </div>
</template>

<script>
import jsPDF from 'jspdf'
// 引入转换后的字体文件(假设转换后的文件名为NotoSans.js)
import '@/public/assets/fonts/NotoSans.js'

export default {
  methods: {
    async download() {
      const pdf = new jsPDF()

      // 注册自定义字体
      pdf.addFont('NotoSans-Regular', 'NotoSans', 'normal')
      // 设置默认字体为自定义字体
      pdf.setFont('NotoSans')

      // 场景一:直接用jsPDF写入文本(解决字符乱码)
      const str = "éçàeéi test"
      pdf.text(str, 10, 10)

      // 场景二:从canvas转换(确保页面本身字符显示正常,canvas转换后不会乱码)
      const canvas = await html2canvas(this.$refs.pdf)
      const imgData = canvas.toDataURL('image/png')
      // 调整PDF尺寸适配canvas
      const pdfWidth = pdf.internal.pageSize.getWidth()
      const pdfHeight = (canvas.height * pdfWidth) / canvas.width
      pdf.addImage(imgData, 'PNG', 0, 20, pdfWidth, pdfHeight)

      pdf.save("Articles.pdf")
    }
  }
}
</script>

关键说明

  • 必须确保转换后的字体文件正确引入,且addFont方法中的字体名称、样式与转换时的配置一致
  • 如果仅使用canvas转换PDF,需保证页面中的字体已经加载支持法文的字体(即页面显示正常,canvas转换后自然正常)
  • 直接使用pdf.text()写入文本时,必须先注册并设置自定义字体,否则默认字体无法解析UTF-8特殊字符

内容的提问来源于stack exchange,提问作者ruldane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 09:50:44