Introduktion

Aspose.Words FOSS för .NET inkluderar samma objektmodell för textformatering som den kommersiella Aspose.Words-motorn: Font för körnivå-attribut, ParagraphFormat för stycketnivå-attribut, ListFormat för numrerade och punktlistor, FrameFormat för placerade textramar och Range.Replace för sök-och-ersätt. Denna guide fokuserar specifikt på det lagret — formatering och omskrivning av text som redan finns i ett dokument — snarare än på att bygga ett dokuments struktur från grunden (se introduktions-inlägget för en översikt av releasen).

Biblioteket är MIT-licensierat utan inhemska beroenden och riktar sig mot .NET Standard 2.0, så det körs på .NET Framework 4.6.2+ och .NET 6, 8 och 10. Installera det via NuGet, eller bygg det från källkod (se Snabbstart nedan). Allt som beskrivs här fungerar mot .docx, .docm, .dotx, .dotm och Flat OPC-filer laddade med new Document(fileName), eller mot dokument som byggts i minnet med DocumentBuilder.

Eftersom Aspose.Words FOSS för .NET är den äkta Aspose.Words-kodbasen reducerad till en fri kärna snarare än en omskrivning, överförs objektmodellen för Font, ParagraphFormat, ListFormat och FrameFormat direkt till den kommersiella Aspose.Words för .NET om ett projekt senare behöver sidlayout, rendering eller de ytterligare formatkonverterarna som denna utgåva exkluderar.


Viktiga funktioner

Körnivåformatering med teckensnitt

Varje Run exponerar en Font-egenskap, och DocumentBuilder.Font anger teckensnittet som kommer att tillämpas på text som skrivs härnäst. Förutom de uppenbara Bold, Italic och Underline (en Underline-enum med värden inklusive Single, Double, Dotted, Dash, Wavy och deras *Heavy-varianter) täcker Font StrikeThrough, DoubleStrikeThrough, Superscript, Subscript, SmallCaps, AllCaps, Hidden, Shadow, Outline, Emboss, Engrave, Color, HighlightColor, Spacing, Position, Kerning, Scaling och EmphasisMark. Font.Style, Font.StyleName och Font.StyleIdentifier knyter ett kör tillbaka till en teckenstil, och Font.ClearFormatting() återställer direkt formatering på ett kör till dess stilstandarder. DocumentBuilder exponerar också Bold, Italic och Underline direkt som genvägar, samt PushFont() och PopFont() för att spara och återställa byggarens aktuella teckensnittstillstånd kring en tillfällig formateringsändring.

Styckeformatering med ParagraphFormat

ParagraphFormat (tillgänglig via Paragraph.ParagraphFormat eller DocumentBuilder.ParagraphFormat) styr justering via ParagraphAlignment-enumerationen (Left, Center, Right, Justify, Distributed, samt arabiska kashida- och thailändska distribuerade varianter), indrag via LeftIndent, RightIndent och FirstLineIndent (med CharacterUnit*-ekvivalenter för östasiatiska layouter), och avstånd via SpaceBefore, SpaceAfter och LineSpacingRule/LineSpacing. Sidnumreringsbeteende styrs av KeepTogether, KeepWithNext, PageBreakBefore och WidowControl, och Bidi markerar ett stycke som höger-till-vänster. Anpassade tabbstopp finns i ParagraphFormat.TabStops, en TabStopCollection av TabStop objekt, var och en med ett Position, ett TabAlignment (Left, Center, Right, Decimal, Bar) och ett TabLeader (None, Dots, Dashes, Line, Heavy, MiddleDot). På samma sätt som Font länkar ParagraphFormat.Style och StyleName stycket till ett namngivet Style, och ClearFormatting() rensar direkt styckeformatering.

Listor med ListFormat

ListFormat (på Paragraph.ListFormat eller DocumentBuilder.ListFormat) tillämpar listformatering på ett stycke: ApplyBulletDefault() och ApplyNumberDefault() byter det till en standard punktlista eller numrerad lista, RemoveNumbers() tar bort listformatering helt, och ListIndent()/ListOutdent() flyttar det mellan listnivåer. ListFormat.List returnerar den underliggande List-definitionen, och ListFormat.ListLevel returnerar den ListLevel som gäller för det stycket, vilken innehåller nivå-specifika inställningar såsom NumberStyle, NumberFormat, Alignment (en ListLevelAlignment av Left, Center eller Right), StartAt, RestartAfterLevel, en nivå-specifik Font, och TrailingCharacter (en ListTrailingCharacter av Tab, Space eller Nothing) som styr avståndet mellan listetiketten och stycketexten. Nya listdefinitioner kommer från ListCollection.Add(listTemplate) med hjälp av en av de inbyggda ListTemplate-förinställningarna (BulletDefault, NumberArabicDot, NumberUppercaseRomanDot och liknande), eller AddSingleLevelList för en enkelnivålista; ett dokuments listor räknas upp via Document.Lists.

