【问题标题】:Office Open XML create a space between run elementsOffice Open XML 在运行元素之间创建空间
【发布时间】:2016-05-17 11:23:48
【问题描述】:

存在多个 API,例如docx4j,Apache POI,微软的SDK,可以操作docx文件。我使用 docx4j 创建了以下 sn-p。但是,它不会在“单词之前的文本”和“这是文本”之间创建空格。我想知道这是一个错误还是我可以做任何事情。

您可以解压缩一个 docx 文件并再次压缩它(只压缩内容;而不是文件夹!)以便对 document.xml 进行更改,从而更改您的 docx 文本。创建空间的逻辑对我来说似乎很奇怪。有没有人知道如何充分创建

        <w:proofErr w:type="spellStart"/>
        <w:r>
            <w:t>the text prior to the word</w:t>
        </w:r>
        <w:proofErr w:type="spellEnd"/>
        <w:r>
            <w:t> </w:t>
        </w:r>
        <w:r>
            <w:t xml:space="preserve"> </w:t>
        </w:r>
        <w:commentRangeStart w:id="1"/>
        <w:r>
            <w:t>this is text</w:t>
        </w:r>

【问题讨论】:

    标签: ms-office openxml docx4j


    【解决方案1】:

    将 xml:space="preserve" 属性添加到包含文本的运行中,以空格开头或结尾。例如:

        <w:r>
            <w:t  xml:space="preserve">the text prior to the word </w:t>
        </w:r>
    

    【讨论】:

    • 在 Word 中键入一个句子。通过将单词加粗或输入错误,强制它使用多次运行。保存并解压缩结果。你会看到这就是你的做法。很难说你做错了什么,除非你可以把你得到的 docx 放在某个地方....
    【解决方案2】:

    如果您使用的是 Docx4j,那么,

    您需要告诉 docx4j 在您的 Text 实例中显式保留空格(基础格式当然是 XML,它往往不太注意空格)。像这样的:

    text.setValue("              abc             ");
    text.setSpace("preserve");
    ...
    

    here找到答案:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多