Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 设置运行/段落的样式,以支持RTL和LTR单词_C#_C# 4.0_Openxml_Openxml Sdk_Bidi - Fatal编程技术网

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.