如何使用jspdf html方法更改从html元素生成的pdf的字体

问题描述 投票:0回答:1

我正在尝试更改从 HTML 元素生成的 pdf 的字体

我尝试添加字体,并设置

fontFaces
属性,并更改了
@font-face
CSS

当我登录时

doc.getFontList()
它显示 Poppins 字体

但是当我尝试生成 pdf 时,它会向我显示 these errors

这是我的代码

                    const doc = new jsPDF({
                      unit: "pt",
                      putOnlyUsedFonts: true,
                    });
                    doc.addFileToVFS("poppins-regular.ttf", font);
                    doc.addFont(
                      "poppins-regular.ttf",
                      "poppins",
                      "normal"
                    );
                    doc.addFileToVFS("poppins-bold.ttf", fontBold);
                    doc.addFont("poppins-bold.ttf", "poppins", "bold");
                    doc.setFont("poppins");
                    const elementToConvert = document.querySelector("#id");
                    console.log(doc.getFontList());
                    doc.html(elementToConvert, {
                      callback: (doc) => {
                        doc.save();
                      },
                      fontFaces: [
                        {
                          family: "poppins",
                          src: [
                            {
                              url: "../public/assets/poppins-regular.ttf",
                              format: "truetype",
                            },
                          ],
                          weight: "normal",
                        },
                        {
                          family: "poppins",
                          src: [
                            {
                              url: "../public/assets/poppins-bold.ttf",
                              format: "truetype"
                            },
                          ],
                          weight: "bold"
                        },
                      ],
                    });

这是我的CSS

@font-face {
  font-family: "poppins";
  src: url("../public/assets/poppins-regular.ttf") format('ttf');
}
#id{
  font-family: "poppins", sans-serif;
}
jspdf
1个回答
0
投票

jsPDF的“.addFileToVFS”方法要求文件为base64格式。以 Base64 格式对字体文件进行编码,然后传递“filecontent”字符串。

© www.soinside.com 2019 - 2024. All rights reserved.