Bookmarks

Bookmarks

Acest ghid arată cum să citești, să inserezi, să navighezi la și să elimini marcaje într-un document Word cu Aspose.Words FOSS pentru .NET. Un marcaj marchează o locație numită sau un interval de conținut astfel încât să poată fi căutat, navigat sau utilizat ca punct de inserare pentru editări ulterioare. Aspose.Words FOSS pentru .NET reprezintă marcajele cu clasele Bookmark, BookmarkStart și BookmarkEnd, și oferă metodele DocumentBuilder pentru crearea și localizarea lor în timpul redactării sau editării unui document.


Citirea marcajelor

Fiecare Range expune marcajele pe care le conține prin proprietatea Bookmarks, care returnează un BookmarkCollection. Deoarece Document însuși expune un Range, doc.Range.Bookmarks returnează toate marcajele din document. Caută un marcaj specific după nume cu indexatorul BookmarkCollection — bookmarks[bookmarkName] — verifică câte există cu Count, sau parcurge întreaga colecție cu GetEnumerator(). Fiecare Bookmark expune Name și textul pe care îl încapsulează prin Text.


Inserarea marcajelor cu DocumentBuilder

DocumentBuilder este metoda obișnuită de a crea marcaje în timpul redactării unui document. Apelează StartBookmark(bookmarkName) înainte de a insera conținut, apoi EndBookmark(bookmarkName) după acesta — constructorul învelește tot ce este scris între ele ca interval marcat. Pentru un interval de coloane de tabel, folosește StartColumnBookmark(bookmarkName) și EndColumnBookmark(bookmarkName) în schimb; Bookmark.IsColumn rezultat este true, cu FirstColumn și LastColumn care identifică intervalul de coloane marcat. Pentru a repoziționa constructorul la un marcaj existent pentru editări ulterioare, apelează MoveToBookmark(bookmarkName), sau suprasarcina MoveToBookmark(bookmarkName, isStart, isAfter) pentru a controla care capăt al marcajului este poziționat cursorul.


Structura marcajului în arborele documentului

Un marcaj este reprezentat în arborele documentului ca o pereche de noduri: BookmarkStart și BookmarkEnd, ambele construite ca BookmarkStart(doc, name) / BookmarkEnd(doc, name). Fiecare leagă înapoi la obiectul său logic Bookmark — BookmarkStart.Bookmark îl returnează, iar Bookmark la rândul său expune proprietățile BookmarkStart și BookmarkEnd care indică cele două noduri de frontieră. Deoarece BookmarkStart și BookmarkEnd sunt noduri obișnuite, ele suportă operațiile standard ale nodurilor, cum ar fi GetText(), Clone(isCloneChildren) și GetAncestor(ancestorType), și pot fi localizate prin parcurgerea arborelui ca orice alt tip de nod.


Ștergerea marcajelor

Apelă Bookmark.Remove() pentru a șterge markerii de început și sfârșit ai unui singur marcaj — aceasta elimină marcajul în sine, nu conținutul documentului pe care îl închide. Pentru a elimina marcajele în bloc, folosește BookmarkCollection.Remove(bookmark), Remove(bookmarkName), RemoveAt(index) sau Clear() pentru a elimina toate marcajele din interval simultan.


Sfaturi și bune practici

  • Preferă indexatorul BookmarkCollection (bookmarks["BookmarkName"]) în locul iterării manuale când știi deja numele marcajului țintă.
  • Întotdeauna asociază un apel StartBookmark(name) cu un apel EndBookmark(name) corespunzător folosind același nume — o pereche necorespunzătoare lasă marcajul incomplet.
  • Verifică Bookmark.IsColumn înainte de a citi FirstColumn sau LastColumn — aceste două proprietăți sunt semnificative doar pentru marcajele de coloană create cu StartColumnBookmark/EndColumnBookmark.
  • Bookmark.Remove() șterge doar markerii de marcaj, nu textul închis, astfel că eliminarea unui marcaj nu șterge niciodată conținutul documentului.
  • Folosește DocumentBuilder.MoveToBookmark() pentru a muta cursorul builder-ului la o locație cunoscută în loc să cauți manual în arborele de noduri un BookmarkStart.

Probleme comune

ProblemăCauzăRemediere
BookmarkCollection indexer returnează null pentru o căutare de numeNumele semnului de carte nu există în intervalul căutatListează mai întâi numele prin GetEnumerator() pentru a confirma numele exact, sensibil la majuscule
Conținutul inserat nu are semn de carteEndBookmark() nu a fost niciodată apelat, sau a fost apelat cu un nume diferit de StartBookmark()Potrivește întotdeauna StartBookmark(name) cu EndBookmark(name) utilizând șirul de nume identic
Datele de marcaj din coloană par incorecteFirstColumn/LastColumn citite fără a verifica mai întâi IsColumnInterpretează FirstColumn/LastColumn numai când Bookmark.IsColumn este true

FAQ

Cum pot obține toate semnele de carte dintr-un document?

Citește doc.Range.Bookmarks, care returnează un BookmarkCollection ce acoperă întregul document.

Pot să marchez cu semn de carte o parte a unui tabel pe coloană în loc de pe un interval de text?

Da — folosește DocumentBuilder.StartColumnBookmark(bookmarkName) și EndColumnBookmark(bookmarkName). Semnul de carte rezultat are IsColumn setat la true, cu FirstColumn/LastColumn care marchează intervalul de coloană.

Înlăturarea unui semn de carte șterge textul pe care îl marchează?

Nr. Bookmark.Remove() elimină doar nodurile marcator BookmarkStart/BookmarkEnd; conținutul documentului dintre ele rămâne neatins.

Cum pot muta cursorul DocumentBuilder la un semn de carte existent?

Apelați DocumentBuilder.MoveToBookmark(bookmarkName), sau MoveToBookmark(bookmarkName, isStart, isAfter) pentru a controla dacă cursorul se plasează la începutul sau la sfârșitul semnului de carte.

Care este diferența dintre suprasarcinile BookmarkCollection.Remove()?

Remove(bookmark) primește un obiect Bookmark, Remove(bookmarkName) primește numele său, iar RemoveAt(index) primește poziția acestuia în colecție — toate trei elimină un singur semn de carte, în timp ce Clear() elimină toate semnele de carte din colecție.


API Reference Rezumat

Clasă / MetodăDescriere:
BookmarkReprezintă un singur marcaj; expune Name, Text, IsColumn, FirstColumn, LastColumn și Remove()
BookmarkCollectionMarcaje într-un Range; indexate după nume, Remove(), RemoveAt(), Clear(), Count
BookmarkStart / BookmarkEndNoduri de document care marchează limitele unui marcaj; legătură înapoi prin Bookmark.BookmarkStart/Bookmark.BookmarkEnd
Range.BookmarksReturnează BookmarkCollection pentru o gamă dată, inclusiv doc.Range.Bookmarks pentru întregul document
DocumentBuilder.StartBookmark() / EndBookmark()Înfășoară conținutul inserat într-un marcaj numit
DocumentBuilder.StartColumnBookmark() / EndColumnBookmark()Marcați un interval de coloane de tabel ca marcaj
DocumentBuilder.MoveToBookmark()Plasează cursorul constructorului la un marcaj existent

Vezi și:

 Română