Bookmarks

Bookmarks

이 가이드는 Aspose.Words FOSS for .NET를 사용하여 Word 문서에서 북마크를 읽고, 삽입하고, 이동하고, 제거하는 방법을 보여줍니다. 북마크는 이름이 지정된 위치 또는 콘텐츠 범위를 표시하여 찾아보고, 이동하거나, 추가 편집을 위한 삽입 지점으로 사용할 수 있습니다. Aspose.Words FOSS for .NET는 Bookmark, BookmarkStart, BookmarkEnd 클래스로 북마크를 표현하며, 문서를 작성하거나 편집하는 동안 북마크를 만들고 찾기 위한 DocumentBuilder 메서드를 제공합니다.


북마크 읽기

각 Range는 Bookmarks 속성을 통해 포함된 북마크를 공개하며, 이 속성은 BookmarkCollection를 반환합니다. Document 자체가 Range를 노출하므로, doc.Range.Bookmarks는 문서 내 모든 북마크를 반환합니다. BookmarkCollection 인덱서를 사용하여 이름으로 특정 북마크를 조회하고 — bookmarks[bookmarkName] — Count으로 존재 개수를 확인하거나 GetEnumerator()으로 전체 컬렉션을 순회합니다. 각 Bookmark은 Name와 Text를 통해 포함된 텍스트를 공개합니다.


DocumentBuilder를 사용한 북마크 삽입

DocumentBuilder은(는) 문서를 작성하는 동안 북마크를 만들기 위한 일반적인 방법입니다. 콘텐츠를 삽입하기 전에 StartBookmark(bookmarkName)을 호출하고, 삽입 후에 EndBookmark(bookmarkName)를 호출하면 — 빌더가 사이에 작성된 모든 내용을 북마크된 범위로 감쌉니다. 표 열 범위의 경우, 대신 StartColumnBookmark(bookmarkName)와 EndColumnBookmark(bookmarkName)를 사용하십시오; 결과 Bookmark.IsColumn는 true이며, FirstColumn와 LastColumn이 표시된 열 범위를 식별합니다. 기존 북마크 위치로 빌더를 재배치하여 추가 편집을 하려면 MoveToBookmark(bookmarkName)를 호출하거나, 북마크의 어느 끝에 커서가 위치할지 제어하기 위해 오버로드인 MoveToBookmark(bookmarkName, isStart, isAfter)을 사용합니다.


문서 트리에서의 북마크 구조

북마크는 문서 트리에서 BookmarkStart와 BookmarkEnd이라는 두 노드 쌍으로 표시됩니다. 두 노드는 모두 BookmarkStart(doc, name)/BookmarkEnd(doc, name)으로 구성됩니다. 각각은 자신의 논리적 Bookmark 객체에 연결되며 — BookmarkStart.Bookmark가 이를 반환하고, Bookmark는 다시 BookmarkStart와 BookmarkEnd 속성을 노출하여 두 경계 노드를 가리킵니다. BookmarkStart와 BookmarkEnd은 일반 노드이므로 GetText(), Clone(isCloneChildren), GetAncestor(ancestorType)와 같은 표준 노드 작업을 지원하며, 다른 노드 유형과 마찬가지로 트리를 순회하면서 찾을 수 있습니다.


북마크 제거

Bookmark.Remove()를 호출하여 단일 북마크의 시작 및 끝 마커를 삭제합니다 — 이는 북마크 자체를 제거하며, 포함된 문서 내용은 삭제되지 않습니다. 여러 북마크를 한 번에 제거하려면 BookmarkCollection.Remove(bookmark), Remove(bookmarkName), RemoveAt(index) 또는 Clear()를 사용하여 해당 범위의 모든 북마크를 한 번에 삭제하십시오.


