gpt4 book ai didi

c# - 如何通过页码访问 OpenXML 内容?

转载 作者:数据小太阳 更新时间:2023-10-29 01:57:06 24 4
gpt4 key购买 nike

使用OpenXML,我可以按页码阅读文档内容吗?

wordDocument.MainDocumentPart.Document.Body 给出完整文档的内容。

  public void OpenWordprocessingDocumentReadonly()
{
string filepath = @"C:\...\test.docx";
// Open a WordprocessingDocument based on a filepath.
using (WordprocessingDocument wordDocument =
WordprocessingDocument.Open(filepath, false))
{
// Assign a reference to the existing document body.
Body body = wordDocument.MainDocumentPart.Document.Body;
int pageCount = 0;
if (wordDocument.ExtendedFilePropertiesPart.Properties.Pages.Text != null)
{
pageCount = Convert.ToInt32(wordDocument.ExtendedFilePropertiesPart.Properties.Pages.Text);
}
for (int i = 1; i <= pageCount; i++)
{
//Read the content by page number
}
}
}

MSDN Reference


更新 1:

看起来分页符设置如下

<w:p w:rsidR="003328B0" w:rsidRDefault="003328B0">
<w:r>
<w:br w:type="page" />
</w:r>
</w:p>

所以现在我需要将 XML 与上面的检查分开,并为每个检查使用 InnerTex,这将给我页面虎钳文本。

现在问题变成了如何使用上述检查拆分 XML?


更新 2:

仅当您有分页符时才设置分页符,但如果文本从一页 float 到其他页面,则没有设置分页符 XML 元素,因此它返回到相同的挑战如何识别页面分隔.

最佳答案

您不能仅在 OOXML 数据级别通过页码引用 OOXML 内容

  • 硬分页符 不是问题;可以计算硬分页符。
  • 软分页符 是问题所在。这些是根据计算的实现的换行和分页算法受抚养人;它不是 OOXML 数据固有的。空无一物数数。

w:lastRenderedPageBreak 呢,它记录了文档最后一次呈现时软分页符的位置? 不,w:lastRenderedPageBreak 通常也没有帮助,因为:

如果您愿意接受对 Word Automation 的依赖,及其所有固有的 licensing and server operation limitations , 那么您就有机会确定页面边界、页码、页数等。

否则,唯一真正的答案是超越依赖专有的、特定于实现的分页算法的基于页面的引用框架。

关于c# - 如何通过页码访问 OpenXML 内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39992870/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com