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ímEndBookmark(name)se stejným názvem — nespárovaný pár nechá záložku neúplnou. - Zkontrolujte
Bookmark.IsColumnpřed čtenímFirstColumnneboLastColumn— 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ů proBookmarkStart.
Časté problémy
| Problém | Příčina | Oprava |
|---|---|---|
Indexér BookmarkCollection vrací null při vyhledávání názvu | Ná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žce | EndBookmark() 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 IsColumn | Interpretovat 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 / Metoda | Popis: |
|---|---|
Bookmark | Representuje jedinou záložku; poskytuje Name, Text, IsColumn, FirstColumn, LastColumn a Remove() |
BookmarkCollection | Záložky v Range; indexér podle jména, Remove(), RemoveAt(), Clear(), Count |
BookmarkStart / BookmarkEnd | Uzly dokumentu označující hranice záložky; odkaz zpět přes Bookmark.BookmarkStart/Bookmark.BookmarkEnd |
Range.Bookmarks | Vrací 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 |