팁 및 모범 사례

  • 대상 북마크 이름을 이미 알고 있는 경우 수동 반복보다 BookmarkCollection 인덱서(bookmarks["BookmarkName"])를 사용하는 것이 좋습니다.
  • 항상 동일한 이름을 사용하여 StartBookmark(name) 호출과 대응되는 EndBookmark(name) 호출을 짝지어야 합니다 — 짝이 맞지 않으면 북마크가 불완전하게 남습니다.
  • FirstColumn 또는 LastColumn를 읽기 전에 Bookmark.IsColumn을 확인하십시오 — 이 두 속성은 StartColumnBookmark/EndColumnBookmark로 만든 열 북마크에만 의미가 있습니다.
  • Bookmark.Remove()은 북마크 마커만 삭제하고 포함된 텍스트는 삭제하지 않으므로, 북마크를 제거해도 문서 내용이 삭제되지 않습니다.
  • 수동으로 노드 트리에서 BookmarkStart을(를) 검색하는 대신, DocumentBuilder.MoveToBookmark()을(를) 사용하여 빌더 커서를 알려진 위치로 이동하십시오.

일반적인 문제

문제원인해결책
BookmarkCollection 인덱서는 이름 조회에 대해 null을 반환합니다검색 중인 범위에 북마크 이름이 존재하지 않습니다정확하고 대소문자를 구분한 이름을 확인하려면 먼저 GetEnumerator()을 통해 이름을 나열하십시오
삽입된 콘텐츠에 북마크가 없습니다EndBookmark()이(가) 호출되지 않았거나, StartBookmark()과 다른 이름으로 호출되었습니다항상 StartBookmark(name)와 EndBookmark(name)를 동일한 이름 문자열을 사용하여 일치시킵니다
열 북마크 데이터가 잘못된 것처럼 보입니다FirstColumn/LastColumn을(를) 먼저 IsColumn를 확인하지 않고 읽습니다Bookmark.IsColumn가 true일 때만 FirstColumn/LastColumn을 해석합니다

FAQ

문서에서 모든 북마크를 어떻게 가져오나요?

전체 문서를 포괄하는 BookmarkCollection을 반환하는 doc.Range.Bookmarks을 읽으십시오.

텍스트 범위가 아니라 열 단위로 표의 일부를 북마크할 수 있나요?

예 — DocumentBuilder.StartColumnBookmark(bookmarkName)과 EndColumnBookmark(bookmarkName)을 사용하십시오. 결과 북마크는 IsColumn가 true으로 설정되고, FirstColumn/LastColumn가 열 범위를 표시합니다.

북마크를 제거하면 해당 텍스트가 삭제되나요?

No. Bookmark.Remove()는 BookmarkStart/BookmarkEnd 마커 노드만 제거합니다; 사이에 있는 문서 내용은 그대로 유지됩니다.

DocumentBuilder 커서를 기존 북마크로 이동하려면 어떻게 해야 하나요?

DocumentBuilder.MoveToBookmark(bookmarkName)를 호출하거나 MoveToBookmark(bookmarkName, isStart, isAfter)을 사용하여 커서가 북마크의 시작에 놓일지 끝에 놓일지를 제어합니다.

BookmarkCollection.Remove() 오버로드 간의 차이점은 무엇인가요?

Remove(bookmark)는 Bookmark 객체를 받고, Remove(bookmarkName)는 해당 이름을 받으며, RemoveAt(index)는 컬렉션 내 위치를 받습니다 — 이 세 가지는 모두 단일 북마크를 제거하지만, Clear()는 컬렉션의 모든 북마크를 제거합니다.


API Reference 요약

클래스 / 메서드설명
Bookmark단일 북마크를 나타내며 Name, Text, IsColumn, FirstColumn, LastColumn, 그리고 Remove()를 노출합니다
BookmarkCollection북마크는 Range에 있습니다; 이름, Remove(), RemoveAt(), Clear(), Count으로 인덱싱
BookmarkStart / BookmarkEnd북마크 경계를 표시하는 문서 노드; Bookmark.BookmarkStart/Bookmark.BookmarkEnd를 통해 다시 연결
Range.Bookmarks주어진 범위에 대한 BookmarkCollection을 반환하며, 전체 문서에 대해서는 doc.Range.Bookmarks을 포함합니다.
DocumentBuilder.StartBookmark() / EndBookmark()삽입된 내용을 이름이 지정된 북마크로 감쌉니다.
DocumentBuilder.StartColumnBookmark() / EndColumnBookmark()테이블 열 범위를 북마크로 표시합니다
DocumentBuilder.MoveToBookmark()빌더 커서를 기존 북마크에 위치시킵니다

참조

 한국어