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

如何在Aspose.Words中设置整个文档为RTL(从右到左)方向?

解决乌尔都语文本转HTML时保持RTL方向的问题

要让乌尔都语(RTL语言)在HTML中正确以从右到左方向渲染,仅设置字体的Bidi和LocaleIdBi是不够的,还需要配置段落级的RTL属性,同时在保存HTML时启用对应的输出选项。以下是修正后的代码:

var doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// 设置字体的RTL属性
builder.Font.LocaleIdBi = 1056; // 乌尔都语的Locale ID
builder.Font.Bidi = true;

// 关键:设置段落的RTL方向,控制文本块整体排版方向
builder.ParagraphFormat.Bidi = true;

// 读取UTF-8编码的乌尔都语文本文件
builder.Write(File.ReadAllText(sourceFile, Encoding.UTF8));

// 配置HTML保存选项,确保输出RTL渲染所需的标记
HtmlSaveOptions saveOptions = new HtmlSaveOptions(SaveFormat.Html)
{
    ExportBidiMarks = true, // 输出双向文本控制标记,辅助浏览器识别RTL逻辑
    CssStyleSheetType = CssStyleSheetType.Inline // 内联CSS,保证样式随文本生效
};

doc.Save(targetFile, saveOptions);

核心原因说明

之前的代码仅设置了字体级的RTL属性,但段落默认是LTR(从左到右)方向,会覆盖字体的局部设置。必须通过ParagraphFormat.Bidi = true将整个段落的排版方向改为RTL,再配合HTML保存时的双向标记输出,才能让乌尔都语文本在浏览器中正确显示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 07:51:02