Bookmarks

Bookmarks

Dieser Leitfaden zeigt, wie man Lesezeichen in einem Word-Dokument mit Aspose.Words FOSS für .NET liest, einfügt, zu ihnen navigiert und sie entfernt. Ein Lesezeichen markiert einen benannten Ort oder einen Inhaltsbereich, sodass er nachgeschlagen, zu ihm navigiert oder als Einfügepunkt für weitere Änderungen verwendet werden kann. Aspose.Words FOSS für .NET stellt Lesezeichen mit den Klassen Bookmark, BookmarkStart und BookmarkEnd dar und bietet DocumentBuilder Methoden zum Erstellen und Auffinden dieser beim Verfassen oder Bearbeiten eines Dokuments.


Lesezeichen lesen

Jedes Range stellt die darin enthaltenen Lesezeichen über die Bookmarks-Eigenschaft bereit, die ein BookmarkCollection zurückgibt. Da Document selbst ein Range bereitstellt, gibt doc.Range.Bookmarks jedes Lesezeichen im Dokument zurück. Suchen Sie ein bestimmtes Lesezeichen nach Namen mit dem BookmarkCollection-Indexer — bookmarks[bookmarkName] — prüfen Sie, wie viele existieren mit Count, oder durchlaufen Sie die gesamte Sammlung mit GetEnumerator(). Jeder Bookmark stellt sein Name und den von ihm umschlossenen Text über Text bereit.


Einfügen von Lesezeichen mit DocumentBuilder

DocumentBuilder ist die übliche Methode, um beim Schreiben eines Dokuments Lesezeichen zu erstellen. Rufen Sie StartBookmark(bookmarkName) auf, bevor Sie Inhalt einfügen, und danach EndBookmark(bookmarkName) — der Builder umschließt alles dazwischen als den markierten Bereich. Für einen Bereich von Tabellenspalten verwenden Sie stattdessen StartColumnBookmark(bookmarkName) und EndColumnBookmark(bookmarkName); das resultierende Bookmark.IsColumn ist true, wobei FirstColumn und LastColumn den markierten Spaltenbereich identifizieren. Um den Builder an einem vorhandenen Lesezeichen für weitere Änderungen neu zu positionieren, rufen Sie MoveToBookmark(bookmarkName) auf, oder die Überladung MoveToBookmark(bookmarkName, isStart, isAfter), um zu steuern, an welchem Ende des Lesezeichens der Cursor landet.


Lesezeichenstruktur im Dokumentenbaum

Ein Lesezeichen wird im Dokumentbaum als ein Paar von Knoten dargestellt: BookmarkStart und BookmarkEnd, beide konstruiert als BookmarkStart(doc, name) / BookmarkEnd(doc, name). Jeder verweist zurück zu seinem logischen Bookmark-Objekt — BookmarkStart.Bookmark gibt es zurück, und Bookmark stellt wiederum die Eigenschaften BookmarkStart und BookmarkEnd bereit, die auf seine beiden Grenzknoten zeigen. Da BookmarkStart und BookmarkEnd gewöhnliche Knoten sind, unterstützen sie die Standard-Knoten-Operationen wie GetText(), Clone(isCloneChildren) und GetAncestor(ancestorType) und können durch Durchlaufen des Baumes wie jeder andere Knotentyp gefunden werden.


Lesezeichen entfernen

Rufen Sie Bookmark.Remove() auf, um die Start- und End-Markierungen eines einzelnen Lesezeichens zu löschen — damit wird das Lesezeichen selbst entfernt, nicht der Dokumentinhalt, den es umschließt. Um Lesezeichen massenhaft zu entfernen, verwenden Sie BookmarkCollection.Remove(bookmark), Remove(bookmarkName), RemoveAt(index) oder Clear(), um jedes Lesezeichen im Bereich auf einmal zu entfernen.


