Bookmarks

Bookmarks

Tento průvodce ukazuje, jak číst, vkládat, přecházet na a odstraňovat záložky v dokumentu Word pomocí Aspose.Words FOSS pro .NET. Záložka označuje pojmenované místo nebo rozsah obsahu, aby jej bylo možné vyhledat, přejít na něj nebo použít jako místo vložení pro další úpravy. Aspose.Words FOSS pro .NET představuje záložky pomocí tříd Bookmark, BookmarkStart a BookmarkEnd a poskytuje DocumentBuilder metody pro jejich vytváření a vyhledávání během tvorby nebo úpravy dokumentu.


Čtení záložek

Každý Range zpřístupňuje záložky, které obsahuje, prostřednictvím vlastnosti Bookmarks, která vrací BookmarkCollection. Protože Document sám vystavuje Range, doc.Range.Bookmarks vrací každou záložku v dokumentu. Vyhledejte konkrétní záložku podle názvu pomocí indexeru BookmarkCollection — bookmarks[bookmarkName] — zjistěte, kolik jich existuje pomocí Count, nebo projděte celou kolekci pomocí GetEnumerator(). Každý Bookmark vystavuje své Name a text, který obklopuje, prostřednictvím Text.


Vkládání záložek pomocí DocumentBuilder

DocumentBuilder je obvyklý způsob, jak vytvářet záložky při psaní dokumentu. Zavolejte StartBookmark(bookmarkName) před vložením obsahu, poté EndBookmark(bookmarkName) po něm — builder zabalí vše napsané mezi nimi jako rozsah záložky. Pro rozsah sloupců tabulky použijte místo toho StartColumnBookmark(bookmarkName) a EndColumnBookmark(bookmarkName); výsledný Bookmark.IsColumn je true, přičemž FirstColumn a LastColumn identifikují označený rozsah sloupců. Pro přemístění builderu na existující záložku pro další úpravy zavolejte MoveToBookmark(bookmarkName), nebo přetížení MoveToBookmark(bookmarkName, isStart, isAfter) k řízení, na který konec záložky kurzor dopadne.


Struktura záložek ve stromu dokumentu

Záložka je v dokumentovém stromu reprezentována jako dvojice uzlů: BookmarkStart a BookmarkEnd, oba vytvořené jako BookmarkStart(doc, name) / BookmarkEnd(doc, name). Každý odkazuje zpět na svůj logický objekt Bookmark — BookmarkStart.Bookmark jej vrací a Bookmark následně vystavuje vlastnosti BookmarkStart a BookmarkEnd, které ukazují na jeho dva ohraničující uzly. Protože BookmarkStart a BookmarkEnd jsou běžné uzly, podporují standardní operace s uzly, jako jsou GetText(), Clone(isCloneChildren) a GetAncestor(ancestorType), a lze je najít procházením stromu stejně jako jakýkoli jiný typ uzlu.


Odstraňování záložek

Zavolejte Bookmark.Remove() k odstranění počátečních a koncových značek jedné záložky — tím se odstraní samotná záložka, nikoli obsah dokumentu, který obaluje. Pro hromadné odstraňování záložek použijte BookmarkCollection.Remove(bookmark), Remove(bookmarkName), RemoveAt(index) nebo Clear() k vymazání všech záložek v daném rozsahu najednou.


Tipy a osvědčené postupy

  • Upřednostněte indexér BookmarkCollection (bookmarks["BookmarkName"]) před ruční iterací, pokud už znáte název cílové záložky.
  • Vždy spárujte volání StartBookmark(name) s odpovídajícím voláním EndBookmark(name) se stejným názvem — nespárovaný pár nechá záložku neúplnou.
  • Zkontrolujte Bookmark.IsColumn před čtením FirstColumn nebo LastColumn — tyto dvě vlastnosti mají smysl pouze pro sloupcové záložky vytvořené pomocí StartColumnBookmark/EndColumnBookmark.
  • Bookmark.Remove() odstraňuje pouze značky záložky, nikoli zahrnutý text, takže odstranění záložky nikdy neodstraní obsah dokumentu.
  • Použijte DocumentBuilder.MoveToBookmark() k přesunu kurzoru stavitele na známou pozici místo ručního prohledávání stromu uzlů pro BookmarkStart.

Časté problémy

ProblémPříčinaOprava
Indexér BookmarkCollection vrací null při vyhledávání názvuNázev záložky neexistuje v rozsahu, který se prohledáváNejprve vylistujte názvy pomocí GetEnumerator(), abyste potvrdili přesný název s rozlišováním velikosti písmen
Vložený obsah není v záložceEndBookmark() nebyla nikdy zavolána, nebo byla zavolána s jiným názvem než StartBookmark()Vždy porovnávejte StartBookmark(name) s EndBookmark(name) pomocí identického řetězce názvu
Data záložky sloupce vypadají špatněFirstColumn/LastColumn přečteno bez předchozí kontroly IsColumnInterpretovat FirstColumn/LastColumn pouze pokud je Bookmark.IsColumn true

FAQ

Jak získám všechny záložky v dokumentu?

Přečtěte si doc.Range.Bookmarks, který vrací BookmarkCollection pokrývající celý dokument.

Mohu si vytvořit záložku na část tabulky podle sloupce místo podle textového rozsahu?

Ano — použijte DocumentBuilder.StartColumnBookmark(bookmarkName) a EndColumnBookmark(bookmarkName). Výsledná záložka má IsColumn nastavený na true, přičemž FirstColumn/LastColumn označují rozsah sloupců.

Odstranění záložky smaže text, který označuje?

Č. Bookmark.Remove() odstraňuje pouze uzly značek BookmarkStart/BookmarkEnd; obsah dokumentu mezi nimi zůstává nedotčen.

Jak přesunout kurzor DocumentBuilder na existující záložku?

Zavolejte DocumentBuilder.MoveToBookmark(bookmarkName) nebo MoveToBookmark(bookmarkName, isStart, isAfter), abyste určili, zda kurzor skončí na začátku nebo na konci záložky.

Jaký je rozdíl mezi přetíženími BookmarkCollection.Remove()?

Remove(bookmark) přijímá objekt Bookmark, Remove(bookmarkName) přijímá jeho název a RemoveAt(index) přijímá jeho pozici v kolekci — všechny tři odstraňují jednu záložku, zatímco Clear() odstraňuje všechny záložky v kolekci.


API Reference Shrnutí

Třída / MetodaPopis:
BookmarkRepresentuje jedinou záložku; poskytuje Name, Text, IsColumn, FirstColumn, LastColumn a Remove()
BookmarkCollectionZáložky v Range; indexér podle jména, Remove(), RemoveAt(), Clear(), Count
BookmarkStart / BookmarkEndUzly dokumentu označující hranice záložky; odkaz zpět přes Bookmark.BookmarkStart/Bookmark.BookmarkEnd
Range.BookmarksVrací BookmarkCollection pro daný rozsah, včetně doc.Range.Bookmarks pro celý dokument
DocumentBuilder.StartBookmark() / EndBookmark()Zabalte vložený obsah do pojmenované záložky
DocumentBuilder.StartColumnBookmark() / EndColumnBookmark()Označte rozsah sloupců tabulky jako záložku
DocumentBuilder.MoveToBookmark()Umístí kurzor tvůrce na existující záložku

Viz také:

 Čeština