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

如何在Java/Spring Boot中用OpenPDF生成含阿拉伯文的PDF

在Spring Boot/Java 17中用OpenPDF正确渲染阿拉伯文的方案

一、关于阿拉伯文转Unicode的误区

  • Java字符串本质上就是Unicode编码,你输入的阿拉伯文الاسم本身就是Unicode格式,不需要额外转换。所谓的"Unicode形式"其实是字符串的转义表示(比如\u0627\u0644\u0627\u0633\u0645),但OpenPDF直接支持原生Unicode字符串,转义反而没必要。

二、OpenPDF渲染阿拉伯文的核心方案

阿拉伯文不显示的核心问题是缺少支持阿拉伯文的字体,以及没有设置正确的文字方向(RTL,从右到左)。以下是具体实现步骤:

1. 引入支持阿拉伯文的字体

把支持阿拉伯文的字体文件(比如NotoSansArabic-Regular.ttf)放到项目的resources/fonts目录下。

2. 在代码中加载字体并配置RTL方向

import com.lowagie.text.Document;
import com.lowagie.text.Font;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfWriter;
import org.springframework.core.io.ClassPathResource;

import java.io.FileOutputStream;

public class ArabicPdfGenerator {
    public void generateArabicPdf() throws Exception {
        Document document = new Document();
        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("arabic_test.pdf"));
        document.open();

        // 加载阿拉伯文字体
        ClassPathResource fontResource = new ClassPathResource("fonts/NotoSansArabic-Regular.ttf");
        BaseFont baseFont = BaseFont.createFont(
                fontResource.getPath(),
                BaseFont.IDENTITY_H,
                BaseFont.EMBEDDED
        );
        Font arabicFont = new Font(baseFont, 12);

        // 创建阿拉伯文段落,设置RTL方向
        Paragraph arabicParagraph = new Paragraph("الاسم", arabicFont);
        arabicParagraph.setAlignment(Paragraph.ALIGN_RIGHT); // 右对齐
        writer.setRunDirection(PdfWriter.RUN_DIRECTION_RTL); // 设置整个文档的文字方向为RTL

        document.add(arabicParagraph);
        document.close();
    }
}

3. 关键注意点

  • 必须使用支持阿拉伯文的字体,否则即使编码正确也无法显示。推荐使用Google的Noto Sans Arabic,完全免费且支持所有阿拉伯文字符。
  • 务必设置RUN_DIRECTION_RTL,否则阿拉伯文会显示为反向的乱序字符。
  • 字体要嵌入到PDF中(BaseFont.EMBEDDED),避免在没有安装该字体的设备上显示异常。

三、额外提示

如果只需要局部段落使用RTL,不需要设置整个文档的方向,而是给单个段落单独配置:

arabicParagraph.setRunDirection(PdfWriter.RUN_DIRECTION_RTL);

内容的提问来源于stack exchange,提问作者ayada

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 17:50:33