4

C#のOpenXMLを使用して、単語の段落の右から左への方向を設定するにはどうすればよいですか?以下のコードを使用して定義しますが、変更はありません。

 RunProperties rPr = new RunProperties();

 Style style = new Style();
 style.StyleId = "my_style";
 style.Append(new Justification() { Val = JustificationValues.Right });
 style.Append(new TextDirection() { Val = TextDirectionValues.TopToBottomRightToLeft });
 style.Append(rPr);

最後に、段落にこのスタイルを設定します。

...
heading_pPr.ParagraphStyleId = new ParagraphStyleId() { Val = "my_style" };

しかし、出力ファイルに変更はありません。

いくつかの投稿を見つけましたが、次のようにまったく役に立ちませんでした。

Wordファイルのテキストの方向を変更する

この問題をどのように解決できますか?

前もって感謝します。

4

2 に答える 2

5

クラスを使用しBiDiて、段落のテキスト方向をRTLに設定します。次のコードサンプルは、単語ドキュメントの最初の段落を検索し、BiDiクラスを使用してテキストの方向をRTLに設定します。

using (WordprocessingDocument doc =
   WordprocessingDocument.Open(@"test.docx", true))
{
  Paragraph p = doc.MainDocumentPart.Document.Body.ChildElements.First<Paragraph>();

  if(p == null)
  {
    Console.Out.WriteLine("Paragraph not found.");
    return;
  }

  ParagraphProperties pp = p.ChildElements.First<ParagraphProperties>();

  if (pp == null)
  {
    pp = new ParagraphProperties();
    p.InsertBefore(pp, p.First());
  }

  BiDi bidi = new BiDi();
  pp.Append(bidi);

}

Microsoft Wordの双方向テキストには、さらにいくつかの側面があります。 SanjayKumarMは、MicrosoftWordで右から左へのテキストコンテンツがどのように処理されるかについての記事を書きました。詳細については、このリンクを参照してください。

于 2013-03-18T19:12:24.740 に答える
1

このコードは、右から左への方向を設定するのに役立ちました

var run = new Run(new Text("Some text"));
var paragraph = new DocumentFormat.OpenXml.Wordprocessing.Paragraph(run);
paragraph.ParagraphProperties = new ParagraphProperties()
{
    BiDi = new BiDi(),
    TextDirection = new TextDirection()
    {
        Val = TextDirectionValues.TopToBottomRightToLeft
    }
};
于 2019-01-29T03:05:35.250 に答える