セクションの操作
セクションの操作
Word 文書は 1 つまたは複数のセクションに分割され、各セクションはそれぞれページ設定、余白、ヘッダー、フッターを持ちます。 Aspose.Words の .NET 用 FOSS セクションを Section ノード、含む Body そして、オプションでヘッダーとフッター、さらに PageSetup それはレイアウトを制御します。このページでは、セクションオブジェクトモデル、ページ設定、ヘッダーとフッター、そして多段組テキストレイアウトについて説明します。
セクションオブジェクトモデル
Document.Sections は SectionCollection を返します――文書内のすべての Section で、各々が CompositeNode でありノードツリーの一部です。Section は 1 つの Body(セクションの主段落とテーブルを保持する Story)を含み、存在する場合は Section.HeadersFooters を介して到達できる HeaderFooter ノード、すなわち HeaderFooterCollection を持ちます。Document.FirstSection と Document.LastSection は境界セクションへの直接アクセスを提供します。Section.AppendContent()、PrependContent()、ClearContent() はセクションの本文コンテンツを一括で操作し、ClearHeadersFooters() と DeleteHeaderFooterShapes() はヘッダー/フッターのコンテンツをクリアします。
セクションとセクション区切りの作成
DocumentBuilder.InsertBreak(BreakType) はカーソル位置に改行を挿入します;BreakType は新しいセクションを開始するために SectionBreakNewPage、SectionBreakContinuous、SectionBreakNewColumn、SectionBreakEvenPage、SectionBreakOddPage を含み、セクション以外の値として PageBreak、ColumnBreak、LineBreak、ParagraphBreak もあります。DocumentBuilder.MoveToSection() はカーソルを特定のセクションの本文の先頭に移動させます。PageSetup.SectionStart は既存のセクションに記録された SectionStart 区切りタイプを読み取るか設定します。
ページ設定
Section.PageSetup は、ページの寸法と余白(PageWidth, PageHeight, TopMargin, BottomMargin, LeftMargin, RightMargin, Gutter)、Orientation と PaperSize、および各側のページ罫線(Borders、BorderAppliesTo(PageBorderAppliesTo 経由)、BorderDistanceFrom(PageBorderDistanceFrom 経由)、BorderAlwaysInFront、BorderSurroundsHeader、BorderSurroundsFooter)をカバーする PageSetup インスタンスです。行番号は LineNumberRestartMode、LineNumberCountBy、LineNumberDistanceFromText、LineStartingNumber によって制御されます。PageSetup.ClearFormatting() はそれをデフォルトにリセットします。
ヘッダーとフッター
Section.HeadersFooters は、型付きアクセサー(HeaderPrimary、HeaderFirst、HeaderEven、FooterPrimary、FooterFirst、FooterEven)を備えた HeaderFooterCollection であり、GetByHeaderFooterType()、Add()、LinkToPrevious() も併せ持ちます。各 HeaderFooter は、HeaderFooterType によって識別され、IsHeader / IsLinkedToPrevious フラグが付いた Story(Body のような)です。PageSetup.DifferentFirstPageHeaderFooter と PageSetup.OddAndEvenPagesHeaderFooter は、Word が最初のページおよび偶数ページのヘッダー/フッターバリエーションを使用するかどうかを制御します。
複数のテキスト列
PageSetup.TextColumns は、TextColumnCollection(Count、EvenlySpaced、LineBetween、Spacing、Width)を返し、SetCount() によってセクション本文を複数の列に配置します。コレクションに 1 列以上が追加されると、個々の列は TextColumn インスタンス(Width、SpaceAfter)になります。
ヒントとベストプラクティス
- セクション区切りは、そのセクションの書式設定を保持します follows それ — 設定
PageSetupa のプロパティSectionあなたが作成したばかりの (afterInsertBreak)は改行後のコンテンツに影響し、前には影響しません。 - 新しいページを開始せずにページ設定の変更だけが必要な場合(例:マルチカラムテキストへの切り替え)には
SectionBreakContinuousを使用し、新しいセクションを必ず新しいページから開始したい場合はSectionBreakNewPageを使用します。 HeaderFooterCollection.LinkToPrevious()はセクションのヘッダー/フッターを再接続し、前のセクションの内容を継承します – 前のセクションから独立した新しいセクションを開始したい場合は、新しいヘッダー/フッターの内容を書き込む前にこれを実行してください。PageSetup.DifferentFirstPageHeaderFooterとOddAndEvenPagesHeaderFooterは、対応するHeaderFooterTypeバリアント(HeaderFirst、HeaderEvenなど)が実際にSection.HeadersFootersに存在する場合にのみ有効になります – フラグを有効にし、対応するヘッダー/フッターを一緒に追加してください。Section.Bodyと各HeaderFooterは別々のStoryインスタンスです –Range.Fields、ブックマーク、およびセクションのBodyに対する他の範囲スコープの操作は、ヘッダーやフッターには自動的に及びません。
一般的な問題
| 問題 | 原因 | 修正 |
|---|---|---|
| 新しいセクションのページ設定が、私が設定したものと一致しません | PageSetup は誤った Section インスタンスに設定されました | 設定 PageSetup 対象のセクションで follows 改ページで、前のものではなく |
| 前のセクションのヘッダー/フッターの内容が新しいセクションに予期せず表示される | 新しいセクションのヘッダー/フッターが依然として前のセクションにリンクされている | HeaderFooterCollection.LinkToPrevious(false) を呼び出す(または個別のヘッダー/フッター内容を追加)ことでリンクを解除する |
| 最初のページまたは偶数ページのヘッダー/フッターが無視される | DifferentFirstPageHeaderFooter / OddAndEvenPagesHeaderFooter は false です、または一致する HeaderFooterType バリアントが存在しません | PageSetup にフラグを設定し、対応するヘッダー/フッターのバリアントが存在することを確認してください |
| マルチカラムレイアウトは適用されません | TextColumns.SetCount() がカウント 1 で呼び出されたか、誤ったセクションの PageSetup 上で呼び出されました | ターゲットセクションの PageSetup.TextColumns で、複数列で SetCount() を呼び出してください |
FAQ
新しいページを開始せずに新しいセクションを開始するにはどうすればよいですか?
SectionBreakContinuousブレークをDocumentBuilder.InsertBreak(BreakType.SectionBreakContinuous)で挿入します。
セクションに独自の余白と向きを設定するにはどうすればよいですか?
セクション区切りを挿入し、次に新しいセクションの PageSetup – TopMargin、BottomMargin、LeftMargin、RightMargin、Orientation、および PaperSize のプロパティを設定します。
セクションの最初のページで別のヘッダーを使用するにはどうすればよいですか?
PageSetup.DifferentFirstPageHeaderFooter = true をそのセクションに設定し、HeadersFooters コレクションにタイプが HeaderFirst の HeaderFooter(必要に応じて FooterFirst も)を追加します。
セクションの本文テキストを2列にレイアウトするにはどうすればよいですか?
セクションに対して PageSetup.TextColumns.SetCount(2) を呼び出し、必要に応じて Spacing と EvenlySpaced / 個々の TextColumn.Width の値を調整します。
API Reference 概要
| クラス / Enum | 説明 |
|---|---|
Section | セクションノード; Body, HeadersFooters, PageSetup |
SectionCollection | ドキュメント内のすべてのSection、Document.Sectionsを介して |
Body / Story | セクション(Body)またはヘッダー/フッター(HeaderFooter)用のメインコンテンツコンテナ |
PageSetup | セクションのページ寸法、余白、向き、枠線、および列 |
HeaderFooter / HeaderFooterCollection | セクションのヘッダー/フッターコンテンツと型付きアクセサ |
HeaderFooterType | HeaderFooter がどのヘッダー/フッターバリアント(primary、first、even)であるかを識別します |
TextColumn / TextColumnCollection | セクションのマルチカラムテキストレイアウト |
PaperSize / Orientation / Margins | ページサイズ、向き、そして設定済みの余白値 |
PageBorderAppliesTo / PageBorderDistanceFrom | ページ枠線が印刷されるページと、その基準エッジ |
SectionStart / BreakType | セクションに記録されたセクション区切りタイプ、および DocumentBuilder.InsertBreak() が受け入れる区切りの種類 |
LineNumberRestartMode | セクション内で自動行番号付けが再開されるとき |