Main Content

Word レポートのページ余白の設定

この例では、Word (DOCX) レポートでページ余白を定義する方法を示します。DOCX ページの上下左右の余白に加えて、ヘッダー、フッター、およびとじしろのサイズを定義することができます。

レポートの作成

長い完全修飾クラス名を使用せずに済むよう、DOM API 名前空間をインポートします。

import mlreportgen.dom.*;

レポートを作成して開きます。

d = Document('myreport', 'docx');
open(d);

DOCX ページ ヘッダーの作成

現在のページ レイアウト オブジェクトを取得します。

currentLayout = d.CurrentPageLayout;

DOCX ドキュメントのページ ヘッダー定義を作成します。

docxheader = DOCXPageHeader();

DOM Paragraph オブジェクトを作成し、中央揃えで太字にします。フォント サイズを 12 ポイントに設定します。これを DOCXPageHeader オブジェクトに追加します。

p = Paragraph('Sample Traffic Data in Austin');
p.Style = [p.Style, {HAlign('center'), Bold(true), FontSize('12pt')}];
append(docxheader, p);

作成した docxheader オブジェクトを現在のページ レイアウトの PageHeaders に割り当てます。

currentLayout.PageHeaders = docxheader;

本文コンテンツの作成

形式的テーブルとそのテーブル エントリで使用されるスタイル用の cell 配列を作成します。

dataTableStyle = {Border('solid'), ColSep('solid'), RowSep('solid'), Width('100%')...
    OuterMargin('0pt', '0pt', '0pt', '0pt')};

オースティンの交通カメラからいくつかのサンプル データを作成して、テーブルに含めます。次に FormalTable オブジェクトを作成し、サンプル データをヘッダー セクションと本体セクションに含めます。

dataHeader = {'Camera ID', 'Status', 'Manufacturer', 'Signal Engineer Area'};
dataBody = {'1', 'TURNED_ON', 'Spectra', 'NORTHEAST';
    '2', 'TURNED_ON', 'Sarix', 'NORTHWEST';
    '3', 'TURNED_OFF', 'Spectura', 'SOUTHWEST';
    '3', 'TURNED_ON', 'Spectura', 'NORTHEAST';
    '4', 'TURNED_ON', 'Sarix', 'SOUTHEAST';
    '5', 'TURNED_ON', 'Spectra', 'NORTHEAST';
    '6', 'TURNED_ON', 'Sarix', 'NORTHWEST';
    '7', 'TURNED_OFF', 'Spectura', 'SOUTHWEST';
    '8', 'TURNED_ON', 'Spectura', 'NORTHEAST';
    '9', 'TURNED_ON', 'Sarix', 'SOUTHEAST'};
dataTable = FormalTable(dataHeader, dataBody);
dataTable.Header.Style = [dataTable.Header.Style {Bold}];
dataTable.Style = [dataTable.Style dataTableStyle];
append(d, dataTable);

上余白とヘッダー サイズの設定

PageMargins オブジェクトの Top プロパティは、余白の高さを指定します。Header プロパティは、ページの上端からヘッダーの開始点までの距離を指定します。ページの上端からページ本体までの距離は、Top プロパティ、Header プロパティ、およびヘッダー コンテンツの高さによって異なります。たとえば、Header プロパティが Top プロパティより小さい場合、ヘッダーは上余白内で開始され、ヘッダーのコンテンツに合わせて下に拡張されます。本文は、余白またはヘッダーのいずれか大きい方の下端から始まります。

ヘッダーが Top 余白に収まるようにするには、次の設定を使用します。Top プロパティを 1 インチに設定します。1 インチは 72 ポイントに等しいので、0.25 インチは 18 ポイントに等しくなります。Header の値を 0.75 インチに設定します。残りの 0.25 インチは、作成される 12 ポイントの Paragraph を DOCX ヘッダーに収めるのに十分です。

currentLayout.PageMargins.Top = '1in';
currentLayout.PageMargins.Header = '0.75in';

DOCX ページ フッターの作成

DOCX ドキュメントのページ フッター定義を作成します。

docxfooter = DOCXPageFooter();

水平線を docxfooter オブジェクトに追加します。

append(docxfooter, HorizontalRule());

イメージを docxfooter オブジェクトに追加します。DOM の ScaleToFit 書式を使用して、ページに収まるようにイメージをスケーリングします。作成した docxfooter オブジェクトを現在のページ レイアウトの PageFooters に割り当てます。

imgStyle = {ScaleToFit(true), HAlign('right'), Height('0.30in')};
img = Image('Logo_footer.Png');
img.Style = imgStyle;
append(docxfooter, img);
currentLayout.PageFooters = docxfooter;

下余白とフッター サイズの設定

PageMargins オブジェクトの Bottom プロパティは、ページ余白の高さを指定します。Footer プロパティは、ページの下端からフッターの下端までの距離を指定します。ページの下端からページ本体までの距離は、Bottom プロパティと Footer プロパティの設定、およびフッター コンテンツの高さによって異なります。たとえば、Footer プロパティが Bottom プロパティより小さい場合、フッターは下余白内で開始され、フッターのコンテンツを拡張するために上に拡張されます。本文は、余白またはフッターのいずれか大きい方の上端から始まります。

Bottom プロパティ値を 1 インチに設定します。高さ 0.30 インチの Image と作成される水平線を DOCX フッター内に収めるには、Footer プロパティの値を 0.5 インチに設定します。

currentLayout.PageMargins.Bottom = '1in';
currentLayout.PageMargins.Footer = '0.5in';

左余白、右余白、およびとじしろのサイズの設定

この例では、Gutter 設定を使用して、ページの左側にレポートをバインディングするための空間を残します。Gutter サイズは 0.25 インチに設定され、Left 余白は 0.5 インチに設定されます。したがって、コンテンツはページの左側から 0.75 インチのところ (左余白 + とじしろ) から始まります。Right 余白は 0.5 インチに設定されます。

currentLayout.PageMargins.Gutter = '0.25in';
currentLayout.PageMargins.Left = '0.5in';
currentLayout.PageMargins.Right = '0.5in';

レポートを生成して表示します。

close(d);
rptview(d.OutputPath);