Bookmarks

Bookmarks

Ten przewodnik pokazuje, jak odczytywać, wstawiać, przechodzić do i usuwać zakładki w dokumencie Word przy użyciu Aspose.Words FOSS dla .NET. Zakładka oznacza nazwane miejsce lub zakres treści, aby można było je odnaleźć, przejść do niego lub użyć jako punkt wstawiania dalszych edycji. Aspose.Words FOSS dla .NET reprezentuje zakładki za pomocą klas Bookmark, BookmarkStart i BookmarkEnd, oraz udostępnia metody DocumentBuilder do tworzenia i lokalizowania ich podczas tworzenia lub edytowania dokumentu.


Odczytywanie zakładek

Każdy Range udostępnia zakładki, które zawiera, poprzez własność Bookmarks, która zwraca BookmarkCollection. Ponieważ Document sam udostępnia Range, doc.Range.Bookmarks zwraca wszystkie zakładki w dokumencie. Odszukaj konkretną zakładkę po nazwie za pomocą indeksatora BookmarkCollection — bookmarks[bookmarkName] — sprawdź, ile ich jest za pomocą Count, lub przejdź całą kolekcję przy użyciu GetEnumerator(). Każdy Bookmark udostępnia swój Name oraz tekst, który otacza, poprzez Text.


Wstawianie zakładek przy użyciu DocumentBuilder

DocumentBuilder jest typowym sposobem tworzenia zakładek podczas pisania dokumentu. Wywołaj StartBookmark(bookmarkName) przed wstawieniem treści, a następnie EndBookmark(bookmarkName) po niej — konstruktor otacza wszystko napisane pomiędzy jako zakres zakładki. Dla zakresu kolumn tabeli użyj zamiast tego StartColumnBookmark(bookmarkName) i EndColumnBookmark(bookmarkName); powstały Bookmark.IsColumn jest true, przy czym FirstColumn i LastColumn identyfikują zaznaczony zakres kolumn. Aby przemieścić konstruktor do istniejącej zakładki w celu dalszych edycji, wywołaj MoveToBookmark(bookmarkName), lub przeciążenie MoveToBookmark(bookmarkName, isStart, isAfter), aby kontrolować, który koniec zakładki zostanie ustawiony kursorem.


Struktura zakładek w drzewie dokumentu

Zakładka jest reprezentowana w drzewie dokumentu jako para węzłów: BookmarkStart i BookmarkEnd, oba utworzone jako BookmarkStart(doc, name) / BookmarkEnd(doc, name). Każdy odwołuje się do swojego logicznego obiektu Bookmark — BookmarkStart.Bookmark zwraca go, a Bookmark z kolei udostępnia właściwości BookmarkStart i BookmarkEnd wskazujące na jego dwa węzły graniczne. Ponieważ BookmarkStart i BookmarkEnd są zwykłymi węzłami, obsługują standardowe operacje na węzłach, takie jak GetText(), Clone(isCloneChildren) i GetAncestor(ancestorType), i mogą być odnajdywane poprzez przechodzenie drzewa jak każdy inny typ węzła.


Usuwanie zakładek

Wywołaj Bookmark.Remove(), aby usunąć znaczniki początkowy i końcowy pojedynczej zakładki — usuwa to samą zakładkę, a nie zawartość dokumentu, którą otacza. Aby usunąć zakładki masowo, użyj BookmarkCollection.Remove(bookmark), Remove(bookmarkName), RemoveAt(index) lub Clear(), aby jednorazowo usunąć wszystkie zakładki w danym zakresie.


