DocumentBuilderを使用して文書を変更する
書式の指定
フォントの書式設定
現在のフォントの書式は、DocumentBuilder.Font
プロパティによって返されるFont
オブジェクトで表されます。 Font
クラスには、Microsoft Wordで可能なさまざまなフォントプロパティが含まれています。
次のコード例は、フォントの書式設定を設定する方法を示しています。 |
セルの書式設定
セルの書式設定は、テーブルの構築中に使用されます。 これは、DocumentBuilder.CellFormat
プロパティによって返されるCellFormat
オブジェクトによって表されます。 CellFormat幅や垂直方向の配置など、さまざまなテーブルセルプロパティをカプセル化します。
次のコード例は、単一の書式設定されたセルを含むテーブルを作成する方法を示しています。 |
行の書式設定
現在の行の書式設定は、DocumentBuilder.RowFormat
プロパティによって返されるRowFormat
オブジェクトによって決定されます。 このオブジェクトは、すべての表の行の書式設定に関する情報をカプセル化します。
Below codeの例は、単一のセルを含むテーブルを作成し、行の書式設定を適用する方法を示しています。 |
リストの書式設定
Aspose.Wordsリストの書式設定を適用することで、リストを簡単に作成できます。 DocumentBuilderはListFormat
オブジェクトを返すDocumentBuilder.ListFormat
プロパティを提供します。 このオブジェクトには、リストの開始と終了、およびインデントの増減を行ういくつかのメソッドがあります。
Microsoft Wordには、箇条書きと番号付きの2つの一般的なタイプのリストがあります。 |
- 箇条書きリストを開始するには、ListFormat.applyBulletDefaultを呼び出します。
- 番号付きリストを開始するには、ListFormat.applyNumberDefaultを呼び出します。
箇条書きまたは番号と書式設定が現在の段落に追加され、ListFormat.removeNumbersまでDocumentBuilderを使用して作成されたすべての段落が呼び出されて箇条書きリストの書式設定
Word文書では、リストは最大9つのレベルで構成されています。 各レベルのリストの書式設定は、使用される箇条書きまたは番号、左インデント、箇条書きとテキストの間のスペースなどを指定します。
- 現在の段落のリストレベルを1レベル上げるには、ListFormat.listIndentを呼び出します。
- 現在の段落のリストレベルを1レベル下げるには、ListFormat.listOutdentを呼び出します。
これらのメソッドは、リストレベルを変更し、新しいレベルの書式設定プロパティを適用します。
次のコード例は、マルチレベルリストを作成する方法を示しています。
ページの設定とセクションの書式設定
ページ設定とセクションプロパティはDocumentBuilder.PageSetup
プロパティによって返されるPageSetup
オブジェクトにカプセル化されます。 このオブジェクトには、セクションのすべてのページ設定属性(左余白、下余白、用紙サイズなど)がプロパティとして含まれます。
次のコード例は、現在のセクションのページサイズや向きなどのプロパティを設定する方法を示しています。 |
スタイルの適用
フォントやParagraphFormatのような一部の書式設定オブジェクトはスタイルをサポートしています。 単一の組み込みまたはユーザー定義のスタイルは、名前、基本スタイル、フォント、スタイルの段落書式などの対応するスタイルプロパティを含むStyle
オブジ
さらに、Styleオブジェクトは、Style.StyleIdentifier列挙値によって表されるロケールに依存しないスタイル識別子を返すStyle.getStyleIdentifierプロパティを提供します。 重要なのは、Microsoft Wordの組み込みスタイルの名前が異なる言語にローカライズされていることです。 スタイル識別子を使用すると、文書の言語に関係なく正しいスタイルを見つけることができます。 列挙値は、Normal、Heading 1、Heading 2などのMicrosoft Word組み込みスタイルに対応しています。 すべてのユーザー定義スタイルにはStyleIdentifier.User valueが割り当てられます。
次のコード例は、段落スタイルを適用する方法を示しています。 |
境界線とシェーディング
境界線はBorderCollectionで表されます。 これは、インデックスまたは境界線の種類によってアクセスされるBorderオブジェクトのコレクションです。 境界線の型はBorderType
列挙体で表されます。 列挙体の一部の値は、複数または1つのドキュメント要素にのみ適用できます。 たとえば、BorderType.Bottom
は段落または表のセルに適用できますが、BorderType.DiagonalDown
は表のセル内の対角線の境界線のみを指定します。
Borderコレクションとそれぞれの境界線の両方には、色、線のスタイル、線の幅、テキストからの距離、オプションの影などの同様の属性があります。 それらは同じ名前のプロパティによって表されます。 プロパティ値を組み合わせることで、さまざまな境界線の種類を実現できます。 さらに、BorderCollectionオブジェクトとBorderオブジェクトの両方で、Border.clearFormattingメソッドを呼び出すことでこれらの値を既定値にリセットできます。 境界線のプロパティがデフォルト値にリセットされると、境界線は非表示になります。
Shadingクラスには、文書要素のシェーディング属性が含まれています。 必要なシェーディングテクスチャと、要素の背景と前景に適用される色を設定できます。 |
シェーディングテクスチャは、次のように設定されています TextureIndex Shadingオブジェクトへのさまざまなパターンの適用を可能にする列挙値。 たとえば、ドキュメント要素の背景色を設定するには、次のようにします TextureIndex.TextureSolid 値を設定し、必要に応じて前景の陰影の色を設定します。
次の例は、段落に境界線と陰影を適用する方法を示しています。 |
グリッドにスナップ
Aspose.Wordsは、段落プロパティスナップをグリッドに取得および設定するための二つのプロパティParagraphFormat.SnapToGrid
とFont.SnapToGrid
を提供します。
カーソルの移動
現在のカーソル位置の検出
Builderのカーソルが現在位置している場所はいつでも取得できます。 DocumentBuilder.getCurrentNodeプロパティは、このビルダーで現在選択されているノードを返します。 ノードは段落の直接の子です。 DocumentBuilder
を使用して実行する挿入操作は、DocumentBuilder.CurrentNode
の前に挿入されます。 現在の段落が空の場合、またはカーソルが段落の終わりの直前に配置されている場合、DocumentBuilder.CurrentNode
はnullを返します。
また、このDocumentBuilderで現在選択されている段落を取得するDocumentBuilder.getCurrentParagraphプロパティを使用することもできます。 Below codeの例は、ドキュメントビルダーで現在のノードにアクセスする方法を示しています。
任意のノード(段落とその子)への移動
段落または段落の直接の子であるドキュメントオブジェクトノードがある場合は、ビルダーのカーソルをこのノードにポイントできます。 これを実行するにはDocumentBuilder.moveToメソッドを使用します。 次のコード例は、カーソル位置を指定したノードに移動する方法を示しています。
ドキュメントの開始/終了への移動
文書の先頭に移動する必要がある場合は、DocumentBuilder.moveToDocumentStartを呼び出します。 文書の最後に移動する必要がある場合は、DocumentBuilder.moveToDocumentEndを呼び出します。
セクションへの移動
複数のセクションを含むドキュメントを操作している場合は、DocumentBuilder.moveToSectionを使用して目的のセクションに移動できます。 このメソッドは、指定されたセクションの先頭にカーソルを移動し、必要なセクションのインデックスを受け入れます。 セクションインデックスが0以上の場合、0が最初のセクションであるドキュメントの先頭からのインデックスを指定します。 セクションインデックスが0より小さい場合は、ドキュメントの末尾からのインデックスを指定し、最後のセクションを-1とします。 Below codeの例は、指定されたセクションにカーソル位置を移動する方法を示しています。 この例のテンプレートファイルは、次の場所からダウンロードできます ここに.
ヘッダー/フッターへの移動
ヘッダーまたはフッターにデータを配置する必要がある場合は、最初にDocumentBuilder.moveToHeaderFooterを使用してそこに移動する必要があります。このメソッドは、カーソルを移動するヘッダーまたはフッターのタイプを識別するHeaderFooterType列挙値を受け入れます。
最初のページで異なるヘッダーとフッターを作成する場合は、PageSetup.getDifferentFirstPageHeaderFooterプロパティをtrueに設定する必要があります。 偶数ページと奇数ページで異なるヘッダーとフッターを作成する場合は、PageSetup.getOddAndEvenPagesHeaderFooterをtrueに設定する必要があります。
メインストーリーに戻る必要がある場合は、DocumentBuilder.moveToSectionを使用してヘッダーまたはフッターから移動します。 以下の例では、DocumentBuilderを使用してドキュメント内にヘッダーとフッターを作成します。
段落への移動
現在のセクションの目的の段落にカーソルを移動するには、DocumentBuilder.moveToParagraphを使用します。 このメソッドには、paragraphIndex(移動先の段落のインデックス)とcharacterIndex(段落内の文字のインデックス)の二つのパラメータを渡す必要があります。
ナビゲーションは、現在のセクションの現在のストーリー内で実行されます。 つまり、カーソルを最初のセクションのプライマリヘッダーに移動した場合、paragraphIndexはそのセクションのそのヘッダー内の段落のインデックスを指定します。
ParagraphIndexが0以上の場合、セクションの先頭からのインデックスを指定し、0が最初の段落になります。 paragraphIndexが0より小さい場合は、セクションの最後からのインデックスを指定し、-1が最後の段落になります。 現在、文字インデックスは、段落の先頭に移動する場合は0、段落の末尾に移動する場合は-1としてのみ指定できます。 次のコード例は、カーソル位置を指定した段落に移動する方法を示しています。 この例のテンプレートファイルは、次の場所からダウンロードできます ここに.
テーブルセルへの移動
現在のセクションのテーブルセルにカーソルを移動する必要がある場合はDocumentBuilder.moveToCellを使用します。 このメソッドは、次の4つのパラメータを受け入れます:
- tableIndex-移動先のテーブルのインデックス。
- rowIndex-テーブル内の行のインデックス。
- columnIndex-テーブル内の列のインデックス。
- characterIndex-セル内の文字のインデックス。
ナビゲーションは、現在のセクションの現在のストーリー内で実行されます。
Indexパラメーターでは、インデックスが0以上の場合、最初の要素が0である最初からインデックスを指定します。 インデックスが0より小さい場合は、最後の要素である-1で末尾からのインデックスを指定します。
また、characterIndexは現在、セルの先頭に移動するには0、セルの末尾に移動するには-1しか指定できないことに注意してください。 次のコード例は、指定されたテーブルセルにカーソル位置を移動する方法を示しています。 この例のテンプレートファイルは、次の場所からダウンロードできます ここに.
ブックマークへの移動
ブックマークは、新しい要素が挿入される文書内の特定の場所をマークするために頻繁に使用されます。 ブックマークに移動するには、DocumentBuilder.moveToBookmarkを使用します。 このメソッドには2つのオーバーロードがあります。 最も単純なものは、カーソルが移動されるブックマークの名前だけを受け入れます。 次のコード例は、カーソル位置をブックマークに移動する方法を示しています。
このオーバーロードは、指定された名前のブックマークの開始直後の位置にカーソルを移動します。 別のオーバーロードDocumentBuilder.moveToBookmarkは、カーソルをより高い精度でブックマークに移動します。 2つの追加のブールパラメータを受け入れます:
- isStartカーソルをブックマークの先頭に移動するか末尾に移動するかを指定します。
- isAfterカーソルをブックマークの開始位置または終了位置の後に移動するか、ブックマークの開始位置または終了位置の前に移動するかを決定します。
次のコード例は、ブックマークの終了直後にカーソル位置を移動する方法を示しています。
この方法で新しいテキストを挿入しても、ブックマークの既存のテキストは置き換えられません。 ドキュメント内のブックマークの中には、フォームフィールドに割り当てられているものがあります。 そのようなブックマークに移動してテキストを挿入すると、テキストがフォームフィールドコードに挿入されます。 これによりフォームフィールドが無効になることはありませんが、挿入されたテキストはフィールドコードの一部になるため表示されません。
Merge
フィールドへの移動
場合によっては、DocumentBuilder
を使用して"手動"Mail Mergeを実行したり、Mail Mergeイベントハンドラー内で特別な方法で差し込み項目を入力したりする必要がある場合があります。 それはDocumentBuilder.moveToMergeFieldが有用である可能性があるときです。 このメソッドは、差し込み項目の名前を受け入れます。 カーソルを指定した差し込み項目のすぐ外側の位置に移動し、差し込み項目を削除します。 次のコード例は、指定した差し込み項目のすぐ外側の位置にカーソルを移動する方法を示しています。
測定単位間で変換する方法
いくつかの測定値(幅/高さ、余白、さまざまな距離)を表すAspose.WordsAPIで提供されるオブジェクトプロパティのほとんどは、ポイント単位の値を受け入れます(1イ これは便利ではない場合があるため、さまざまな測定単位間で変換するヘルパー関数を提供するConvertUtil
クラスがあります。 これにより、インチをポイントに、ポイントをインチに、ピクセルをポイントに、ポイントをピクセルに変換できます。 ピクセルをポイントに変換したり、その逆に変換したりする場合は、96dpi(dots per inch)解像度または指定されたdpi解像度で実行できます。
ConvertUtil
次のコード例は、ページプロパティをインチで指定する方法を示しています。