はじめに
Aspose.Words FOSS for .NET は、商用 Aspose.Words エンジンと同じテキストフォーマットオブジェクトモデルを含んでいます: ランレベル属性用の 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、および new Document(fileName) でロードされた Flat OPC ファイル、あるいは DocumentBuilder でメモリ内に構築されたドキュメントに対して機能します。
Aspose.Words FOSS for .NET は、書き直しではなく、無料コアに縮小された正規の Aspose.Words コードベースであるため、Font、ParagraphFormat、ListFormat、FrameFormat オブジェクトモデルは、プロジェクトが後にページレイアウト、レンダリング、またはこのエディションに含まれない追加のフォーマットコンバータを必要とする場合、商用 Aspose.Words for .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 に格納され、TabStop オブジェクトの TabStopCollection で、各オブジェクトは 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 を返します。この ListLevel にはレベルごとの設定が含まれ、NumberStyle、NumberFormat、Alignment(Left、Center、または Right の ListLevelAlignment)、StartAt、RestartAfterLevel、レベル固有の Font、およびリストラベルと段落テキスト間の間隔を制御する TrailingCharacter(Tab、Space、または Nothing の ListTrailingCharacter)が含まれます。新しいリスト定義は 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 パラメータは、Match、MatchNode、MatchOffset を公開し、設定可能な Replacement 文字列を持つ ReplacingArgs で、コールバックがマッチごとに値を計算できるようにします。関連する ReplaceAction 列挙型(Replace、Skip、Stop)は、操作中の単一マッチに対する可能な結果を示します。
クイックスタート
Aspose.Words FOSS for .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) で開き、doc.Range に対して Range.Replace() を呼び出します — プレーンなパターン/置換オーバーロード、または FindReplaceOptions を受け取るオーバーロード(MatchCase、FindWholeWordsOnly、またはカスタム IReplacingCallback)のいずれかです。その後、結果を Save() します。
サポートされているフォーマット
| フォーマット | 拡張子 | 読み取り | 書き込み |
|---|---|---|---|
| DOCX | .docx | ✓ | ✓ |
| DOCM | .docm | ✓ | ✓ |
| DOTX | .dotx | ✓ | ✓ |
| DOTM | .dotm | ✓ | ✓ |
| Flat OPC (all variants) | (various) | ✓ | ✓ |
| Markdown | .md | ✓ | ✓ |
| Text | .txt | ✓ | ✓ |
上記のフォーマットクラスは、ドキュメントがどのフォーマットから読み込まれ、またはどのフォーマットへ保存されるかに関わらず、同じように適用されます。このエディションは、DOC、RTF、ODT、HTML、EPUB、MHTML、MOBI、AZW3、または WordML の読み取りまたは書き込みをサポートせず、PDF、XPS、または画像エクスポートもサポートしません。ページレイアウトとレンダリングはその範囲外だからです。
オープンソース & ライセンス
Aspose.Words FOSS for .NET は MIT ライセンスの下でリリースされており、ロイヤリティや再配布制限なしで商用・個人利用が無料です。上記で説明した Font、ParagraphFormat、ListFormat、FrameFormat、および Range の実装を含む完全なソースは、GitHub の Aspose.Words FOSS for .NET リポジトリ で入手可能です。