Bookmarks
Bookmarks
Deze gids laat zien hoe je bladwijzers kunt lezen, invoegen, er naartoe kunt navigeren en verwijderen in een Word-document met Aspose.Words FOSS voor .NET. Een bladwijzer markeert een benoemde locatie of een bereik van inhoud zodat deze kan worden opgezocht, er naartoe kan worden genavigeerd, of kan worden gebruikt als een invoerpunt voor verdere bewerkingen. Aspose.Words FOSS voor .NET representeert bladwijzers met de Bookmark, BookmarkStart en BookmarkEnd klassen, en biedt DocumentBuilder methoden voor het creëren en vinden ervan tijdens het schrijven of bewerken van een document.
Bladwijzers lezen
Elke Range maakt de bladwijzers die het bevat zichtbaar via de Bookmarks eigenschap, die een BookmarkCollection retourneert. Aangezien Document zelf een Range exposeert, retourneert doc.Range.Bookmarks elke bladwijzer in het document. Zoek een specifieke bladwijzer op naam met de BookmarkCollection indexer — bookmarks[bookmarkName] — controleer hoeveel er bestaan met Count, of doorloop de hele collectie met GetEnumerator(). Elke Bookmark maakt zijn Name en de tekst die het omsluit zichtbaar via Text.
Bladwijzers invoegen met DocumentBuilder
DocumentBuilder is de gebruikelijke manier om bladwijzers te maken tijdens het schrijven van een document. Roep StartBookmark(bookmarkName) aan voordat je inhoud invoegt, en daarna EndBookmark(bookmarkName) — de builder wikkelt alles wat daartussen wordt geschreven als het bladwijzerbereik. Voor een bereik van tabelkolommen, gebruik in plaats daarvan StartColumnBookmark(bookmarkName) en EndColumnBookmark(bookmarkName); de resulterende Bookmark.IsColumn is true, met FirstColumn en LastColumn die het gemarkeerde kolombereik identificeren. Om de builder te verplaatsen naar een bestaande bladwijzer voor verdere bewerkingen, roep MoveToBookmark(bookmarkName) aan, of de overload MoveToBookmark(bookmarkName, isStart, isAfter) om te bepalen aan welk uiteinde van de bladwijzer de cursor wordt geplaatst.
Bladwijzerstructuur in de Documentboom
Een bladwijzer wordt in de documentboom weergegeven als een paar knooppunten: BookmarkStart en BookmarkEnd, beide geconstrueerd als BookmarkStart(doc, name) / BookmarkEnd(doc, name). Elk koppelt terug naar zijn logische Bookmark object — BookmarkStart.Bookmark retourneert het, en Bookmark onthult op zijn beurt de BookmarkStart en BookmarkEnd eigenschappen die naar zijn twee grensknooppunten wijzen. Omdat BookmarkStart en BookmarkEnd gewone knooppunten zijn, ondersteunen ze de standaard knooppuntbewerkingen zoals GetText(), Clone(isCloneChildren) en GetAncestor(ancestorType), en kunnen ze worden gevonden door de boom te doorlopen zoals elk ander knooppunttype.
Bladwijzers verwijderen
Roep Bookmark.Remove() aan om de begin- en eindmarkeringen van één bladwijzer te verwijderen — dit verwijdert de bladwijzer zelf, niet de documentinhoud die ze omsluit. Om bladwijzers in bulk te verwijderen, gebruik BookmarkCollection.Remove(bookmark), Remove(bookmarkName), RemoveAt(index) of Clear() om alle bladwijzers in het bereik in één keer te verwijderen.
Tips en best practices
- Geef de voorkeur aan de
BookmarkCollectionindexer (bookmarks["BookmarkName"]) boven handmatige iteratie wanneer je de naam van de doelbladwijzer al kent. - Koppel altijd een
StartBookmark(name)-aanroep aan een bijpassendeEndBookmark(name)-aanroep met dezelfde naam — een niet-overeenkomend paar laat de bladwijzer onvolledig. - Controleer
Bookmark.IsColumnvoordat jeFirstColumnofLastColumnleest — die twee eigenschappen zijn alleen zinvol voor kolombladwijzers die zijn aangemaakt metStartColumnBookmark/EndColumnBookmark. Bookmark.Remove()verwijdert alleen de bladwijzermarkeringen, niet de ingesloten tekst, dus het verwijderen van een bladwijzer verwijdert nooit documentinhoud.- Gebruik
DocumentBuilder.MoveToBookmark()om de cursor van de builder naar een bekende locatie te verplaatsen in plaats van handmatig de knoopboom te doorzoeken naar eenBookmarkStart.
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
BookmarkCollection indexer retourneert null voor een naamopzoeking | De bladwijzernaam bestaat niet in het bereik dat wordt doorzocht | Lijst eerst de namen via GetEnumerator() om de exacte, hoofdlettergevoelige naam te bevestigen |
| Ingevoegde inhoud is niet gebladwijzerd | EndBookmark() werd nooit aangeroepen, of werd aangeroepen met een andere naam dan StartBookmark() | Match altijd StartBookmark(name) met EndBookmark(name) met dezelfde naamstring |
| Kolom bookmark-gegevens lijken onjuist | FirstColumn/LastColumn gelezen zonder eerst IsColumn te controleren | Interpreteer FirstColumn/LastColumn alleen wanneer Bookmark.IsColumn true is |
FAQ
Hoe haal ik alle bladwijzers in een document op?
Lees doc.Range.Bookmarks, die een BookmarkCollection retourneert die het hele document bestrijkt.
Kan ik een deel van een tabel bladwijzeren per kolom in plaats van per tekstbereik?
Ja — gebruik DocumentBuilder.StartColumnBookmark(bookmarkName) en EndColumnBookmark(bookmarkName). De resulterende bladwijzer heeft IsColumn ingesteld op true, met FirstColumn/LastColumn die het kolombereik markeren.
Verwijdert het verwijderen van een bladwijzer de tekst die het markeert?
Nr. Bookmark.Remove() verwijdert alleen de BookmarkStart/BookmarkEnd markerknopen; de documentinhoud daartussen blijft onaangeroerd.
Hoe verplaats ik de DocumentBuilder cursor naar een bestaande bladwijzer?
Roep DocumentBuilder.MoveToBookmark(bookmarkName) aan, of MoveToBookmark(bookmarkName, isStart, isAfter) om te bepalen of de cursor zich aan het begin of einde van de bladwijzer bevindt.
Wat is het verschil tussen de BookmarkCollection.Remove() overloads?
Remove(bookmark) neemt een Bookmark object, Remove(bookmarkName) neemt de naam, en RemoveAt(index) neemt de positie in de collectie — alle drie verwijderen één bladwijzer, terwijl Clear() elke bladwijzer in de collectie verwijdert.
API Reference Samenvatting
| Klasse / Methode | Beschrijving |
|---|---|
Bookmark | Stelt één bladwijzer voor; maakt Name, Text, IsColumn, FirstColumn, LastColumn en Remove() beschikbaar |
BookmarkCollection | Bladwijzers in een Range; indexeer op naam, Remove(), RemoveAt(), Clear(), Count |
BookmarkStart / BookmarkEnd | Documentknooppunten die de grenzen van een bladwijzer markeren; link terug via Bookmark.BookmarkStart/Bookmark.BookmarkEnd |
Range.Bookmarks | Retourneert de BookmarkCollection voor een gegeven bereik, inclusief doc.Range.Bookmarks voor het hele document |
DocumentBuilder.StartBookmark() / EndBookmark() | Omsluit ingevoegde inhoud in een benoemde bladwijzer |
DocumentBuilder.StartColumnBookmark() / EndColumnBookmark() | Markeer een bereik van tabelkolommen als bladwijzer |
DocumentBuilder.MoveToBookmark() | Plaatst de cursor van de builder op een bestaande bladwijzer |