C# 设置运行/段落的样式,以支持RTL和LTR单词
如何设置C# 设置运行/段落的样式,以支持RTL和LTR单词,c#,c#-4.0,openxml,openxml-sdk,bidi,C#,C# 4.0,Openxml,Openxml Sdk,Bidi,如何设置运行和/或段落的样式以支持RTL和LTR单词 问题是:我有一个包含波斯语和英语单词的复杂文本,我正在尝试使用OpenXMLSDK创建一个.docx文档。但是,英语单词,也得到RTL。假设我有以下文本: 贾瓦德·阿米里·贾瓦德·阿米里·贾瓦德·阿米里·贾瓦德·阿米里·贾瓦德·阿米里·贾瓦德·阿米里·贾瓦德·阿米里 我希望将文本放在文档中,如下所示: 但我得到了这个: 正如你所看到的,英语单词是反之亦然!意思是,当我期待着Javad-Amiry时,我得到了davaJ-yrimA!你有办法
运行
和/或段落
的样式以支持RTL和LTR单词
问题是:我有一个包含波斯语和英语单词的复杂文本,我正在尝试使用OpenXMLSDK创建一个.docx
文档。但是,英语单词,也得到RTL。假设我有以下文本:
贾瓦德·阿米里·贾瓦德·阿米里·贾瓦德·阿米里·贾瓦德·阿米里·贾瓦德·阿米里·贾瓦德·阿米里·贾瓦德·阿米里
我希望将文本放在文档中,如下所示:
但我得到了这个:
正如你所看到的,英语单词是反之亦然!意思是,当我期待着Javad-Amiry
时,我得到了davaJ-yrimA
!你有办法解决这个问题吗
我使用的样式如下所示:
var text = "این متن Javad Amiry انگلیسی ست و باید چپ به راست شود.";
var par = new Paragraph();
var pPr = new ParagraphProperties(
new BiDi(),
new Justification { Val = JustificationValues.Both },
new RunFonts {
Ascii = "Arial",
HighAnsi = "Arial",
EastAsia = "Arial",
ComplexScript = "B Mitra",
Hint = FontTypeHintValues.ComplexScript,
},
new FontSize { Val = "24" },
new FontSizeComplexScript { Val = "24" },
new Languages { Bidi = "fa-IR", Val = "en-US", EastAsia = "en-US" }
);
var rPr = new RunProperties(
new RightToLeftText(),
new RunFonts {
Ascii = "Arial",
HighAnsi = "Arial",
EastAsia = "Arial",
ComplexScript = "B Mitra",
Hint = FontTypeHintValues.ComplexScript
},
new FontSize { Val = "24" },
new FontSizeComplexScript { Val = "24" },
new Languages { Bidi = "fa-IR", Val = "en-US", EastAsia = "en-US" },
new BiDi { Val = true }
);
var run = new Run();
run.AppendChild(rPr);
run.AppendChild(new Text(text));
par.AppendChild(pPr);
par.AppendChild(run);
// finally append to the body
body.Append(par);
提前谢谢。我终于解决了这个问题。问题是我添加到
Run
中的right-toleftext
。我用BiDi
替换了它,问题就解决了。干杯。你好。您确定可以在一行中组合这两种类型的文本吗?我的意思是你能用MsWord创建这样的文档吗?如果你愿意提供这样的文件,99%我会帮助你。无论如何,我的观点是对每种类型的text.Hi使用单独的运行(具有不同的文本方向属性)。是的,Q中的第一个图像是用MS Word创建的,它是正确的。但是,你是对的。我确实解压缩了MSW创建的文档并查看了生成的XML。它绝对使用两个独立的Run
s。但我很好奇,是否有任何方法可以让它们同时运行。谢谢你的咨询。干杯+1.