4

RTL ワードと LTR ワードの両方をサポートするためにRunand/orのスタイルを設定するにはどうすればよいですか?Paragraph

問題は、ペルシャ語と英語の両方の単語を含む複雑なテキストがあり、.docxOpenXML SDK を使用してドキュメントを作成しようとしていることです。しかし、英単語も RTL になります。次のテキストがあるとします。

Javad Amiry は、最初の 1 枚の写真と 2 枚の写真の 2 枚目の写真です。

次のようにドキュメントにテキストを配置することを期待しています。

ここに画像の説明を入力

しかし、私はこれを取得しています:

ここに画像の説明を入力

ご覧のとおり、英単語はその逆です。つまり、私が期待している間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);

前もって感謝します。

4

1 に答える 1

2

さて、私はついに問題を理解しました。問題はRightToLeftText、私が追加したものでしたRun。私はそれをaに交換し、BiDi問題は解決しました。乾杯。

于 2015-08-31T12:07:43.513 に答える