通过Spire.Doc获取某页码上所有书签
时间: 2024-03-18 21:41:55 浏览: 143
你可以通过遍历文档中某一页的 BookmarkStart 对象来获取该页的所有书签。以下是示例代码:
```csharp
using Spire.Doc;
using Spire.Doc.Documents;
// 假设你已经加载了文档并获取了某个页码的 Section 对象
Section section = document.Sections[0];
int pageIndex = 2;
foreach (BookmarkStart bookmarkStart in section.Body.Bookmarks.BookmarksStart)
{
if (section.Document.Pages.IndexOf(bookmarkStart.GetPage()) == pageIndex)
{
string bookmarkName = bookmarkStart.Name;
// TODO: 处理该书签
}
}
```
代码中,我们遍历了 Section 中的所有 BookmarkStart 对象,通过 BookmarkStart 的 GetPage() 方法来判断该书签所在的页码是否与目标页码相等,如果是,则获取该书签的名称。你可以根据需要对获取到的书签名称进行处理。
相关问题
C# 如何通过Spire.Doc获取某页码上的所有书签
你可以使用 Spire.Doc 中的 BookmarkStart 类和 BookmarkEnd 类来获取某一页上的所有书签。首先,你需要获取页码对应的 Section 对象,然后遍历该 Section 中的所有 Paragraph 对象,再遍历每个 Paragraph 中的所有 DocumentObject 对象,找到其中类型为 BookmarkStart 的对象,判断该书签是否在该页中,如果是,则获取该书签的名称。以下是示例代码:
```csharp
using Spire.Doc;
using Spire.Doc.Documents;
// 假设你已经加载了文档并获取了某个页码的 Section 对象
Section section = document.Sections[0];
int pageIndex = 2;
foreach (Paragraph para in section.Paragraphs)
{
foreach (DocumentObject obj in para.ChildObjects)
{
if (obj is BookmarkStart)
{
BookmarkStart bookmarkStart = obj as BookmarkStart;
if (section.Document.Pages.IndexOf(bookmarkStart.Page) == pageIndex)
{
string bookmarkName = bookmarkStart.Name;
// TODO: 处理该书签
}
}
}
}
```
注意,该代码仅供参考,具体实现方式可能因为文档结构、书签位置等情况而有所不同。
C# 通过Spire.Doc获取指定word第页码的书签
可以通过以下代码获取指定Word文档中某个书签所在页码:
```csharp
using Spire.Doc;
// 加载Word文档
Document document = new Document("your-document.docx");
// 获取指定书签
Bookmark bookmark = document.Bookmarks["your-bookmark"];
// 获取书签所在的段落
Paragraph paragraph = bookmark.BookmarkStart.OwnerParagraph;
// 获取段落所在的页码
int pageNumber = document.GetPageIndex(paragraph);
```
其中,`your-document.docx`表示你要操作的Word文档,`your-bookmark`表示你要获取的书签名称。注意,如果书签不存在,会抛出`KeyNotFoundException`异常。
阅读全文