Вступ

Aspose.Words FOSS для .NET включає ту ж модель об’єктів форматування тексту, що й комерційний Aspose.Words engine: Font для атрибутів рівня запуску, ParagraphFormat для атрибутів рівня абзацу, ListFormat для нумерованих і маркованих списків, FrameFormat для розташованих текстових кадрів і Range.Replace для пошуку і заміни. Цей посібник розглядає саме цей шар — форматування та перезапис тексту, який вже існує в документі — а не створення структури документа з нуля (див. вступний пост для огляду випуску).

Бібліотека має ліцензію MIT, не має нативних залежностей і орієнтована на .NET Standard 2.0, тому працює на .NET Framework 4.6.2+ та .NET 6, 8 і 10. Встановіть її через NuGet або зберіть з вихідного коду (див. розділ Швидкий старт нижче). Все, що описано тут, працює з .docx, .docm, .dotx, .dotm і файлами Flat OPC, завантаженими за допомогою new Document(fileName), або з документами, створеними в пам’яті за допомогою DocumentBuilder.

Оскільки Aspose.Words FOSS для .NET є справжньою кодовою базою Aspose.Words, зведеною до безкоштовного ядра, а не перезаписом, модель об’єктів Font, ParagraphFormat, ListFormat і FrameFormat переноситься безпосередньо в комерційний Aspose.Words для .NET, якщо проєкт пізніше потребуватиме розмітки сторінок, рендерингу або додаткових конвертерів форматів, які виключені у цьому випуску.


Ключові можливості

Форматування на рівні запуску зі шрифтом

Кожен Run надає властивість Font, а DocumentBuilder.Font встановлює шрифт, який буде застосований до наступного написаного тексту. Окрім очевидних Bold, Italic і Underline (перелічення Underline з значеннями, включаючи Single, Double, Dotted, Dash, Wavy та їхні *Heavy варіанти), Font охоплює StrikeThrough, DoubleStrikeThrough, Superscript, Subscript, SmallCaps, AllCaps, Hidden, Shadow, Outline, Emboss, Engrave, Color, HighlightColor, Spacing, Position, Kerning, Scaling і EmphasisMark. Font.Style, Font.StyleName і Font.StyleIdentifier пов’язують запуск з характерним стилем, а Font.ClearFormatting() скидає пряме форматування запуску до його стилістичних значень за замовчуванням. DocumentBuilder також безпосередньо надає Bold, Italic і Underline як швидкі клавіші, плюс PushFont() і PopFont() для збереження та відновлення поточного стану шрифту будівельника під час тимчасової зміни форматування.

Форматування абзацу за допомогою ParagraphFormat

ParagraphFormat (доступний через Paragraph.ParagraphFormat або DocumentBuilder.ParagraphFormat) керує вирівнюванням за допомогою перерахування ParagraphAlignment (Left, Center, Right, Justify, Distributed, а також варіантів арабської кашіди та тайської розподіленої), відступами через LeftIndent, RightIndent і FirstLineIndent (з еквівалентами CharacterUnit* для східноазіатських макетів), та інтервалами через SpaceBefore, SpaceAfter і LineSpacingRule/LineSpacing. Пагінація керується за допомогою KeepTogether, KeepWithNext, PageBreakBefore і WidowControl, а Bidi позначає абзац як справа-наліво. Користувацькі табуляції зберігаються в ParagraphFormat.TabStops, TabStopCollection TabStop об’єктів, кожен з яких має Position, TabAlignment (Left, Center, Right, Decimal, Bar) і TabLeader (None, Dots, Dashes, Line, Heavy, MiddleDot). Як і у випадку з Font, ParagraphFormat.Style і StyleName пов’язують абзац з іменованим Style, а ClearFormatting() очищає пряме форматування абзацу.

Списки з ListFormat

ListFormat (на Paragraph.ListFormat або DocumentBuilder.ListFormat) застосовує форматування списку до абзацу: ApplyBulletDefault() і ApplyNumberDefault() переключають його на типово маркований або нумерований список, RemoveNumbers() повністю знімає форматування списку, а ListIndent()/ListOutdent() переміщують його між рівнями списку. ListFormat.List повертає базове визначення List, а ListFormat.ListLevel повертає ListLevel, який діє для цього абзацу, і містить налаштування для кожного рівня, такі як NumberStyle, NumberFormat, Alignment (ListLevelAlignment з Left, Center або Right), StartAt, RestartAfterLevel, специфічний для рівня Font та TrailingCharacter (ListTrailingCharacter з Tab, Space або Nothing), що керують проміжком між міткою списку та текстом абзацу. Нові визначення списків створюються за допомогою ListCollection.Add(listTemplate) з використанням одного з вбудованих пресетів ListTemplate (BulletDefault, NumberArabicDot, NumberUppercaseRomanDot тощо), або AddSingleLevelList для одно-рівневого списку; списки документа перебираються через Document.Lists.

