ページのヘッダーとフッターの作成
Word および PDF レポートにページ ヘッダーとページ フッターを作成できます。以下の各タイプのページのレイアウトに、ページ ヘッダーとページ フッターをそれぞれ作成できます。
セクションの最初のページ
偶数ページ
奇数ページ (最初のページのヘッダーまたはフッターを指定しない場合、最初のページを含む)
プログラムまたはテンプレートでレポートのページ ヘッダーとフッターを作成して、レポートで使用できます。コンテンツをフッターに追加できます。
レポートを開くと、DOM API が以下を行います。
テンプレートからヘッダーとフッターを読み取り、それらを PDF または DOCX の
PageHeaderオブジェクトおよびPageFooterオブジェクトに変換します。ヘッダー オブジェクトとフッター オブジェクトを、そのヘッダーとフッターを含むセクションのプロパティを定義する DOCX または PDF の
PageLayoutオブジェクトに関連付けます。テンプレートによって定義されたセクションをコードが移動する際、ヘッダーとフッターをレポートに追加します。
レポート プログラムがセクションを移動する際、テンプレート定義ヘッダーとフッターにコンテンツを追加できます。
テンプレートでのページ ヘッダーとページ フッターの使用
メイン テンプレートまたはドキュメント パーツ テンプレートにページ ヘッダーとフッターを挿入できます。方法は Word と PDF で異なります。
Word テンプレートのページ ヘッダーとフッター
Word ドキュメントのすべてのページには、編集可能なヘッダーとフッターがあります。編集モードを有効にするには、ヘッダー領域またはフッター領域をダブルクリックします。あるいは、Word の [挿入] タブで、[ヘッダーとフッター] セクションの [ヘッダー] または [フッター] ボタンの矢印をクリックします。メニューから、対応する編集コマンドを選択します。ヘッダーまたはフッターの編集を完了したら、[ヘッダー/フッター ツール] の [デザイン] タブで、[ヘッダーとフッターを閉じる] をクリックします。
編集モードで、以下のようにヘッダーまたはフッターを変更できます。
テキスト、ホール、ページ番号、イメージを挿入する。
ページ番号のタイプを指定するなど、追加する項目を書式設定する。
ヘッダーまたはフッターのサイズを変更する。
最初のページ、奇数ページ、偶数ページに異なるヘッダーまたはフッターを指定する。
Word フィールドを挿入する。
フィールドのメカニズムは、ページ間で異なるヘッダーまたはフッターのコンテンツを生成するのに役立ちます。挿入できるフィールドを確認するには、[クイック パーツの表示] ボタンをクリックし、[フィールド] を選択します。
StyleRefフィールドは、フッターに章タイトルや節タイトルを挿入する場合に便利です。ページの欄外見出しと脚注の作成を参照してください。
Word のページ ヘッダーおよびフッターの取り扱い方法の詳細については、https://support.microsoft.com/wordを参照してください。
メイン テンプレートでページ ヘッダーとフッターを直接変更できます。ドキュメント パーツ テンプレートにページ ヘッダーやフッターを追加するには、必要に応じてページ ヘッダーとフッターを変更します。クイック パーツ ギャラリーにパーツを保存する前に、CTRL+A キーを使用してページ全体を選択します。ドキュメント パーツ テンプレートの追加と変更の詳細については、Microsoft Word のドキュメント パーツ テンプレート ライブラリの作成を参照してください。
ヘッダーまたはフッターにページ番号を挿入できます。[ヘッダー/フッター ツール] の [デザイン] タブで [ページ番号] メニューを使用してページ番号を挿入します。書式設定オプションにアクセスするには、ヘッダーまたはフッターでページ番号を右クリックし、[ページ番号の書式設定] を選択します。
PDF テンプレートのページ ヘッダーとフッター
PDF テンプレートにページ ヘッダーとフッターを追加するには、以下の手順に従います。
<pheader>要素と<pfooter>要素を、<layout>要素を使用して定義するページ レイアウトに追加する。ヘッダー要素とフッター要素は、メイン テンプレート (root.html) またはドキュメント パーツ テンプレートのレイアウトに追加できます。ページ ヘッダーまたはフッターのスタイルに、それぞれドキュメント パーツ テンプレートを定義する。
メモ
プログラムによってのみレイアウトにヘッダーまたはフッターを挿入する場合、テンプレートの <layout> 要素に <pfooter> 要素や <pheader> 要素を追加する必要はありません。
次の表は、<pheader> および <pfooter> で使用できる属性を示しています。これらの要素は、DOM クラス mlreportgen.dom.PDFPageHeader および mlreportgen.dom.PDFPageFooter に対応します。
| 要素 | 属性 | 値 |
|---|---|---|
pheader | type | default, first, even |
template-name | ヘッダーを定義するドキュメント パーツ テンプレート | |
pfooter | type | default, first, even |
template-name | フッターを定義するドキュメント パーツ テンプレート |
たとえば、次のコードは、2 つのページ フッター (1 つは奇数ページ用、1 つは偶数ページ用) を使用するドキュメント パーツ テンプレート Chapter を定義します。ページ番号の形式はアラビア数字です。
<dptemplate name="Chapter"> <layout style="page-margin: 1in 1in 1in 1in 0.5in 0.5in 0in; page-size: 8.5in 11in portrait"> <pfooter type="default" template-name="MyPageFooter"/> <pfooter type="even" template-name="MyEvenFooter"/> <pnumber format="1" /> </layout> <!-- Define content for your chapter here--fixed text and holes as needed --> </dptemplate>
docpart_templates.html ファイルでドキュメント パーツ テンプレート MyPageFooter と MyEvenFooter を定義します。たとえば、ページ フッターを定義して、次のようにします。
すべてのフッターがページ番号を挿入する。ページ番号を挿入するには、
<page>要素を使用します。奇数のページ番号が右揃えになる。
pfooter要素上のtypeの値defaultが最初のページと奇数ページを指定します。偶数のページ番号が左揃えになる。
これらのドキュメント パーツ テンプレートがページ フッターを定義します。
<dptemplate name="MyPageFooter"> <p style="text-align:right;font-family:Arial,Helvetica,sans-serif;font-size:10pt"> <page/></p> </dptemplate> <dptemplate name="MyEvenFooter"> <p style="text-align:left;font-family:Arial,Helvetica,sans-serif;font-size:10pt"> <page/></p> </dptemplate>
これらの DOM API HTML 要素は、ヘッダーとフッターで役に立ちます。たとえば、<page> と <numpages> を使用して、Page 1 of 3 という形式のページ番号をヘッダーとフッターに追加できます。プログラムによる同等の方法については、mlreportgen.dom.NumPages を参照してください。また、ページ上で指定した要素 (スタイル) のコンテンツに基づいて変化するコンテンツを、ヘッダーとフッターに生成することもできます。ページの欄外見出しと脚注の作成を参照してください。
| 目的 | 要素 | 属性 | 値 |
|---|---|---|---|
ページ番号の形式 (レイアウトの first-page-number および page-number-format と同じ) | pnumber | format | n または N (数値の場合)、a、A、i、I |
initial-value | この要素を使用するレイアウトの最初のページの番号 | ||
| 現在のページ番号 | page | 属性なし | N/A |
| ドキュメントの総ページ数 | numpages | 属性なし | N/A |
| 見出しなどのスタイルのコンテンツをページのヘッダーまたはフッターに挿入 (欄外見出しおよび脚注用) | styleref | 属性なし | 最も近い h1 要素のコンテンツを挿入 |
style-name または | ヘッダーまたはフッターに挿入するコンテンツに使用するスタイルの名前または | ||
outline-level | ヘッダーまたはフッターに挿入するコンテンツに使用するスタイルのアウトライン レベル |
テンプレート定義ヘッダーとフッターへのアクセス
Document または DocumentPart オブジェクトの CurrentPageLayout プロパティを使用して、ドキュメントまたはドキュメント パーツの現在のセクションのテンプレート定義ヘッダーとフッターにアクセスできます。
CurrentPageLayout プロパティの値は DOCXPageLayout または PDFPageLayout オブジェクトです。その PageHeaders プロパティおよび PageFooters プロパティは、現在のセクションのテンプレート定義ヘッダーとフッターに対応するオブジェクトの cell 配列を含みます。各 cell 配列には、セクションに定義する 3 つのタイプのヘッダーとフッター (最初のページ、偶数ページ、奇数ページ) の数に応じて、オブジェクトを 3 つまで含めることができます。オブジェクトは、cell 配列に任意の順序で表示できます。したがって、特定のタイプのヘッダーまたはフッターにアクセスするには、cell 配列を検索して、アクセスする対象を特定します。
テンプレート定義のヘッダーとフッターへのコンテンツの追加
DOM API を使用して、セクションの各ページに表示されているテンプレート定義ヘッダーまたはフッターにコンテンツを追加できます。ドキュメントまたはドキュメント パーツの現在のセクションのヘッダーとフッターにコンテンツを追加するには、最初にドキュメントまたはドキュメント パーツの CurrentPageLayout プロパティを使用して、DOCX や PDF の PagerHeader または PageFooter オブジェクトにアクセスします。その後、PageHeader または PageFooter オブジェクトの append メソッドを使用してコンテンツを追加します。
ヘッダー オブジェクトとフッター オブジェクトは、ドキュメント パーツ オブジェクトの一種です。ページ ヘッダーやフッターには、ドキュメントに追加可能な、段落、イメージ、テーブルなどの任意のコンテンツを追加できます。
メイン テンプレートのヘッダーとフッターでホールを使用して、ヘッダーとフッターに追加するコンテンツの配置を制御できます。たとえば、このプログラムは、レポートの最初のセクションで最初のテンプレート定義ページ ヘッダーにある Date という名前のホールに、今日の日付を追加します。この例では、Word テンプレート MyReportTemplate に、最初のページ、奇数ページ、および偶数ページのヘッダーとフッターを定義する 1 つのレイアウトがあると仮定しています。
import mlreportgen.dom.*; d = Document("MyReport","docx","MyReportTemplate"); open(d); sect = d.CurrentPageLayout; for i = 1:numel(sect.PageHeaders) if strcmpi(sect.PageHeaders(i).PageType,"first") firstPageHeader = sect.PageHeaders(i); while ~strcmp(firstPageHeader.CurrentHoleId,"#end#") switch firstPageHeader.CurrentHoleId case "Date" append(firstPageHeader,date); end moveToNextHole(firstPageHeader); end break; end end close(d); rptview(d.OutputPath);
ページの欄外見出しと脚注の作成
ページの欄外見出しと脚注では、コンテンツはコンテキストに基づき、ページ間で異なります。たとえば、現在の章または節の名前はページごとに変化します。ページ ヘッダーまたはフッターに現在のコンテンツを挿入できます。
プログラムまたはテンプレートでページの欄外見出しと脚注を作成できます。
テンプレートでのページの欄外見出しと脚注の作成
Word テンプレートのページ ヘッダーとフッターでは、Word でページ ヘッダーとフッターを編集する一般的な方法が説明されています。本文のテキストを追加するには、StyleRef フィールドを挿入します。このフィールドは、DOM API の mlreportgen.dom.StyleRef クラスと等価です。このフィールドを Word テンプレートまたはドキュメント パーツ テンプレートに挿入するには、以下のようにします。
編集のためにヘッダーまたはフッターを開きます。
[挿入] タブの [クイック パーツ] ボタン メニューから、[フィールド] を選択します。
フィールド ダイアログ ボックスで、[フィールドの名前] リストから
[StyleRef]を選択します。[スタイル名] リストから、欄外見出しまたは脚注に含めるテキストを含んだスタイルの名前を選択します。たとえば、見出し 1 のスタイルで書式設定された段落のコンテンツを使用するには、
[見出し 1]を選択します。レポートは、ヘッダーやフッターにコンテンツが表示されるときにこのスタイルを使用するコンテンツを作成しなければなりません。[OK] をクリックします。
PDF ドキュメントで本文のテキストを含めるには、<styleref> 要素を使用します。テンプレートの docpart_templates.html ライブラリ ファイルに次のようなコードを追加します。<styleref> 要素は、コンテンツに Heading1 オブジェクトを既定で使用します。
<dptemplate name="RunningFooter"> <p style="text-align:center;font-family:sans-serif;font-size:10pt"> <styleref/> </p> </dptemplate>
効果を確認するには、テンプレートの root.html ファイルの <layout> 要素にページ フッターを追加します。これは、テンプレートが定義する任意の <layout> 要素に挿入できます。
<layout style="page-margin: 1in 1in 1in 1in 0.5in 0.5in 0in; page-size: 8.5in 11in portrait"> <pfooter template-name="RunningFooter" /> </layout>
Heading1 オブジェクトを作成してテンプレートを呼び出すコードを使用して、結果を確認します。このコードでは、テンプレート RunFooters でフッター ドキュメント パーツ テンプレートが定義されていると仮定しています。
import mlreportgen.dom.*; d = Document("mydoc","pdf","RunFooters"); open(d); title = append(d, Paragraph("Document Title")); title.Bold = true; title.FontSize = "28pt"; h1 = append(d,Heading1("My First Chapter")); p1 = append(d,Paragraph("Hello World")); h2 = append(d,Heading1("My Second Chapter")); h2.Style = {PageBreakBefore(true)}; p2 = append(d,Paragraph("Text for this chapter.")); close(d); rptview(d.OutputPath);
プログラムによってページ フッターを参照するには、以下の形式のコードを使用します。引数は、1 番目がフッターのタイプ、2 番目がテンプレート パッケージ、3 番目がドキュメント パーツ テンプレートです。
PDFPageFooter("default","RunFooters","RunningFooter");
このコードは、フッターを挿入するテンプレートに依存することなく、現在のページ レイアウトにフッターを作成します。テンプレートは、ドキュメント パーツ テンプレートの定義にのみ使用されます。
import mlreportgen.dom.*; d = Document("mydoc","pdf","RunFooters"); open(d); myfooter = PDFPageFooter("default","RunFooters","RunningFooter"); d.CurrentPageLayout.PageFooters = myfooter; title = append(d,Paragraph("Document Title")); title.Bold = true; title.FontSize = "28pt"; h1 = append(d,Heading1("My First Chapter")); p1 = append(d,Paragraph("Hello World")); h2 = append(d,Heading1("My Second Chapter")); h2.Style = {PageBreakBefore(true)}; p2 = append(d,Paragraph("Text for this chapter.")); close(d); rptview(d.OutputPath);
プログラムによるページの欄外見出しと脚注の作成
DOM API には、Word ドキュメントおよび PDF ドキュメントでプログラムによって欄外見出しと脚注を作成することが可能なクラスが用意されています。
ページ ヘッダーまたはフッターに章タイトルを挿入するには、
mlreportgen.dom.StyleRefを参照。ページ ヘッダーとフッターを操作するには、
mlreportgen.dom.DOCXPageHeader、mlreportgen.dom.DOCXPageFooter、mlreportgen.dom.PDFPageHeader、mlreportgen.dom.PDFPageFooterを参照。
プログラムによるページ ヘッダーとフッターの作成
プログラムによって、レポートの現在のセクションにページ ヘッダーとフッターを作成します。PDF では、PDFPageHeader と PDFPageFooter を対応する DOCX パーツの代わりに使用して、同じ手法を使用できます。
DOCXPageHeaderまたはDOCXPageFooterコンストラクターを使用して、テンプレート形式 (固定コンテンツとさまざまなコンテンツに対するホール) を定義するテンプレートに基づいて目的のタイプのページ ヘッダーまたはフッター (最初のページ、奇数ページ、偶数ページ、または奇数/偶数ページ) を作成します。ヘッダーまたはフッターのホールをコンテンツで埋めます。
現在の
PageLayoutオブジェクトのページ ヘッダーまたはフッターの配列に、ヘッダーまたはフッターを挿入します。
このコードは、レポートのドキュメント パーツ テンプレート ライブラリに保存されたテンプレートから、最初のページのヘッダーを作成します。
import mlreportgen.dom.*; d = Document("MyReport","docx","MyReportTemplate"); open(d); pageHeaders(1) = DOCXPageHeader("first",d,"FirstPageHeader"); while ~strcmp(pageHeaders(1).CurrentHoleId,"#end#") switch pageHeaders(1).CurrentHoleId case "Date" append(pageHeaders(1),date); end moveToNextHole(pageHeaders(1)); end d.CurrentPageLayout.PageHeaders = pageHeaders; close(d); rptview(d.OutputPath);
ページ番号を挿入するには、
mlreportgen.dom.Pageオブジェクトを使用。Page [現在のページ] of [総ページ数] 形式でページ番号を挿入するには、
mlreportgen.dom.NumPagesを参照。[章 #]–[現在のページ #] 形式の複雑なページ番号を Word レポートに挿入するには、Microsoft Word での複雑なページ番号の追加を参照。
参考
関数
クラス
mlreportgen.dom.DOCXPageHeader|mlreportgen.dom.DOCXPageFooter|mlreportgen.dom.DOCXPageLayout|mlreportgen.dom.PDFPageHeader|mlreportgen.dom.PDFPageFooter|mlreportgen.dom.PDFPageLayout|mlreportgen.dom.DocumentPart|mlreportgen.dom.Document|mlreportgen.dom.Page|mlreportgen.dom.NumPages|mlreportgen.dom.StyleRef