Hoe te werken met tekst in .NET
Deze gids laat zien hoe je met tekst werkt in Aspose.Words FOSS voor .NET: de lettertype van een run opmaken, een alinea opmaken, tekst zoeken en vervangen met Range, een commentaar toevoegen, en een alinea omzetten in een lijstitem. Aspose.Words FOSS voor .NET is beschikbaar via NuGet of door te bouwen vanaf de bron.
Stapsgewijze gids
Stap 1: Verkrijg de bibliotheek
Clone de repository en bouw Aspose.Words.sln in Release-configuratie, voeg dan een projectreferentie toe aan Aspose.Words.csproj vanuit je eigen .NET-project, zoals beschreven in de Installatiehandleiding. Voeg toe using Aspose.Words; aan het begin van elk bestand dat met tekst werkt.
Stap 2: Het lettertype van een run opmaken
Een Run is een tekstspan die één set opmaak deelt; de Text-eigenschap bevat de platte-tekstinhoud en de Font-eigenschap (een Font-object) bevat opmaak op tekenniveau — Name, Size, Bold, Italic, Underline, Color, HighlightColor, Subscript/Superscript en StrikeThrough onder andere. Font.ClearFormatting() zet een run terug naar de standaardwaarden. De runs van een alinea zijn beschikbaar via de Runs-eigenschap, een RunCollection. Het instellen van lettertype-eigenschappen op DocumentBuilder.Font vóór het schrijven van nieuwe tekst is meestal eenvoudiger dan individuele Run-objecten achteraf op te maken.
Stap 3: Een alinea opmaken
Paragraph.ParagraphFormat (een ParagraphFormat object) regelt de lay-out op alinea-niveau: Alignment, inspringingen (LeftIndent, RightIndent, FirstLineIndent), spatiëring (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 — handig nadat een reeks programmatische bewerkingen een alinea heeft achtergelaten met meer runs dan nodig.
Stap 4: Tekst zoeken en vervangen met bereik
Elke node die inhoud bevat — een Document, Section, Paragraph of Run — maakt een Range bloot. Range.Text geeft de platte tekst van alles binnen dat bereik terug, en Range.Replace(pattern, replacement) voert een zoeken-en-vervangen uit die alleen op dat bereik is beperkt: roep het aan op de Range van een Paragraph om tekst in slechts één alinea te wijzigen, of op Document.Range om het hele document te doorzoeken. Range.Delete() verwijdert de inhoud van het bereik volledig.
Stap 5: Een opmerking toevoegen
Construeer een Comment met new Comment(doc, author, initial, dateTime), stel de tekst in met SetText(text), en voeg deze vervolgens in de boom in zoals elke andere node. Comment.AddReply(author, initial, dateTime, text) voegt een threaded antwoord toe — zelf een Comment — en RemoveReply(reply) / RemoveAllReplies() halen antwoorden weer weg. De opmerkingen van een document worden verzameld in een CommentCollection.
Stap 6: Een alinea omzetten in een lijstitem
Paragraph.ListFormat (een ListFormat object) geeft weer en regelt of een alinea deelneemt aan een lijst: IsListItem en ListLevelNumber geven de huidige staat weer. ApplyBulletDefault() zet de alinea om in een standaard opsomming met opsommingsteken en ApplyNumberDefault() in een standaard genummerd item; ListIndent() / ListOutdent() veranderen het inspringlevel, en RemoveNumbers() zet het terug naar een gewone alinea.
Veelvoorkomende problemen en oplossingen
Formatteren één Run’s lettertype verandert de aangrenzende tekst niet. Aangrenzende tekst is anders Run met zijn eigen Font instantie. Zoek en formatteer elke getroffen Run, of stel opmaak in op DocumentBuilder.Font voordat je nieuwe tekst schrijft.
Range.Replace wijzigt tekst buiten het beoogde gebied. Replace werd aangeroepen op Document.Range in plaats van het bereik van een smallere node. Roep het aan op de specifieke Paragraph or Section wiens tekst moet worden gewijzigd.
Een alinea ziet eruit als een lijstitem met opsommingstekens, maar IsListItem is false. Het opsommingsteken is getypte tekst, geen echte lijstopmaak. Pas het toe met ListFormat.ApplyBulletDefault() in plaats daarvan.
Het document eindigt met veel meer Run knooppunten dan verwacht. Herhaalde kleine programmatische bewerkingen splitsen runs zonder ze weer samen te voegen. Roep Paragraph.JoinRunsWithSameFormatting() aan na een reeks bewerkingen.
Veelgestelde vragen
Wat is het verschil tussen Run en Paragraph?
Een Run is een tekstgedeelte dat één set tekenopmaak deelt (Font). Een Paragraph is het samengestelde knooppunt dat een of meer runs bevat plus alinea-opmaak (ParagraphFormat).
Hoe lees ik alle tekst in een document of een enkele sectie?
Lees de Text eigenschap van die knoop’s Range — document.Range.Text of section.Range.Text.
Hoe vervang ik tekst binnen slechts één alinea, niet het hele document?
Roep Replace(pattern, replacement) aan op die Paragraph’s Range, niet op Document.Range.
Hoe beantwoord ik een bestaande reactie?
Roep Comment.AddReply(author, initial, dateTime, text) aan op de oorspronkelijke Comment instantie.
Hoe zet ik een genummerd lijstitem terug om in een gewone alinea?
Roep RemoveNumbers() aan op de ListFormat van die alinea.