13.4. ドキュメントのページ

PDF ドキュメントのページの抽象化を行うのが Zend_Pdf_Page クラスです。

PDF ページは既存の PDF から読み込むこともできますし、 新しく作成することもできます。

新しいページを取得するには、直接 Zend_Pdf_Page オブジェクトを作成するか、Zend_Pdf::newPage() メソッドをコールします。このメソッドは Zend_Pdf_Page オブジェクトを返します。Zend_Pdf::newPage() の場合は、すでにドキュメントにアタッチされているページを作成するという点が異なります。 こうするとそのページを複数の PDF ドキュメントで使いまわすことができませんが、 多少高速になります [4]。どちらの手法を使用するかはあなたしだいです。

Zend_Pdf::newPage() メソッドおよび Zend_Pdf_Page のコンストラクタは、どちらも同じ形式のパラメータを受け取ります。 ページサイズを ($x, $y) 形式のポイント数 (1/72 インチ) で表したものか、定義済みの定数のうちのいずれかになります。 以下の定数が定義されています。

ドキュメントのページは、Zend_Pdf クラスの public メンバである $pages に保存されます。これは Zend_Pdf_Page オブジェクトの配列です。これによってページの並び順も定義され、 一般的な配列と同じように操作することができます。

例 13.4. PDF ドキュメントのページの操作

<?php
...
// ページの並び順を反転します。
$pdf->pages = array_reverse($pdf->pages);
...
// 新しいページを追加します。
$pdf->pages[] = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4);
// 新しいページを追加します。
$pdf->pages[] = $pdf->newPage(Zend_Pdf_Page::SIZE_A4);

// 指定したページを削除します。
unset($pdf->pages[$id]);

...
?>


[4] これは Zend_Pdf モジュールのバージョン 1.0 の制限事項であり、 将来のバージョンではなくなる予定です。しかし、ドキュメント間で ページを共有するには、アタッチされていないページのほうが 常によい結果となるでしょう。