OpenXML ComplexScript字体未呈现

时间:2018-06-22 21:05:15

标签: c# openxml openxml-sdk

我有以下程序可以生成示例Word文档:

for line in fileinput.FileInput("zero.html",inplace=1):
    if '{problem}' in line:
        rep = 'a dynamic var'
        line = line.replace('{problem}', rep)
        print(line)

似乎工作正常。 “示例文档”以16pt字体正确呈现,粗体和大写。但是,using DocumentFormat.OpenXml; using DocumentFormat.OpenXml.Packaging; using DocumentFormat.OpenXml.Wordprocessing; namespace OpenXmlExample { class Program { static void Main(string[] args) { string filePath = @"C:\Users\[Redacted]\Desktop\OpenXmlExample.docx"; using (WordprocessingDocument document = WordprocessingDocument.Create(filePath, WordprocessingDocumentType.Document)) { // Create main part and body of document MainDocumentPart mainPart = document.AddMainDocumentPart(); mainPart.Document = new Document(); Body body = mainPart.Document.AppendChild(new Body()); // Prototype code for generation of the document title Paragraph paragraph = new Paragraph(); ParagraphProperties pPr = new ParagraphProperties { Justification = new Justification { Val = JustificationValues.Center } }; RunProperties rPr = new RunProperties { RunFonts = new RunFonts { ComplexScript = new StringValue("Arial") }, Bold = new Bold { Val = true }, Caps = new Caps { Val = true }, FontSize = new FontSize { Val = "32" }, FontSizeComplexScript = new FontSizeComplexScript { Val = "36" } }; Text t = new Text("Example Document"); Run r = new Run(); r.Append((OpenXmlElement) rPr.Clone()); r.Append(t); pPr.Append((OpenXmlElement) rPr.Clone()); paragraph.Append(pPr); paragraph.Append(r); body.Append(paragraph); } } } } 部分似乎不起作用。文本仅以默认字体呈现。有人可以帮助我了解我做错了什么吗?如果将ComplexScript = new StringValue("Arial")属性设置为Arial,这似乎可行,但是我希望将其作为Ascii标签生成。

1 个答案:

答案 0 :(得分:1)

单次运行可以配置4种不同的字体。
这些字体中每种字体的使用应由运行内容的Unicode字符值确定。

ASCII 用于Unicode范围(U + 0000-U + 007F)中的字符。
复杂脚本,用于复杂脚本Unicode范围内的字符,例如阿拉伯文字。
东亚,用于东亚Unicode范围内的字符,例如。日语。
高ANSI :用于Unicode范围内的字符,不属于其他类别之一。

“示例文档”中的字符全部属于ASCII组,因此将应用相应组的字体。

MSDNOffice Open XML处有更多详细信息。