如何使用 jsPDF 和 pdf-autotable 在 react 应用程序中生成带有阿拉伯语和英语内容的 pdf?

How to generate pdf with arabic and english content in react application using jsPDF and pdf-autotable?

提问人:imLohith 提问时间:8/31/2023 更新时间:9/1/2023 访问量:89

问:

目前,我正在使用 jsPDF 和 pdf-autotable 使用对象数据以编程方式生成 pdf。我正在使用 Amiri 字体并转换为 base64,这给了我一个 js 文件。我有导出的字体变量并将其导入到组件中,我在其中一个 react 组件中有 exportPdf 函数。

这是我目前的实现。

  const exportToPdf = (demographicsInfo) => {
const pdf = new jsPDF();
const lineHeight = 10;

// Set up the initial position for the layout
let currentY = lineHeight;

pdf.addFileToVFS('Amiri-Regular.ttf', amiriFont);
pdf.addFont('Amiri', 'Amiri', 'normal');
pdf.setFont('Amiri');

  
pdf.autoTable({
  startY: currentY,
  head: [['Key', 'Value']],
  headStyles: { fontStyle: "Amiri" }, // For Arabic text in the table head
  bodyStyles: { fontStyle: "Amiri" },
  body: Object.keys(demographicsInfo).map((key) => [key, demographicsInfo[key]]),
});
pdf.save('exportedData.pdf');

};

顺便说一句,我已经在顶部导入了amiriFont。

不知道为什么这不起作用。与字体相关的文件是 public/fonts 文件夹。我尝试了所有的可能性,并搜索了所有地方。

有人可以在我做错的地方提供帮助吗?

reactjs jspdf-autotable

评论

0赞 Simon Bengtsson 8/31/2023
如果您改用 jspdf,它会起作用吗?即不是自动的。
0赞 imLohith 8/31/2023
也不工作
0赞 imLohith 8/31/2023
使用 jspdf 现在可以工作,但不能使用 autotable

答:

0赞 Simon Bengtsson 9/1/2023 #1

要使用 jspdf-autotable 更改字体,请将其设置为 而不是 .fontfontStyle