reactjs - 如何在@react-pdf/pdfkit 中使用自定义字体
问题描述
谁能说出如何在 React.js 中添加自定义字体并将其与@react-pdf/pdfkit一起使用。我试图注册这样的自定义字体。
import utils from "./utils";
const SVGtoPDF = require("svg-to-pdfkit");
const PDFDocument = require("@react-pdf/pdfkit").default;
const { Base64Encode } = require("base64-stream");
const generatePDF = async (width, height, canvas, fonts) => {
const canvasSvg = canvas.toSVG();
return await new Promise((resolve, reject) => {
try {
var doc = new PDFDocument({
bufferPages: true,
size: [width * 0.75, height * 0.75],
});
utils.getFont(fonts).forEach(async (font) => {
doc.registerFont(font.family, font.path, font.family);
});
doc.font("Pacifico").text("Hello Message");
let finalString = "";
const stream = doc.pipe(new Base64Encode());
SVGtoPDF(doc, canvasSvg, 0, 0);
stream.on("data", (chunk) => (finalString += chunk));
stream.on("end", () => {
resolve(finalString);
});
doc.end();
} catch (err) {
reject(err);
}
});
};
export default generatePDF;
getFont()
函数将返回一个具有类似道具的对象数组
{
path: "@fonts/Pacifico-Regular.ttf",
family: "Pacifico",
weight: "regular",
style: "normal",
}
我已将 @font 作为别名添加到保存 .ttf 字体的路径中。所以从技术上讲,正在发生以下情况
doc.registerFont("Pacifico", "src/fonts/Pacifico-Regural.ttf");
我尝试使用这样的字体:
doc.font("Pacifico").text("Hello Message");
但我收到以下错误:
Unhandled Rejection (Error): fontkit.openSync unavailable for browser build
有没有其他方法可以添加字体并在 react-pdf/pdfkit 中使用它?
解决方案
推荐阅读
- python - 在 SQLalchemy 中使用变量指定多列
- python - 将字符串分成 R 和 L 字符数相等的平衡子串
- r - 字母序列的转换频率
- android - 在 Android 的自定义选项卡中替代 webview 的 shouldOverrideUrlLoading
- c++ - 回文数字代码不适用于边缘情况
- c# - 如何在 WCF Web 服务 C# 中的请求之前创建自定义标头
- mysql - 将数据从一个 MySQL 插入另一个 MySQL 实例
- flutter - Flutter main.dart initialRout 不工作
- javascript - 无法使用 Angular JS 在 CSV 文件中保存超过 8Mb 的内容
- node.js - (节点:9696) UnhandledPromiseRejectionWarning:MongooseServerSelectionError:连接 ECONNREFUSED 127.0.0.1:27107