如何在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
相关产品推荐
相关产品推荐

