Word Open XML

时间:2017-05-11 19:26:53

标签: openxml wordprocessingml wordml

看起来,Word Open XML的ECMA规范没有指定如何使用vertAlign属性呈现“运行”。是否有描述预期行为的文件:

  1. 上标和下标使用什么字体大小?
  2. 将上标/下标文本相对于基线移动多少?
  3. 仅供参考,这里是MS Word为包含文本“X²”的简单文档生成的document.xml(为简洁起见,省略了XML名称空间):

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <w:document>
      <w:body>
        <w:p w14:paraId="4B8ED8F1" w14:textId="3891D3E1" 
             w:rsidR="00CE1223" w:rsidRDefault="00886D56">
          <w:r>
            <w:t>X</w:t>
          </w:r>
          <w:r w:rsidRPr="00886D56">
            <w:rPr>
              <w:vertAlign w:val="superscript"/>
            </w:rPr>
            <w:t>2</w:t>
          </w:r>
          <w:bookmarkStart w:id="0" w:name="_GoBack"/>
          <w:bookmarkEnd w:id="0"/>
        </w:p>
        <w:sectPr w:rsidR="00CE1223">
          <w:pgSz w:w="12240" w:h="15840"/>
          <w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1440" 
                   w:header="720" w:footer="720" w:gutter="0"/>
          <w:cols w:space="720"/>
          <w:docGrid w:linePitch="360"/>
        </w:sectPr>
      </w:body>
    </w:document>
    

1 个答案:

答案 0 :(得分:0)

RunProperties元素具有以下两个子元素,可用于设置具有RunVerticalTextAlignment的位置和字体:

  • RunFonts元素,可用于设置字体类型
  • Position元素可用于相对于其默认基线降低或提高运行次数。

使用这些元素,您可以创建一个上标并具有调整后的字体的运行:

// Add headers to describe file
let headers = {
   'Content-disposition': 'attachment; filename="' + 'giraffe.jpg' + '"',
   'Content-Type': 'image/png'
};

// Streams are supported for reading files.
let remoteReadStream = bucket.file('giraffe.jpg').createReadStream();

// Set the response code & headers and pipe content to response
res.status(200).set(headers);
remoteReadStream.pipe(res);

这将输出以下openxml:

    // Creates an RunProperties instance and adds its children.
    public RunProperties GenerateRunProperties()
    {
        RunProperties runProperties1 = new RunProperties();
        RunFonts runFonts1 = new RunFonts(){ Ascii = "Times New Roman", HighAnsi = "Times New Roman", ComplexScript = "Times New Roman" };
        FontSize fontSize1 = new FontSize(){ Val = "48" };
        VerticalTextAlignment verticalTextAlignment1 = new VerticalTextAlignment(){ Val = VerticalPositionValues.Superscript };

        runProperties1.Append(runFonts1);
        runProperties1.Append(fontSize1);
        runProperties1.Append(verticalTextAlignment1);
        return runProperties1;
    }

您可以使用以下元素移动垂直对齐的行程:

<w:rPr xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
   <w:rFonts w:ascii="Times New Roman" w:hAnsi="Times New Roman" w:cs="Times New Roman" />
  <w:sz w:val="48" />
  <w:vertAlign w:val="superscript" />
</w:rPr>

生成以下openXML:

    // Creates an RunProperties instance and adds its children.
    public RunProperties GenerateRunProperties()
    {
        RunProperties runProperties1 = new RunProperties();
        RunFonts runFonts1 = new RunFonts(){ Ascii = "Times New Roman", HighAnsi = "Times New Roman", ComplexScript = "Times New Roman" };
        Position position1 = new Position(){ Val = "-10" };
        FontSize fontSize1 = new FontSize(){ Val = "48" };
        VerticalTextAlignment verticalTextAlignment1 = new VerticalTextAlignment(){ Val = VerticalPositionValues.Superscript };

        runProperties1.Append(runFonts1);
        runProperties1.Append(position1);
        runProperties1.Append(fontSize1);
        runProperties1.Append(verticalTextAlignment1);
        return runProperties1;
    }

根据您分配给position元素的值,运行将相对于其基线升高或降低:

  • Positve =>已举起
  • 负面=>降低