Werken met Tekst
Werken met tekst
Tekst in een Word-document is georganiseerd in Run-knooppunten (aaneengesloten tekens die dezelfde lettertype-opmaak delen) gegroepeerd binnen Paragraph-knooppunten. Aspose.Words FOSS voor .NET maakt beide direct toegankelijk, samen met Font voor teken-opmaak, ParagraphFormat voor alinea-opmaak, en Range voor het lezen of vervangen van tekst in elk deel van de boom. Deze gids behandelt runs en lettertypen, alinea-opmaak, tekst lezen en vervangen, opmerkingen, en alinea-niveau lijstopmaak.
Runs en tekenopmaak
Een Run vertegenwoordigt een tekstgedeelte dat één set opmaak deelt; de Text-eigenschap bevat de platte-tekstinhoud en de Font-eigenschap (een Font-object) bevat teken-niveau opmaak — Name, Size, Bold, Italic, Underline, Color, HighlightColor, Subscript/Superscript, StrikeThrough, en nog veel meer. Font.ClearFormatting() zet het lettertype van een run terug naar de standaardwaarden. De runs van een alinea zijn beschikbaar via de Runs-eigenschap, een RunCollection.
Alinea’s en alinea-opmaak
Paragraph is een samengesteld knooppunt dat de runs (en andere inline-inhoud) van één alinea bevat; de alinea’s van een document of body worden blootgesteld als een ParagraphCollection (Body.Paragraphs). Paragraph.ParagraphFormat (een ParagraphFormat-object) regelt de lay-out op alinea-niveau — Alignment, inspringingen (LeftIndent, RightIndent, FirstLineIndent), afstand (SpaceBefore, SpaceAfter, LineSpacing, LineSpacingRule), en paginering gedrag (KeepTogether, KeepWithNext, PageBreakBefore, WidowControl). ParagraphFormat.ClearFormatting() zet deze terug naar de standaardwaarden, en Paragraph.JoinRunsWithSameFormatting() voegt aangrenzende runs samen die identieke opmaak hebben.
Tekst lezen en vervangen met Range
Elke node die inhoud bevat — een Document, Section, Paragraph of Run — geeft een Range vrij. Range.Text retourneert de platte tekst van alles binnen dat bereik, en Range.Replace(pattern, replacement) voert een zoeken-en-vervangen uit die beperkt is tot dat bereik, zodat je bijvoorbeeld tekst in één alinea kunt vervangen zonder de rest van het document aan te raken. Range.Delete() verwijdert de inhoud van het bereik volledig.
Comments
Een Comment node verankert een opmerking op een locatie in de tekst; maak er een met new Comment(doc, author, initial, dateTime) en stel de hoofdtekst in met SetText(text), en voeg deze vervolgens in het document in zoals elke andere node. Comment.AddReply(author, initial, dateTime, text) voegt een thread-reactie toe, en RemoveReply(reply) / RemoveAllReplies() verwijderen ze. De opmerkingen van een document worden verzameld in een CommentCollection.
Lijstopmaak op alinea-niveau
Paragraph.ListFormat (een ListFormat object) rapporteert en regelt of een alinea deel uitmaakt van een lijst: IsListItem en ListLevelNumber geven de huidige staat weer, ApplyBulletDefault() en ApplyNumberDefault() veranderen een alinea in een standaard opsomming met opsommingstekens of een genummerd lijstitem, ListIndent() / ListOutdent() wijzigen het inspringlevel van de lijst, en RemoveNumbers() maakt er weer een gewone alinea van.
Tips en best practices
- Stel de lettertype-eigenschappen in op
DocumentBuilder.Fontvoordat je tekst schrijft met de builder, in plaats van eerst tekst te schrijven en daarna individueleRunobjecten te herformatteren. - Beperk
Range.Replacetot het kleinste bereik dat omvat wat je daadwerkelijk wilt wijzigen — roep het aan op eenParagraphofSection’s bereik in plaats van op het hele document wanneer de wijziging niet documentbreed moet gelden. - Roep
Paragraph.JoinRunsWithSameFormatting()aan na een reeks programmatische bewerkingen om een onnodig gefragmenteerde run-structuur te voorkomen. - Gebruik
ListFormat.ApplyBulletDefault()/ApplyNumberDefault()voor een snelle standaardlijst in plaats van lijstdefinities handmatig op te bouwen wanneer de ingebouwde standaarden voldoende zijn. - Lees de resultaten van
Comment.AddReplyalsComment-knooppunten zelf — reacties zijn volledige commentaarobjecten, geen platte tekenreeksen.
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
Het opmaken van een Run’s Font verandert de aangrenzende tekst niet visueel | Aangrenzende tekst bevindt zich in een andere Run met zijn eigen Font instantie | Zoek en formatteer elke getroffen Run, of stel de opmaak in via DocumentBuilder.Font vóór het schrijven |
Range.Replace wijzigt tekst buiten het beoogde gebied | Replace werd aangeroepen op Document.Range in plaats van op een smaller node-bereik | Roep Replace aan op de specifieke Paragraph, Section, of de Range van een andere node |
Een alinea lijkt op een lijstitem, maar IsListItem is onwaar | Het opsommingsteken/nummer is handmatige tekst, geen echte lijstopmaak | Pas echte lijstopmaak toe met ListFormat.ApplyBulletDefault() of ApplyNumberDefault() in plaats van getypte tekens |
Document heeft veel meer Run nodes dan verwacht | Herhaalde kleine bewerkingen splitsen runs zonder ze opnieuw samen te voegen | Roep Paragraph.JoinRunsWithSameFormatting() aan na batches met bewerkingen |
FAQ
Wat is het verschil tussen Run en Paragraph?
Een Run is een tekstsegment dat één set tekenopmaak (Font) deelt; een Paragraph is het samengestelde knooppunt dat één of meer runs (en andere inline-inhoud) bevat, plus alinea-opmaak (ParagraphFormat).
Hoe lees ik alle tekst in een document of sectie?
Lees de Text eigenschap van die node’s Range — bijvoorbeeld document.Range.Text of section.Range.Text.
Hoe vind en vervang ik tekst in slechts één alinea?
Roep Replace(pattern, replacement) aan op de Range van die Paragraph in plaats van op Document.Range.
Hoe voeg ik een commentaar toe aan een document?
Maak het aan met new Comment(doc, author, initial, dateTime), stel de tekst in met SetText(text), en voeg het toe aan de boom; beantwoord het met Comment.AddReply(author, initial, dateTime, text).
Hoe zet ik een alinea om in een opsomming met opsommingstekens?
Roep ApplyBulletDefault() aan op de ListFormat van die alinea; gebruik ApplyNumberDefault() voor een genummerde lijst in plaats daarvan.
API Reference Samenvatting
| Klasse/Methode | Beschrijving |
|---|---|
Run | Een stuk tekst dat één set tekenopmaak deelt. |
Font | Teken-niveau opmaak — naam, grootte, vet, cursief, kleur en meer. |
Paragraph | Samengestelde node die de runs en opmaak van één alinea bevat. |
ParagraphFormat | Alinea-niveau opmaak — uitlijning, inspringingen, regelafstand, paginering. |
ParagraphCollection | Getypte collectie van Paragraph knooppunten, bijv. Body.Paragraphs. |
Range | Een aaneengesloten gebied van het document; ondersteunt Text, Replace en Delete. |
Comment | Een threaded comment verankerd op een locatie in de tekst. |
CommentCollection | De collectie van opmerkingen van het document. |
ListFormat | Bepaalt of en hoe een alinea deelneemt aan een lijst. |