Текстові рамки з FrameFormat

Paragraph.FrameFormat є об’єктом лише для читання, який повідомляє: кожна властивість у ньому відображає поточний стан кадру, а не дозволяючи встановлювати його безпосередньо. IsFrame повідомляє, чи є абзац наразі кадром; Width, Height, і HeightRule повідомляє його розмір; HorizontalPosition і VerticalPosition, разом з RelativeHorizontalPosition і RelativeVerticalPosition, повідомте, де він закріплений щодо сторінки, поля, колонки або абзацу; і HorizontalDistanceFromText/VerticalDistanceFromText повідомте про відступ між рамкою та навколишнім основним текстом. HorizontalAlignment і VerticalAlignment повідомте, як вміст вирівнюється в рамці.

Пошук і заміна з діапазоном та IReplacingCallback

Range.Replace — доступний у Document.Range для проходу по всьому документу, або у Range будь-якого вузла — має перевантаження для простого набору шаблон/заміна та для набору шаблон/заміна в поєднанні з екземпляром FindReplaceOptions, підтримуючи відповідність на основі регулярних виразів. FindReplaceOptions.MatchCase і FindWholeWordsOnly уточнюють, що вважається збігом; Direction (FindReplaceDirection.Forward або Backward) встановлює порядок сканування; ApplyFont і ApplyParagraphFormat дозволяють процесу заміни перенести форматування на текст заміни; а набір прапорців Ignore* (IgnoreDeleted, IgnoreInserted, IgnoreFields, IgnoreFieldCodes, IgnoreFootnotes, IgnoreStructuredDocumentTags, IgnoreShapes, IgnoreOfficeMath) виключає певні категорії вмісту зі збігу. Для логіки заміни, яку не може виразити фіксований рядок, реалізуйте IReplacingCallback.Replacing(args) і встановіть його як FindReplaceOptions.ReplacingCallback (або передайте його одному з конструкторів FindReplaceOptions, що приймає зворотний виклик безпосередньо); параметр args — це ReplacingArgs, що відкриває Match, MatchNode, MatchOffset і встановлюваний рядок Replacement, щоб зворотний виклик міг обчислити значення для кожного збігу. Пов’язаний перелік ReplaceAction (enum) (Replace, Skip, Stop) описує можливі результати одного збігу під час операції.


Швидкий старт

Aspose.Words FOSS для .NET доступний через NuGet:

dotnet add package Aspose.Words.FOSS

Для збірки з вихідного коду:

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

Потім додайте посилання на проект до Aspose.Words.csproj. Щоб форматувати текст під час написання, встановіть властивості DocumentBuilder.Font (Bold, Italic, Underline), властивості DocumentBuilder.ParagraphFormat (Alignment, відступи, інтервали) та DocumentBuilder.ListFormat (ApplyBulletDefault(), ApplyNumberDefault()) перед викликом Write(), Writeln() або InsertParagraph() — будівник застосовує поточний стан форматування до всього записаного, доки ви не зміните його знову, або обгорніть тимчасову зміну в PushFont()/PopFont(). Щоб переоформити або переписати текст, вже присутній у документі, відкрийте його за допомогою new Document(fileName) і викличте Range.Replace() на doc.Range — або просту перевантажену версію шаблон/заміна, або перевантаження, що приймає FindReplaceOptions з MatchCase, FindWholeWordsOnly або власним IReplacingCallback — потім Save() результат.


Підтримувані формати

ФорматРозширенняЧитатиЗаписати
DOCX.docx
DOCM.docm
DOTX.dotx
DOTM.dotm
Flat OPC (усі варіанти)(різні)
Markdown.md
Text.txt

Класи форматування вище застосовуються однаково, незалежно від того, з якого з цих форматів документ завантажено або в який збережено. Ця версія не підтримує DOC, RTF, ODT, HTML, EPUB, MHTML, MOBI, AZW3 або WordML для читання чи запису, а також не підтримує PDF, XPS або експорт зображень, оскільки розмітка сторінки та рендеринг виходять за межі її сфери.


Відкритий код та ліцензування

Aspose.Words FOSS для .NET випущено під ліцензією MIT, безкоштовно для комерційного та особистого використання без роялті та обмежень на розповсюдження. Повний вихідний код, включаючи реалізації Font, ParagraphFormat, ListFormat, FrameFormat та Range, описані вище, доступний на GitHub у Aspose.Words FOSS для .NET repository.


Перші кроки

Пов’язані ресурси