- Home ›
- FPDFを使ったPDF作成 ›
- リンクの設定 ›
- HERE
内部リンク
PDFドキュメント内の他の場所へリンクを貼る内部リンクの設定方法について確認します。外部リンクの場合にはWriteメソッドの3番目の引数にリンク先のURLを指定しましたが、内部リンクの場合はFPDFクラスで用意されているAddLinkメソッドを先に実行し、その結果取得した戻り値をリンク先として設定します。
それではFPDFクラスで用意されているAddLinkメソッドについて確認します。
int AddLink()
新規に内部リンクを生成し、その識別子を返します。内部リンクは現在のドキュ メント内の別の場所を指すクリック可能なエリアのことです。 戻り値: 識別子
メソッドを実行すると内部リンク先として使用可能な識別子を返します。この識別子をWriteメソッドの3番目の引数に設定して下さい。
実際には次のように記述します。
<?php require('fpdf/mbfpdf.php'); $pdf = new MBFPDF(); $pdf->AddMBFont(GOTHIC ,'SJIS'); $pdf->AddPage(); $pdf->SetFont(GOTHIC,'',20); $link = $pdf->AddLink(); $pdf->Write(10, '内部リンクへ', $link); $pdf->Output(); ?>
次にリンク先の設定を行います。リンク識別子を引数にしFPDFクラスで用意されているSetLinkメソッドを実行することでリンク先を設定します。
SetLink(int link [, float y [, int page]])
ページとリンクが飛ぶ先の位置を指定します。 パラメータ: link リンク識別子 y 飛び先のy座標 page 飛び先のページ番号
1番目の引数にリンク識別子を指定します。ここで指定したリンク識別子のリンク先を設定することになります。
2番目の引数にリンク先のY座標を指定します。デフォルトの値は0でページの上端にリンク先が設定されます。-1を指定した場合は現在の位置のY座標が設定されます。
3番目の引数にリンク先のページ番号を指定します。デフォルトの値は-1で現在のページ番号となります。
SetLinkメソッドでリンク先を設定する場合は、リンク先のページや位置でメソッドを実行してリンク先を設定するか、ページ番号やY座標を個別に指定してリンク先を設定するかのどちらかの方法になるかと思います。
実際には次のように記述します。
<?php require('fpdf/mbfpdf.php'); $pdf = new MBFPDF(); $pdf->AddMBFont(GOTHIC ,'SJIS'); $pdf->AddPage(); $pdf->SetFont(GOTHIC,'',20); $link = $pdf->AddLink(); $pdf->Write(10, '2ページ目へ', $link); $pdf->AddPage(); $pdf->SetLink($link); $pdf->Write(10, '2ページ目です'); $pdf->Output(); ?>
今回は2ページ目を追加し、その先頭に内部リンク先を設定しています。そして1ページ目に追加したテキストに内部リンクへのリンクを設定しています。
サンプルプログラム
では簡単なサンプルで試してみます。
<?php require('fpdf/mbfpdf.php'); $pdf=new MBFPDF('P', 'mm', 'A4'); $pdf->AddMBFont(GOTHIC ,'SJIS'); $pdf->AddPage(); $pdf->SetFont(GOTHIC,'',20); $link_one = $pdf->AddLink(); $link_two = $pdf->AddLink(); $pdf->SetLink($link_one, -1); $pdf->Write(10, '2ページへ', $link_two); $pdf->AddPage(); $pdf->SetLink($link_two, -1); $pdf->Write(10, '1ページへ', $link_one); $pdf->Output(); ?>
上記のファイルをWWWサーバのドキュメントルート以下に設置しブラウザからアクセスすると次のように表示されます。
2つのページがあるPDFドキュメントを作成し、各ページにテキストを追加しています。そしてそれぞれのテキストに対して別のページへのリンクを設定しています。
リンクをクリックすると設定された内部リンク先へ移動します。
( Written by Tatsuo Ikura )