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

使用PDFKit制作阿拉伯语PDF时,如何将列表右对齐?

解决PDFKit生成阿拉伯语列表的问题

核心问题分析

PDFKit的内置list方法对RTL(从右到左)语言的排版支持不完善,仅设置align: 'right'和features: ['rtla']无法正确处理阿拉伯语列表的双向文本布局与项目符号位置。

解决方案

1. 确认使用支持阿拉伯语的字体

必须加载支持阿拉伯文连写和RTL排版的字体,比如Noto Naskh Arabic、Amiri等,示例加载方式:

const pdfFont = await pdfkit.open('path/to/NotoNaskhArabic-Regular.ttf');
pdf.font(pdfFont);

2. 手动构建阿拉伯语RTL列表

放弃内置list方法,手动处理每个列表项的排版,控制项目符号位置与文本方向:

const arabicItems = ["مرحبا", "أهلاً", "وداعاً"];
const startX = 550; // 列表起始X坐标(页面右侧)
const startY = 110;
const lineHeight = 20;
const bulletRadius = 2;

arabicItems.forEach((item, index) => {
  const y = startY + (index * lineHeight);
  
  // 绘制项目符号(位于文本逻辑左侧,对应页面物理右侧)
  pdf.circle(startX - 15, y + 4, bulletRadius).fill('#3c3c3c');
  
  // 绘制阿拉伯语文本,启用RTL特性并右对齐
  pdf.fontSize(12)
     .fillColor("#3c3c3c")
     .text(item, startX - 30, y, {
       width: 500,
       align: 'right',
       features: ['rtla']
     });
});

3. 关键注意点

  • 阿拉伯语文本需要正确的字符连写和方向处理,features: ['rtla']必须配合支持的字体才能生效。
  • 手动绘制项目符号时,需调整坐标确保符号与文本的间距符合RTL阅读习惯。

内容的提问来源于stack exchange,提问作者Kalia Martin Reina

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 09:12:07