Wskazówki i najlepsze praktyki

  • Preferuj indeksator BookmarkCollection (bookmarks["BookmarkName"]) zamiast ręcznej iteracji, gdy już znasz nazwę docelowej zakładki.
  • Zawsze łącz wywołanie StartBookmark(name) z pasującym wywołaniem EndBookmark(name) używając tej samej nazwy — nieparowane wywołanie pozostawia zakładkę niekompletną.
  • Sprawdź Bookmark.IsColumn przed odczytaniem FirstColumn lub LastColumn — te dwie właściwości mają sens tylko dla zakładek kolumnowych tworzonych przy użyciu StartColumnBookmark/EndColumnBookmark.
  • Bookmark.Remove() usuwa tylko znaczniki zakładki, a nie otaczający tekst, więc usunięcie zakładki nigdy nie usuwa zawartości dokumentu.
  • Użyj DocumentBuilder.MoveToBookmark(), aby przenieść kursor kreatora do znanej lokalizacji zamiast ręcznego przeszukiwania drzewa węzłów w poszukiwaniu BookmarkStart.

Typowe problemy

ProblemPrzyczynaPoprawka
BookmarkCollection indeksator zwraca null przy wyszukiwaniu nazwyNazwa zakładki nie istnieje w przeszukiwanym zakresieNajpierw wyświetl listę nazw za pomocą GetEnumerator(), aby potwierdzić dokładną, uwzględniającą wielkość liter nazwę
Wstawiona zawartość nie jest oznaczona zakładkąEndBookmark() nigdy nie został wywołany, lub został wywołany z inną nazwą niż StartBookmark()Zawsze dopasowuj StartBookmark(name) do EndBookmark(name) przy użyciu identycznego ciągu nazwy
Dane zakładki kolumny wyglądają nieprawidłowoFirstColumn/LastColumn odczytywane bez wcześniejszego sprawdzenia IsColumnInterpretuj FirstColumn/LastColumn tylko wtedy, gdy Bookmark.IsColumn jest true

FAQ

Jak uzyskać wszystkie zakładki w dokumencie?

Przeczytaj doc.Range.Bookmarks, które zwraca BookmarkCollection obejmujący cały dokument.

Czy mogę dodać zakładkę do części tabeli według kolumny zamiast według zakresu tekstowego?

Tak — użyj DocumentBuilder.StartColumnBookmark(bookmarkName) i EndColumnBookmark(bookmarkName). Wynikowa zakładka ma IsColumn ustawione na true, przy czym FirstColumn/LastColumn oznaczają zakres kolumn.

Czy usunięcie zakładki usuwa oznaczony przez nią tekst?

Nr. Bookmark.Remove() usuwa tylko węzły znacznika BookmarkStart/BookmarkEnd; zawartość dokumentu pomiędzy nimi pozostaje nietknięta.

Jak przenieść kursor DocumentBuilder do istniejącej zakładki?

Wywołaj DocumentBuilder.MoveToBookmark(bookmarkName) lub MoveToBookmark(bookmarkName, isStart, isAfter), aby kontrolować, czy kursor trafi na początek czy koniec zakładki.

Jaka jest różnica między przeciążeniami BookmarkCollection.Remove()?

Remove(bookmark) przyjmuje obiekt Bookmark, Remove(bookmarkName) przyjmuje jego nazwę, a RemoveAt(index) przyjmuje jego pozycję w kolekcji — wszystkie trzy usuwają pojedynczą zakładkę, podczas gdy Clear() usuwa wszystkie zakładki w kolekcji.


Podsumowanie API Reference

Klasa / MetodaOpis
BookmarkReprezentuje pojedynczą zakładkę; udostępnia Name, Text, IsColumn, FirstColumn, LastColumn oraz Remove()
BookmarkCollectionZakładki w Range; indeksowane według nazwy, Remove(), RemoveAt(), Clear(), Count
BookmarkStart / BookmarkEndWęzły dokumentu oznaczające granice zakładki; odnośnik powrotny przez Bookmark.BookmarkStart/Bookmark.BookmarkEnd
Range.BookmarksZwraca BookmarkCollection dla danego zakresu, w tym doc.Range.Bookmarks dla całego dokumentu
DocumentBuilder.StartBookmark() / EndBookmark()Otocz wstawioną treść nazwanej zakładką
DocumentBuilder.StartColumnBookmark() / EndColumnBookmark()Oznacz zakres kolumn tabeli jako zakładkę
DocumentBuilder.MoveToBookmark()Ustawia kursor kreatora na istniejącej zakładce

Zobacz także

 Polski