Wprowadzenie

Aspose.Words FOSS for .NET zawiera ten sam model obiektowy formatowania tekstu co komercyjny silnik Aspose.Words: Font dla atrybutów na poziomie run, ParagraphFormat dla atrybutów na poziomie akapitu, ListFormat dla list numerowanych i punktowanych, FrameFormat dla pozycjonowanych ramek tekstowych oraz Range.Replace dla znajdź-i-zamień. Ten przewodnik koncentruje się konkretnie na tej warstwie — formatowaniu i przepisaniu tekstu, który już istnieje w dokumencie — zamiast na budowaniu struktury dokumentu od podstaw (zobacz post wprowadzający po przegląd wydania).

Biblioteka jest licencjonowana na licencji MIT, nie ma zależności natywnych i jest skierowana do .NET Standard 2.0, więc działa na .NET Framework 4.6.2+ oraz .NET 6, 8 i 10. Zainstaluj ją za pomocą NuGet lub zbuduj ze źródła (zobacz Szybki start poniżej). Wszystko opisane tutaj działa z .docx, .docm, .dotx, .dotm oraz plikami Flat OPC ładowanymi przy użyciu new Document(fileName), lub z dokumentami tworzonymi w pamięci przy użyciu DocumentBuilder.

Ponieważ Aspose.Words FOSS dla .NET jest autentyczną bazą kodu Aspose.Words zredukowaną do darmowego rdzenia, a nie przepisaniem, model obiektowy Font, ParagraphFormat, ListFormat i FrameFormat przenosi się bezpośrednio do komercyjnego Aspose.Words dla .NET, jeśli projekt później potrzebuje układu strony, renderowania lub dodatkowych konwerterów formatów, które ta edycja wyklucza.


Kluczowe funkcje

Formatowanie na poziomie run z czcionką

Każdy Run udostępnia właściwość Font, a DocumentBuilder.Font ustawia czcionkę, która zostanie zastosowana do kolejnego zapisanego tekstu. Oprócz oczywistych Bold, Italic i Underline (enum Underline z wartościami takimi jak Single, Double, Dotted, Dash, Wavy oraz ich warianty *Heavy), Font obejmuje StrikeThrough, DoubleStrikeThrough, Superscript, Subscript, SmallCaps, AllCaps, Hidden, Shadow, Outline, Emboss, Engrave, Color, HighlightColor, Spacing, Position, Kerning, Scaling i EmphasisMark. Font.Style, Font.StyleName i Font.StyleIdentifier łączą run z powrotem do stylu znakowego, a Font.ClearFormatting() resetuje bezpośrednie formatowanie run do domyślnych wartości stylu. DocumentBuilder udostępnia także Bold, Italic i Underline bezpośrednio jako skróty, plus PushFont() i PopFont() do zapisania i przywrócenia bieżącego stanu czcionki buildera wokół tymczasowej zmiany formatowania.

Formatowanie akapitu z ParagraphFormat

ParagraphFormat (dostępny przez Paragraph.ParagraphFormat lub DocumentBuilder.ParagraphFormat) steruje wyrównaniem za pomocą wyliczenia ParagraphAlignment (Left, Center, Right, Justify, Distributed, plus warianty arabskiego kashidy i tajskiego rozmieszczenia), wcięciami przez LeftIndent, RightIndent i FirstLineIndent (z odpowiednikami CharacterUnit* dla układów wschodnioazjatyckich), oraz odstępami przez SpaceBefore, SpaceAfter oraz LineSpacingRule/LineSpacing. Zachowanie paginacji kontrolowane jest przez KeepTogether, KeepWithNext, PageBreakBefore i WidowControl, a Bidi oznacza akapit jako right-to-left. Niestandardowe tabulatory znajdują się w ParagraphFormat.TabStops, TabStopCollection TabStop obiektów, każdy z Position, TabAlignment (Left, Center, Right, Decimal, Bar) i TabLeader (None, Dots, Dashes, Line, Heavy, MiddleDot). Podobnie jak w przypadku Font, ParagraphFormat.Style i StyleName łączą akapit z nazwanym Style, a ClearFormatting() usuwa bezpośrednie formatowanie akapitu.

Listy z ListFormat

ListFormat (na Paragraph.ListFormat lub DocumentBuilder.ListFormat) nakłada formatowanie listy na akapit: ApplyBulletDefault() i ApplyNumberDefault() przekształcają go w domyślną listę punktowaną lub numerowaną, RemoveNumbers() usuwa formatowanie listy całkowicie, a ListIndent()/ListOutdent() przenoszą go między poziomami listy. ListFormat.List zwraca podstawową definicję List, a ListFormat.ListLevel zwraca ListLevel obowiązujący dla tego akapitu, który zawiera ustawienia per-poziomowe takie jak NumberStyle, NumberFormat, Alignment (ListLevelAlignment Left, Center lub Right), StartAt, RestartAfterLevel, specyficzny dla poziomu Font, oraz TrailingCharacter (ListTrailingCharacter Tab, Space lub Nothing) kontrolujący odstęp między etykietą listy a tekstem akapitu. Nowe definicje list pochodzą z ListCollection.Add(listTemplate) przy użyciu jednego z wbudowanych presetów ListTemplate (BulletDefault, NumberArabicDot, NumberUppercaseRomanDot i podobnych), lub AddSingleLevelList dla listy jednopopoziomowej; listy w dokumencie są wyliczane przez Document.Lists.

Ramki tekstowe z FrameFormat

Paragraph.FrameFormat jest obiektem raportującym tylko do odczytu: każda właściwość w nim odzwierciedla aktualny stan ramki zamiast pozwalać na bezpośrednie ustawienie. IsFrame raportuje, czy akapit jest obecnie ramką; Width, Height, i HeightRule zgłoś jego rozmiar; HorizontalPosition i VerticalPosition, razem z RelativeHorizontalPosition i RelativeVerticalPosition, zgłoś, gdzie jest zakotwiony względem strony, marginesu, kolumny lub akapitu; oraz HorizontalDistanceFromText/VerticalDistanceFromText zgłoś odstęp między ramką a otaczającym tekstem głównym. HorizontalAlignment i VerticalAlignment zgłoś, jak treść jest wyrównana w ramce.

Znajdź i zamień z zakresem i IReplacingCallback

Range.Replace — dostępny w Document.Range dla przetwarzania całego dokumentu lub w Range dowolnego węzła — posiada przeciążenia dla zwykłej pary wzorzec/zastąpienie oraz dla pary wzorzec/zastąpienie połączonej z instancją FindReplaceOptions, wspierając dopasowanie oparte na wyrażeniach regularnych. FindReplaceOptions.MatchCase i FindWholeWordsOnly zawężają, co jest uznawane za dopasowanie; Direction (FindReplaceDirection.Forward lub Backward) ustawia kolejność skanowania; ApplyFont i ApplyParagraphFormat pozwalają, aby etap zamiany przeniósł formatowanie na tekst zastępczy; a zestaw flag Ignore* (IgnoreDeleted, IgnoreInserted, IgnoreFields, IgnoreFieldCodes, IgnoreFootnotes, IgnoreStructuredDocumentTags, IgnoreShapes, IgnoreOfficeMath) wyklucza określone kategorie treści z dopasowania. Dla logiki zamiany, której nie da się wyrazić stałym łańcuchem, zaimplementuj IReplacingCallback.Replacing(args) i ustaw go jako FindReplaceOptions.ReplacingCallback (lub przekaż go do jednego z konstruktorów FindReplaceOptions akceptujących bezpośrednio callback); parametr args jest ReplacingArgs udostępniającym Match, MatchNode, MatchOffset oraz ustawialny łańcuch Replacement, aby callback mógł obliczyć wartość dla każdego dopasowania. Powiązane wyliczenie ReplaceAction (Replace, Skip, Stop) opisuje możliwe wyniki pojedynczego dopasowania podczas operacji.


Szybki start

Aspose.Words FOSS dla .NET jest dostępny poprzez NuGet:

dotnet add package Aspose.Words.FOSS

Aby zamiast tego zbudować ze źródeł:

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

Następnie dodaj odwołanie do projektu Aspose.Words.csproj. Aby formatować tekst w trakcie jego tworzenia, ustaw właściwości DocumentBuilder.Font (Bold, Italic, Underline), właściwości DocumentBuilder.ParagraphFormat (Alignment, wcięcia, odstępy) oraz DocumentBuilder.ListFormat (ApplyBulletDefault(), ApplyNumberDefault()) przed wywołaniem Write(), Writeln() lub InsertParagraph() — builder stosuje swój bieżący stan formatowania do wszystkiego zapisanego, dopóki nie zmienisz go ponownie lub nie otoczysz tymczasowej zmiany w PushFont()/PopFont(). Aby ponownie sformatować lub przepisać tekst już znajdujący się w dokumencie, otwórz go za pomocą new Document(fileName) i wywołaj Range.Replace() na doc.Range — zarówno w wersji z prostym wzorcem/zastąpieniem, jak i w wersji przyjmującej FindReplaceOptions z MatchCase, FindWholeWordsOnly lub własnym IReplacingCallback — następnie Save() wynik.


Obsługiwane formaty

FormatRozszerzenieOdczytZapis
DOCX.docx
DOCM.docm
DOTX.dotx
DOTM.dotm
Flat OPC (wszystkie warianty)(różne)
Markdown.md
Text.txt

Powyższe klasy formatowania działają tak samo, niezależnie od tego, z którego z tych formatów dokument został wczytany lub zapisany. Ta edycja nie obsługuje DOC, RTF, ODT, HTML, EPUB, MHTML, MOBI, AZW3 ani WordML do odczytu lub zapisu, oraz nie obsługuje PDF, XPS ani eksportu obrazów, ponieważ układ strony i renderowanie wykraczają poza jej zakres.


Open Source & Licencjonowanie

Aspose.Words FOSS dla .NET jest udostępnione na licencji MIT, bezpłatne do użytku komercyjnego i prywatnego, bez opłat licencyjnych ani ograniczeń w dystrybucji. Pełne źródło, w tym implementacje Font, ParagraphFormat, ListFormat, FrameFormat i Range opisane powyżej, jest dostępne na GitHub w Aspose.Words FOSS dla .NET repozytorium.


Rozpoczęcie

Powiązane zasoby