Úvod
Aspose.Words FOSS pro .NET zahrnuje stejný objektový model pro formátování textu jako komerční engine Aspose.Words: Font pro atributy úrovně běhu, ParagraphFormat pro atributy úrovně odstavce, ListFormat pro číslované a odrážkové seznamy, FrameFormat pro umístěné textové rámečky a Range.Replace pro najít-a-nahradit. Tento průvodce se zaměřuje konkrétně na tuto vrstvu — formátování a přepisování textu, který již v dokumentu existuje — místo vytváření struktury dokumentu od nuly (viz introduction post pro přehled vydání).
Knihovna je licencována pod MIT, nemá nativní závislosti a cílí na .NET Standard 2.0, takže běží na .NET Framework 4.6.2+ a .NET 6, 8 a 10. Nainstalujte ji přes NuGet nebo ji sestavte ze zdrojového kódu (viz níže Rychlý start). Vše, co je zde popsáno, funguje s .docx, .docm, .dotx, .dotm a soubory Flat OPC načtenými pomocí new Document(fileName), nebo s dokumenty vytvořenými v paměti pomocí DocumentBuilder.
Protože Aspose.Words FOSS pro .NET je pravá kódová základna Aspose.Words zredukovaná na volné jádro, nikoli přepsaná, objektový model Font, ParagraphFormat, ListFormat a FrameFormat přechází přímo do komerčního Aspose.Words pro .NET, pokud projekt později potřebuje rozvržení stránky, renderování nebo další konvertory formátů, které tato edice vylučuje.
Klíčové funkce
Formátování na úrovni běhu s fontem
Každý Run vystavuje vlastnost Font a DocumentBuilder.Font nastavuje font, který bude použit na následující text. Kromě zřejmých Bold, Italic a Underline (výčet Underline s hodnotami včetně Single, Double, Dotted, Dash, Wavy a jejich *Heavy variant) Font zahrnuje StrikeThrough, DoubleStrikeThrough, Superscript, Subscript, SmallCaps, AllCaps, Hidden, Shadow, Outline, Emboss, Engrave, Color, HighlightColor, Spacing, Position, Kerning, Scaling a EmphasisMark. Font.Style, Font.StyleName a Font.StyleIdentifier spojují běh zpět se znakovým stylem a Font.ClearFormatting() resetuje přímé formátování běhu na výchozí hodnoty stylu. DocumentBuilder také přímo vystavuje Bold, Italic a Underline jako zkratky, plus PushFont() a PopFont() pro uložení a obnovení aktuálního stavu fontu builderu kolem dočasné změny formátování.
Formátování odstavců s ParagraphFormat
ParagraphFormat (přístupný přes Paragraph.ParagraphFormat nebo DocumentBuilder.ParagraphFormat) řídí zarovnání pomocí výčtu ParagraphAlignment (Left, Center, Right, Justify, Distributed, plus varianty arabské kashidy a thajské distribuce), odsazení pomocí LeftIndent, RightIndent a FirstLineIndent (s ekvivalenty CharacterUnit* pro východoasijské rozvržení), a mezery pomocí SpaceBefore, SpaceAfter a LineSpacingRule/LineSpacing. Chování stránkování je řízeno pomocí KeepTogether, KeepWithNext, PageBreakBefore a WidowControl, a Bidi označuje odstavec jako zprava doleva. Vlastní tabulátory jsou uloženy v ParagraphFormat.TabStops, TabStopCollection TabStop objektů, každý s Position, TabAlignment (Left, Center, Right, Decimal, Bar) a TabLeader (None, Dots, Dashes, Line, Heavy, MiddleDot). Stejně jako u Font, ParagraphFormat.Style a StyleName propojují odstavec s pojmenovaným Style, a ClearFormatting() vymaže přímé formátování odstavce.
Seznamy s ListFormat
ListFormat (na Paragraph.ListFormat nebo DocumentBuilder.ListFormat) použije formátování seznamu na odstavec: ApplyBulletDefault() a ApplyNumberDefault() jej přepnou na výchozí odrážkový nebo číslovaný seznam, RemoveNumbers() zcela odstraní formátování seznamu a ListIndent()/ListOutdent() jej přesunou mezi úrovně seznamu. ListFormat.List vrací podkladovou definici List a ListFormat.ListLevel vrací ListLevel platný pro tento odstavec, který nese nastavení na úrovni jako NumberStyle, NumberFormat, Alignment (ListLevelAlignment z Left, Center nebo Right), StartAt, RestartAfterLevel, úroveň-specifický Font a TrailingCharacter (ListTrailingCharacter z Tab, Space nebo Nothing) řídící mezeru mezi štítkem seznamu a textem odstavce. Nové definice seznamů pocházejí z ListCollection.Add(listTemplate) s použitím jedné ze zabudovaných předvoleb ListTemplate (BulletDefault, NumberArabicDot, NumberUppercaseRomanDot a podobně) nebo AddSingleLevelList pro jednoúrovňový seznam; seznamy dokumentu jsou vyjmenovány pomocí Document.Lists.
Textové rámy s FrameFormat
Paragraph.FrameFormat je objekt pro hlášení jen pro čtení: každá jeho vlastnost odráží odstavce aktuální stav rámce spíše než aby vám umožnil jej nastavit přímo. IsFrame hlásí, zda je odstavec aktuálně rámcem; Width, Height, a HeightRule hlásí jeho velikost; HorizontalPosition a VerticalPosition, společně s RelativeHorizontalPosition a RelativeVerticalPosition, uveďte, kde je ukotveno vzhledem k stránce, okraji, sloupci nebo odstavci; a HorizontalDistanceFromText/VerticalDistanceFromText uveďte mezeru mezi rámcem a okolním textem. HorizontalAlignment a VerticalAlignment uveďte, jak je obsah zarovnán v rámci rámce.
Najít a nahradit s rozsahem a IReplacingCallback
Range.Replace — dostupný na Document.Range pro průchod celým dokumentem, nebo na Range libovolného uzlu — má přetížení pro jednoduchý pár vzor/náhrada a pro pár vzor/náhrada kombinovaný s instancí FindReplaceOptions, podporující shodu založenou na regulárních výrazech. FindReplaceOptions.MatchCase a FindWholeWordsOnly upřesňují, co se počítá jako shoda; Direction (FindReplaceDirection.Forward nebo Backward) určuje pořadí prohledávání; ApplyFont a ApplyParagraphFormat umožňují, aby průchod nahrazení přenesl formátování na nahrazený text; a sada příznaků Ignore* (IgnoreDeleted, IgnoreInserted, IgnoreFields, IgnoreFieldCodes, IgnoreFootnotes, IgnoreStructuredDocumentTags, IgnoreShapes, IgnoreOfficeMath) vylučuje konkrétní kategorie obsahu ze shody. Pro logiku nahrazení, kterou nemůže vyjádřit pevný řetězec, implementujte IReplacingCallback.Replacing(args) a nastavte jej jako FindReplaceOptions.ReplacingCallback (nebo jej předáte jednomu z konstruktorů FindReplaceOptions, které přijímají callback přímo); parametr args je ReplacingArgs vystavující Match, MatchNode, MatchOffset a nastavitelný řetězec Replacement, aby callback mohl vypočítat hodnotu pro každou shodu. Související výčet ReplaceAction (Replace, Skip, Stop) popisuje možné výsledky pro jednotlivou shodu během operace.
Rychlý start
Aspose.Words FOSS pro .NET je k dispozici přes NuGet:
dotnet add package Aspose.Words.FOSSPro sestavení ze zdroje místo toho:
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
Pak přidejte odkaz na projekt Aspose.Words.csproj. Pro formátování textu během psaní nastavte vlastnosti DocumentBuilder.Font (Bold, Italic, Underline), vlastnosti DocumentBuilder.ParagraphFormat (Alignment, odsazení, mezery) a DocumentBuilder.ListFormat (ApplyBulletDefault(), ApplyNumberDefault()) před voláním Write(), Writeln() nebo InsertParagraph() — builder použije svůj aktuální stav formátování na vše, co je napsáno, dokud jej znovu nezměníte, nebo obalíte dočasnou změnu pomocí PushFont()/PopFont(). Pro přeformátování nebo přepsání textu, který už v dokumentu je, otevřete jej pomocí new Document(fileName) a zavolejte Range.Replace() na doc.Range — buď s jednoduchým přetížením vzor/náhrada, nebo s přetížením, které přijímá FindReplaceOptions s MatchCase, FindWholeWordsOnly nebo vlastním IReplacingCallback — pak Save() výsledek.
Podporované formáty
| Formát | Přípona | Číst | Napsat |
|---|---|---|---|
| DOCX | .docx | ✓ | ✓ |
| DOCM | .docm | ✓ | ✓ |
| DOTX | .dotx | ✓ | ✓ |
| DOTM | .dotm | ✓ | ✓ |
| Flat OPC (všechny varianty) | (různé) | ✓ | ✓ |
| Markdown | .md | ✓ | ✓ |
| Text | .txt | ✓ | ✓ |
Výše uvedené třídy formátování se aplikují stejným způsobem bez ohledu na to, z kterého z těchto formátů je dokument načten nebo do kterého je uložen. Tato edice nepodporuje DOC, RTF, ODT, HTML, EPUB, MHTML, MOBI, AZW3 ani WordML pro čtení nebo zápis a nepodporuje PDF, XPS ani export obrázků, protože rozvržení stránky a vykreslování jsou mimo její rozsah.
Open source a licencování
Aspose.Words FOSS pro .NET je vydán pod licencí MIT, zdarma pro komerční i osobní použití bez poplatků za autorské honoráře ani omezení šíření. Kompletní zdrojový kód, včetně implementací Font, ParagraphFormat, ListFormat, FrameFormat a Range, jak je popsáno výše, je k dispozici na GitHub v Aspose.Words FOSS pro .NET repozitáři.