使用xml解析在word文档中查找隐式分页符

时间:2014-07-13 08:47:25

标签: java xml-parsing openxml openxml-sdk

我需要提取word文档的第一页内容。如果我查看openxml的wordML文档,我可以看到如下内容: <w:lastRenderedPageBreak /> 似乎<w:br w:type="page" /> 当用户输入硬分页符时,会出现<w:br w:type="page" />。 我不明白所有情况<w:lastRenderedPageBreak />都会发生。它出现在一些隐含的分页符案例中,但不是全部。 例如:我输入了一些文字,然后按了几次输入,光标进入下一页,如果我仍然在新页面中按几次输入,这就是我得到的

    **DOCUMENT.XML**
- <w:p w:rsidR="00266B4A" w:rsidRDefault="00266B4A" w:rsidP="00266B4A">
-   <w:r>
      <w:t xml:space="preserve">All my fun TEXT.</w:t>
</w:r>
</w:p>
  <w:p w:rsidR="0061403F" w:rsidRDefault="0061403F" w:rsidP="00266B4A" />
  <w:p w:rsidR="00266B4A" w:rsidRDefault="00266B4A" w:rsidP="00266B4A" />
  <w:p w:rsidR="00266B4A" w:rsidRDefault="00266B4A" w:rsidP="00266B4A" />
  <w:p w:rsidR="00266B4A" w:rsidRDefault="00266B4A" w:rsidP="00266B4A" />
  <w:p w:rsidR="00266B4A" w:rsidRDefault="00266B4A" w:rsidP="00266B4A" />
  <w:p w:rsidR="00266B4A" w:rsidRDefault="00266B4A" w:rsidP="00266B4A" />   <-{page break}
  <w:p w:rsidR="00266B4A" w:rsidRDefault="00266B4A" w:rsidP="00266B4A" />
  <w:p w:rsidR="00266B4A" w:rsidRDefault="00266B4A" w:rsidP="00266B4A" />
  <w:p w:rsidR="00266B4A" w:rsidRDefault="00266B4A" w:rsidP="00266B4A" />
- <w:p w:rsidR="00266B4A" w:rsidRDefault="00266B4A" w:rsidP="00266B4A">
-     <w:r>
         <w:t xml:space="preserve">All my fun TEXT.</w:t>
  </w:r>
</w:p>

正如您在键入enter时光标进入下一页时所看到的那样,在提取的word文档文件夹的document.xml文件中没有关于此活动的线索。 有人可以帮我找到Word文档中的隐式分页符,以便我可以提取文档第一页的内容吗? 如果无法在openxml中检测特定页面内容,那么pdf转换工具如何在每个word文档页面转换为PDF格式的页面时起作用?

请不要建议使用像POI这样没有提取特定页面内容的API。 编辑:找到隐藏分页符的原因是因为我的任务涉及提取单词文档中的封面图像。我所遵循的启发式是“如果文档的第一页只包含一个图像,那么它是一个封面图像,否则那里没有封面图片“。所以我需要单独获取第一页的内容,并检查它是否只有一个图像。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

简短的回答是,通过检查XML无法做到你想做的事情。 Word(或PDF转换器)的页面呈现引擎决定了页面中断的位置。 XML简单地描述了要流动的内容和#34;通过渲染引擎。