要生成动态PDF文件,我使用PDFKit。生成工作正常,但我在显示阿拉伯字符时遇到问题,即使安装了阿拉伯字体。此外,阿拉伯文本生成正确,但我认为词序不正确。
作为一个例子,
我目前使用的pdfkit:"0.11.0"
正文:ˈ ˈ(你好你好)
字体:Amiri-Regular.ttf
const PDFDocument = require("pdfkit");
var doc = new PDFDocument({
size: [595.28, 841.89],
margins: {
top: 0,
bottom: 0,
left: 0,
right: 0,
},
});
const customFont = fs.readFileSync(`${_tmp}/pdf/Amiri-Regular.ttf`);
doc.registerFont(`Amiri-Regular`, customFont);
doc.fontSize(15);
doc.font(`Amiri-Regular`).fillColor("black").text("مرحبا كيف حالك");
doc.pipe(fs.createWriteStream(`${_tmp}/pdf/arabic.pdf`));
doc.end();
4条答案
按热度按时间5uzkadbs1#
这个问题让我通过这里,但不幸的是,我不相信张贴的答案,甚至添加了一个库,以改变方向的文本与pdfkit.经过几分钟的pdfkit指南文档,这里是解决方案:
pvcm50d12#
你是对的,阿拉伯语单词的顺序是错的,你必须调整句子的方向
试着用这个
或This作为单行或文本的配置
alen0pnh3#
答案改编自信息here:
1.安装软件包:
npm install twitter_cldr
1.运行此函数以生成文本:
另一种可能的方法是反转文本(使用
text.split(' ').reverse().join(' ');
之类的方法,然而,虽然这对简单的阿拉伯语文本有效,但在引入英语数字时就会出现问题。因此,推荐使用第一种方法。jhdbpxl94#
我建议您根据需要执行以下操作之一
1)如果用于生成文档的
doc.text
函数数量较少,则可以将{features: ['rtla']}
作为第二个参数添加到函数中,如下所示:2)如果你有很多对
doc.text
的调用,而不是在每个调用中添加{features: ['rtla']}
作为参数,你可以通过迭代你的数据对象并颠倒词序来颠倒所有的文本,如下所示: