内部リンク

広告

PDFドキュメント内の他の場所へリンクを貼る内部リンクの設定方法について確認します。外部リンクの場合にはWriteメソッドの3番目の引数にリンク先のURLを指定しましたが、内部リンクの場合はFPDFクラスで用意されているAddLinkメソッドを先に実行し、その結果取得した戻り値をリンク先として設定します。

それではFPDFクラスで用意されている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メソッドを実行することでリンク先を設定します。

ページとリンクが飛ぶ先の位置を指定します。

パラメータ:
  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ページ目に追加したテキストに内部リンクへのリンクを設定しています。

サンプルプログラム

では簡単なサンプルで試してみます。

sample2-1.php

<?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 )