Textramar med FrameFormat

Paragraph.FrameFormat är ett skrivskyddat rapporteringsobjekt: varje egenskap på det speglar styckets aktuell ramtillstånd snarare än att låta dig sätta det direkt. IsFrame rapporterar huruvida stycket för närvarande är en ram; Width, Height, och HeightRule rapporterar dess storlek; HorizontalPosition och VerticalPosition, tillsammans med RelativeHorizontalPosition och RelativeVerticalPosition, rapportera var den är förankrad i förhållande till sidan, marginalen, kolumnen eller stycket; och HorizontalDistanceFromText/VerticalDistanceFromText rapportera avståndet mellan ramen och den omgivande brödtexten. HorizontalAlignment och VerticalAlignment rapportera hur innehållet justeras inom ramen.

Sök och ersätt med Range och IReplacingCallback

Range.Replace — tillgänglig på Document.Range för en hel-dokument-genomgång, eller på Range för vilken nod som helst — har överlagringar för ett enkelt mönster/ersättnings-par samt för ett mönster/ersättnings-par kombinerat med en FindReplaceOptions-instans, vilket stödjer regex-baserad matchning. FindReplaceOptions.MatchCase och FindWholeWordsOnly begränsar vad som räknas som en matchning; Direction (FindReplaceDirection.Forward eller Backward) bestämmer skanningsordning; ApplyFont och ApplyParagraphFormat låter ett ersättningspass föra med sig formatering till ersättningstexten; och en uppsättning Ignore*-flaggor (IgnoreDeleted, IgnoreInserted, IgnoreFields, IgnoreFieldCodes, IgnoreFootnotes, IgnoreStructuredDocumentTags, IgnoreShapes, IgnoreOfficeMath) utesluter specifika innehållskategorier från matchen. För ersättningslogik som en fast sträng inte kan uttrycka, implementera IReplacingCallback.Replacing(args) och sätt den som FindReplaceOptions.ReplacingCallback (eller skicka den till en av FindReplaceOptions-konstruktörerna som accepterar en callback direkt); args-parametern är en ReplacingArgs som exponerar Match, MatchNode, MatchOffset och en inställningsbar Replacement-sträng så att callbacken kan beräkna ett värde per matchning. En relaterad ReplaceAction-enumeration (Replace, Skip, Stop) beskriver möjliga utfall för en enskild matchning under operationen.


Snabbstart

Aspose.Words FOSS för .NET är tillgänglig via NuGet:

dotnet add package Aspose.Words.FOSS

För att bygga från källkod istället:

git clone https://github.com/aspose-words-foss/Aspose.Words-FOSS-for-.NET.git
cd Aspose.Words-FOSS-for-.NET
dotnet build Aspose.Words.sln -c Release

Sedan lägg till en projektreferens till Aspose.Words.csproj. För att formatera text medan du skriver den, sätt DocumentBuilder.Font egenskaper (Bold, Italic, Underline), DocumentBuilder.ParagraphFormat egenskaper (Alignment, indrag, avstånd), och DocumentBuilder.ListFormat (ApplyBulletDefault(), ApplyNumberDefault()) innan du anropar Write(), Writeln() eller InsertParagraph() — byggaren applicerar sitt aktuella formateringsläge på allt som skrivs tills du ändrar det igen, eller omsluter en tillfällig förändring i PushFont()/PopFont(). För att omformatera eller skriva om text som redan finns i ett dokument, öppna det med new Document(fileName) och anropa Range.Replace()doc.Range — antingen den enkla mönster/ersättningsöverladdningen, eller den överladdning som tar en FindReplaceOptions med MatchCase, FindWholeWordsOnly, eller en anpassad IReplacingCallback — och Save() resultatet.


Stödda format

FormatFiländelseLäsSkriv
DOCX.docx
DOCM.docm
DOTX.dotx
DOTM.dotm
Flat OPC (alla varianter)(olika)
Markdown.md
Text.txt

Formateringsklasserna ovan fungerar på samma sätt oavsett vilket av dessa format ett dokument läses in från eller sparas till. Denna version stöder inte DOC, RTF, ODT, HTML, EPUB, MHTML, MOBI, AZW3 eller WordML för läsning eller skrivning, och stöder inte PDF, XPS eller bildexport, eftersom sidlayout och rendering ligger utanför dess omfång.


Öppen källkod & licensiering

Aspose.Words FOSS för .NET släpps under MIT license, fri för kommersiell och personlig användning utan royalties eller restriktioner för omdistribution. Den fullständiga källkoden, inklusive Font, ParagraphFormat, ListFormat, FrameFormat och Range implementationerna som beskrivits ovan, finns tillgänglig på GitHub i Aspose.Words FOSS för .NET-arkivet.


Kom igång

Relaterade resurser