今回は TCPDF で出力するPDFファイルにブックマーク(しおり)を設定する方法について説明します。
ブックマーク設定を行う為には、ブックマークを付加したいところで Bookmark メソッドの呼出を行います。
ここであらためて、Bookmark メソッドの引数について説明を記します。
1 2 3 4 5 6 7 8 9 10 11 12 13 | // Bookmarkメソッド public function Bookmark( $txt , $level =0, $y =-1, $page = '' , $style = '' , $color = array (0,0,0), $x =-1, $link = '' ) // $txt : ブックマークの文言 // $level : ブックマークレベル(最小値は「0」) // $y : ブックマークのY位置(現在選択されているページでPDFの設定単位での指定) // ([-1]:デフォルトで現在位置、[0]:ページ先頭) // $page : 対象ページ('':現在ページ) // $style : フォントスタイル('B':Bold, 'I':Italic, 'BI':Bold + Italic) // $color : RGB color array (values from 0 to 255) // $x : ブックマークのX位置(現在選択されているページでPDFの設定単位での指定) // ( [-1]:デフォルトで現在位置) // $link : URL、数値リンクID、名前付け識別子、 // 埋込ファイルの指定("*"+ファイル名:一般ファイル、"%"+ファイル名:PDFファイル) |
本の紹介では...
PHP8の基本構文から、クラス、DB連携、セキュリティ対策まで、しっかり習得。
PHPプログラミングの標準教科書『独習PHP』が、最新のPHP8に対応。
PHPでWebページ/アプリケーションを開発する際に必要な基礎的な知識、
PHPの基本構文から、クラス、データベース連携、セキュリティまで、詳細かつ丁寧に解説します。
...
以下に簡単な例を記します。
■Bookmark メソッドを使用したブックマークの出力
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | <?php require_once ( '../tcpdf/tcpdf.php' ); // クラス生成 $pdf = new TCPDF(); // 日本語フォント $pdf ->setFont( 'kozgopromedium' , '' , 16); // ブックマークレベルのX座標位置 $arrLevelXPos = [10, 20, 30]; // ブックマークレベルの表示文字列の色 $arrLevelColor = [ [ 0, 64,128], [ 64,128, 0], [ 64, 0,128] ]; // 新規ページ $pdf ->AddPage(); // ブックマーク設定 $pdf ->Bookmark( '第1章' , 0, 10, '' , 'B' , $arrLevelColor [0]); // ブックマーク設定位置にテキスト表示 $pdf ->MultiCell( 0, 10, '第1章テスト...' , 0, 'L' , false, 0, $arrLevelXPos [0], 10); $pdf ->Bookmark( '第1節' , 1, 50, '' , 'B' , $arrLevelColor [1]); $pdf ->MultiCell( 0, 10, '第1節テスト...' , 0, 'L' , false, 0, $arrLevelXPos [1], 50); $pdf ->Bookmark( '第1項' , 2, 100, '' , 'B' , $arrLevelColor [2]); $pdf ->MultiCell( 0, 10, '第1項テスト...' , 0, 'L' , false, 0, $arrLevelXPos [2], 100); $pdf ->Bookmark( '第2項' , 2, 150, '' , 'B' , $arrLevelColor [2]); $pdf ->MultiCell( 0, 10, '第2項テスト...' , 0, 'L' , false, 0, $arrLevelXPos [2], 150); // 新規ページ $pdf ->AddPage(); $pdf ->Bookmark( '第2節' , 1, 10, '' , 'B' , $arrLevelColor [1]); $pdf ->MultiCell( 0, 10, '第2節テスト...' , 0, 'L' , false, 0, $arrLevelXPos [1], 10); $pdf ->Bookmark( '第1項' , 2, 50, '' , 'B' , $arrLevelColor [2]); $pdf ->MultiCell( 0, 10, '第1項テスト...' , 0, 'L' , false, 0, $arrLevelXPos [2], 50); // 新規ページ $pdf ->AddPage(); $pdf ->Bookmark( '第2章' , 0, 10, '' , 'B' , $arrLevelColor [0]); $pdf ->MultiCell( 0, 10, '第2章テスト...' , 0, 'L' , false, 0, $arrLevelXPos [0], 10); $pdf ->Bookmark( '第1節' , 1, 100, '' , 'B' , $arrLevelColor [1]); $pdf ->MultiCell( 0, 10, '第1節テスト...' , 0, 'L' , false, 0, $arrLevelXPos [1], 100); $pdf ->Bookmark( '第2節' , 1, 150, '' , 'B' , $arrLevelColor [1]); $pdf ->MultiCell( 0, 10, '第2節テスト...' , 0, 'L' , false, 0, $arrLevelXPos [1], 150); // PDFファイル出力 $pdf ->Output( 'pdf-bookmark-1.pdf' , 'D' ); ?> |
特にソースは難しくはありません。 ブックマークを設置したいところで Bookmark メソッドを実行し、その後で同じ場所にテキストなどを表示します。 これを実行した時に「pdf-bookmark-1.pdf」ファイルが登録されます。
そのファイルを Acrobat Reader で開くと、以下の様な表示がされます。 画面左に「ブックマーク」を表示させて全ての「ブックマーク」を開いたところです。
この表示の中で「第1章」「第1節」「第1項」をクリックすると、当然ですが表示位置が移動します。
■Annotation メソッドで埋め込んだファイルのブックマーク
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | <?php require_once ( '../tcpdf/tcpdf.php' ); // クラス生成 $pdf = new TCPDF(); // 日本語フォント $pdf ->setFont( 'kozgopromedium' , '' , 16); // ブックマークレベルのX座標位置 $arrLevelXPos = [10, 20, 30]; // ブックマークレベルの表示文字列の色 $arrLevelColor = [ [ 0, 64,128], [ 64,128, 0], [ 64, 0,128] ]; // 新規ページ $pdf ->AddPage(); // ブックマークTEST $pdf ->Bookmark( '第1章' , 0, 10, '' , 'B' , $arrLevelColor [0]); $pdf ->MultiCell( 0, 10, '第1章テスト...' , 0, 'L' , false, 0, $arrLevelXPos [0], 10); $pdf ->Bookmark( '第1節' , 1, 50, '' , 'B' , $arrLevelColor [1]); $pdf ->MultiCell( 0, 10, '第1節テスト...' , 0, 'L' , false, 0, $arrLevelXPos [1], 50); // テキストファイルのアタッチ $pdf ->Annotation(20, 50, 5, 5, 'TEXT file' , array ( 'Subtype' => 'FileAttachment' , 'Name' => 'PushPin' , 'FS' => 'test.txt' )); // 埋め込みファイルのブックマーク(先頭"*"は一般ファイル) $pdf ->Bookmark( 'TXT file' , 0, 0, '' , 'B' , $arrLevelColor [2], -1, '*test.txt' ); // PDFファイルのアタッチ $pdf ->Annotation(50, 50, 5, 5, 'PDF file' , array ( 'Subtype' => 'FileAttachment' , 'Name' => 'PushPin' , 'FS' => 'pdf-bookmark-1.pdf' )); // 埋め込みファイルのブックマーク(先頭"%"はPDF) $pdf ->Bookmark( 'PDF file' , 0, 0, '' , 'B' , $arrLevelColor [2], -1, '%pdf-bookmark-1.pdf' ); // PDFファイル出力 $pdf ->Output( 'pdf-bookmark-2.pdf' , 'D' ); ?> |
ファイルのブックマークを作成する場合は Annotation メソッドでファイルを埋め込み指定を行い、 その後で Bookmark メソッドを実行する様です。
以下に実行結果のPDFファイルを開いたところを示します。 なお、ブックマークの「TXT file」をクリックするとテキストファイルとしてエディタソフトで表示されます。
ショッピングサイト一通りを最初から自分で作ってみることで、PHPでのシステム開発を学べる入門書です。
コメント