Tipps und bewährte Vorgehensweisen

  • Bevorzugen Sie den BookmarkCollection-Indexer (bookmarks["BookmarkName"]) gegenüber manueller Iteration, wenn Sie den Namen des Ziel-Lesezeichens bereits kennen.
  • Koppeln Sie immer einen StartBookmark(name)-Aufruf mit einem passenden EndBookmark(name)-Aufruf unter Verwendung desselben Namens — ein nicht zugepaartes Paar lässt das Lesezeichen unvollständig.
  • Prüfen Sie Bookmark.IsColumn, bevor Sie FirstColumn oder LastColumn lesen — diese beiden Eigenschaften sind nur für Spalten-Lesezeichen sinnvoll, die mit StartColumnBookmark/EndColumnBookmark erstellt wurden.
  • Bookmark.Remove() löscht nur die Lesezeichen-Markierungen, nicht den eingeschlossenen Text, sodass das Entfernen eines Lesezeichens niemals Dokumentinhalt löscht.
  • Verwenden Sie DocumentBuilder.MoveToBookmark(), um den Cursor des Builders zu einem bekannten Ort zu springen, anstatt den Knotenbaum manuell nach einem BookmarkStart zu durchsuchen.

Häufige Probleme

ProblemUrsacheLösung
BookmarkCollection indexer gibt null für eine Namenssuche zurückDer Lesezeichenname existiert nicht im durchsuchten BereichListen Sie zuerst die Namen über GetEnumerator() auf, um den genauen, groß-/kleinschreibungssensitiven Namen zu bestätigen
Der eingefügte Inhalt ist nicht als Lesezeichen markiertEndBookmark() wurde nie aufgerufen, oder wurde mit einem anderen Namen als StartBookmark() aufgerufenGleiche immer StartBookmark(name) mit EndBookmark(name) anhand der identischen Namenszeichenkette ab
Spalten-Lesezeichendaten scheinen falsch zu seinFirstColumn/LastColumn wird gelesen, ohne vorher IsColumn zu prüfenInterpretiere FirstColumn/LastColumn nur, wenn Bookmark.IsColumn true ist

FAQ

Wie erhalte ich alle Lesezeichen in einem Dokument?

Lesen Sie doc.Range.Bookmarks, das ein BookmarkCollection zurückgibt, das das gesamte Dokument abdeckt.

Kann ich einen Teil einer Tabelle nach Spalte statt nach Textbereich als Lesezeichen setzen?

Ja — verwenden Sie DocumentBuilder.StartColumnBookmark(bookmarkName) und EndColumnBookmark(bookmarkName). Das resultierende Lesezeichen hat IsColumn auf true gesetzt, wobei FirstColumn/LastColumn den Spaltenbereich markieren.

Löscht das Entfernen eines Lesezeichens den Text, den es markiert?

Nr. Bookmark.Remove() entfernt nur die BookmarkStart/BookmarkEnd Marker-Knoten; der Dokumentinhalt dazwischen bleibt unverändert.

Wie verschiebe ich den DocumentBuilder-Cursor zu einem vorhandenen Lesezeichen?

Rufen Sie DocumentBuilder.MoveToBookmark(bookmarkName) oder MoveToBookmark(bookmarkName, isStart, isAfter) auf, um zu steuern, ob der Cursor am Anfang oder Ende des Lesezeichens platziert wird.

Was ist der Unterschied zwischen den BookmarkCollection.Remove()-Überladungen?

Remove(bookmark) nimmt ein Bookmark-Objekt, Remove(bookmarkName) nimmt dessen Namen und RemoveAt(index) nimmt dessen Position in der Sammlung – alle drei entfernen ein einzelnes Lesezeichen, während Clear() jedes Lesezeichen in der Sammlung entfernt.


API Reference Zusammenfassung

Klasse / MethodeBeschreibung
BookmarkStellt ein einzelnes Lesezeichen dar; gibt Name, Text, IsColumn, FirstColumn, LastColumn und Remove() frei
BookmarkCollectionLesezeichen in einem Range; Indexierung nach Name, Remove(), RemoveAt(), Clear(), Count
BookmarkStart / BookmarkEndDokumentknoten, die die Grenzen eines Lesezeichens markieren; zurückverlinken über Bookmark.BookmarkStart/Bookmark.BookmarkEnd
Range.BookmarksGibt das BookmarkCollection für einen angegebenen Bereich zurück, einschließlich doc.Range.Bookmarks für das gesamte Dokument
DocumentBuilder.StartBookmark() / EndBookmark()Füge den eingefügten Inhalt in ein benanntes Lesezeichen ein
DocumentBuilder.StartColumnBookmark() / EndColumnBookmark()Markieren Sie einen Bereich von Tabellenspalten als Lesezeichen
DocumentBuilder.MoveToBookmark()Positioniert den Cursor des Builders an einem bestehenden Lesezeichen

Siehe auch

 Deutsch