.NET でセクションを操作する方法
このガイドでは、セクション区切りの作成、ページ設定の構成、ヘッダー、フッター、マルチカラムレイアウトの管理方法を示します Aspose.Words FOSS for .NET、使用する Section and PageSetup クラス。ドキュメント内に既に存在するセクションの読み取り、新しいセクションを開始するには DocumentBuilder、ページサイズと余白の設定、ヘッダーとフッターのバリエーションの追加、そして本文テキストを複数カラムでレイアウトする方法。
ステップバイステップガイド
ステップ 1: パッケージをインストールする
Aspose.Words FOSS for .NET はまだ NuGet パッケージを公開していません — 代わりにソースからライブラリをビルドしてください。https://github.com/aspose-words-foss/Aspose.Words-FOSS-for-.NET.git をクローンし、.NET SDK を使用して Release 構成で Aspose.Words.sln をビルドし、生成された Aspose.Words アセンブリをプロジェクトから参照します。このライブラリは .NET Standard 2.0 を対象としているため、.NET Framework 4.6.2+ および .NET 6/8/10 上で動作します。
ステップ 2: 必要なクラスをインポートする
using Aspose.Words; ディレクティブを追加します — Section、PageSetup、HeaderFooter と本ガイドで使用される関連列挙体はすべて、Document および DocumentBuilder と同じ Aspose.Words 名前空間に直接存在します。
ステップ 3: ドキュメント内の既存セクションを読み取る
Document.Sections は、ドキュメント内のすべての Section を保持する SectionCollection を返し、各々は全体のノードツリーの一部でもある CompositeNode です。Document.FirstSection と Document.LastSection は、コレクションを反復せずに境界セクションへ直接アクセスできるようにします。各 Section は 1 つの Body を含みます――他の任意の Story と同じ方法で取得され、存在する場合は Section.HeadersFooters を通じてヘッダーおよびフッターのコンテンツにアクセスできます。
ステップ 4: セクションブレークで新しいセクションを開始する
Call DocumentBuilder.InsertBreak(BreakType) カーソル位置で新しいセクションを開始します。Pass BreakType.SectionBreakNewPage 新しいセクションを常に新しいページから開始すべき場合、 BreakType.SectionBreakContinuous ページ設定の変更だけが必要な場合(例:マルチカラムテキストに切り替える)で、ページブレークを強制しない場合、または BreakType.SectionBreakNewColumn, SectionBreakEvenPage、そして SectionBreakOddPage Word がサポートする他のセクション開始動作用です。セクション区切りは、そのセクションの follows それに、設定します PageSetup 新しいもののプロパティ Section – 直前のものではなく – 区切りが挿入されたら。 DocumentBuilder.MoveToSection(sectionIndex) カーソルを特定のセクション本体の先頭に移動し、 PageSetup.SectionStart 読み取るか設定する SectionStart 既存のセクションにすでに記録されている区切りタイプ。
ステップ 5: ページサイズと余白を設定する
各 Section.PageSetup は PageSetup インスタンスです。ページサイズと余白を設定するには PageWidth、PageHeight、LeftMargin、RightMargin、TopMargin、BottomMargin、Gutter を設定するか、Margins プリセットを直接 PageSetup.Margins に割り当てます。Orientation と PaperSize はページの向きと用紙サイズを制御します。ページ罫線は Borders(BorderCollection)、BorderAppliesTo(PageBorderAppliesTo)、BorderDistanceFrom(PageBorderDistanceFrom)、BorderAlwaysInFront、BorderSurroundsHeader、BorderSurroundsFooter を使用して設定します。PageSetup.ClearFormatting() を呼び出して、セクションのページ設定を最初から構成する前にデフォルトにリセットします。
ステップ 6: ヘッダーとフッターを追加およびリンクする
Section.HeadersFooters は、型指定されたアクセサ(HeaderPrimary、HeaderFirst、HeaderEven、FooterPrimary、FooterFirst、FooterEven)を備えた HeaderFooterCollection であり、HeaderFooterType と Add() による検索用の GetByHeaderFooterType() も併せ持ち、新しいものを追加できます。各 HeaderFooter は Story であり、IsHeader と IsLinkedToPrevious のフラグが設定されています。対応する HeaderFirst/FooterFirst または HeaderEven/FooterEven バリアントを追加する前に、PageSetup.DifferentFirstPageHeaderFooter または PageSetup.OddAndEvenPagesHeaderFooter を有効にしてください――フラグとバリアントは同時に有効になります。HeaderFooterCollection.LinkToPrevious() を呼び出すと、セクションのヘッダーまたはフッターを再接続して前のセクションの内容を継承させるか、または切り離して新しいセクションが独立した内容で開始するようにできます。
ステップ 7: 本文テキストを複数列に配置する
PageSetup.TextColumns はセクションの TextColumnCollection を返します。本文テキストが流れる列数を指定して SetCount() を呼び出し、次に EvenlySpaced、Spacing、LineBetween、および Width を調整して列の配置方法を制御します。コレクションに複数列が含まれるようになると、個々の TextColumn インスタンスはそれぞれの Width と SpaceAfter を公開します。
ステップ 8: セクションコンテンツをクリアまたは一括編集する
Section.AppendContent() と PrependContent() は別のセクションの本文コンテンツをこのセクションにコピーします;ClearContent() はセクションの本文を一括で空にします。ClearHeadersFooters() と DeleteHeaderFooterShapes() はセクション自体を削除せずにヘッダーとフッターのコンテンツをクリアします。
よくある問題と対策
新しいセクションのページ設定が、私が設定したものと一致しません PageSetup が間違った Section インスタンス。セクションブレークは、次に続くセクションの書式設定を引き継ぎます – 設定 PageSetup 次のセクションに対して InsertBreak(), 前のものではありません。
前のセクションからのヘッダーまたはフッターのコンテンツが、新しいセクションに予期せず表示されます 新しいセクションのヘッダーまたはフッターが、まだ前のセクションにリンクされています。呼び出し HeaderFooterCollection.LinkToPrevious(false), または新しいセクションに別々のヘッダー/フッターコンテンツを追加して、リンクを解除してください。
最初のページまたは偶数ページのヘッダー/フッターは無視されます DifferentFirstPageHeaderFooter or OddAndEvenPagesHeaderFooter is false, または一致する HeaderFooterType バリアントが存在しません Section.HeadersFooters. フラグをオンにしてください PageSetup そして対応するヘッダー/フッターのバリアントを追加してください。
マルチカラムレイアウトは適用されません TextColumns.SetCount() カウントが1で呼び出されたか、または間違ったセクションの PageSetup. 呼び出してください SetCount() 対象セクションの列が複数ある場合 PageSetup.TextColumns.
セクション区切りが誤った文書位置に挿入されました DocumentBuilder.InsertBreak(BreakType) ビルダーの現在のカーソルに挿入されます。使用 DocumentBuilder.MoveToSection() 呼び出す前にカーソルを位置付けるために、ビルダーの他のカーソル位置指定メンバーを使用します InsertBreak().
よくある質問
新しいページを開始せずに新しいセクションを開始するにはどうすればいいですか?
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 の値を調整します。
最初と最後のセクションに直接アクセスするにはどうすればよいですか?
Document.Sections にインデックス付けする代わりに、Document.FirstSection と Document.LastSection を読み取ります。