【问题标题】:Styling Run/Paragraph to support both RTL and LTR words样式化运行/段落以支持 RTL 和 LTR 单词
【发布时间】:2015-08-25 10:34:39
【问题描述】:

如何设置 Run 和/或 Paragraph 的样式以同时支持 RTL 和 LTR 字词?

问题是:我有一个包含波斯语和英语单词的复杂文本,我正在尝试使用 OpenXML SDK 创建一个.docx 文档。但是,英文单词,也得到 RTL。假设我有这个文本:

این متن Javad Amiry انگلیسی ست و باید چپ به راست شود.

我希望将文本放在这样的文档中:

但我得到了这个:

如您所见,英语单词是反之亦然!意思是,虽然我期待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);

提前致谢。

【问题讨论】:

  • 你好。您确定可以将这两种类型的文本组合在一行中吗?我的意思是你能用 MsWord 创建这样的文档吗?如果你提供这样的文件,99%我会帮你。无论如何,我的观点是为每种类型的文本使用单独的运行(具有不同的文本方向属性)。
  • 嗨。是的,Q 中的第一个图像是在 MS Word 中创建的,它是正确的。但是,你是对的。我确实解压缩了 MSW 创建的文档并查看了生成的 XML。它绝对使用 2 个单独的 Runs。但我很好奇是否有任何方法可以将它们合二为一Run。感谢您的咨询。干杯。 +1

标签: c# c#-4.0 openxml openxml-sdk bidi


【解决方案1】:

好吧,我终于找到了问题所在。问题是RightToLeftText,我已将其添加到Run。我用BiDi 替换它并解决了问题。干杯。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    • 2019-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多