PHP中使用FPDF:如何创建跨页链接(如从第1页到第6页指定位置)
FPDF跨页链接(先占位后绑定)解决方案
FPDF本身支持通过先创建链接占位符,后续绑定目标的方式解决这个问题,具体步骤如下:
先初始化一个未关联目标的链接ID,调用
SetLink()时不传入目标页码和坐标,仅获取返回的链接ID:$targetLinkId = $pdf->SetLink();在第1页(或任何提前生成的页面)创建点击区域,直接使用这个占位符ID作为链接目标:
$pdf->AddPage(); // 定义点击区域:x坐标、y坐标、宽度、高度、链接ID $pdf->Link(10, 20, 80, 12, $targetLinkId); $pdf->Cell(80, 12, '点击跳转至第6页指定位置');生成到目标页面(第6页)的指定位置时,重新调用
SetLink(),传入之前的链接ID、当前的y坐标和页码,完成绑定:$pdf->AddPage(); // 第6页 // 输出内容直到目标位置 $pdf->Cell(0, 10, '第6页前置内容'); $pdf->Ln(30); // 模拟内容间隔,到达目标位置 $pdf->Cell(0, 10, '这是跳转的目标位置'); // 绑定占位符到当前位置 $pdf->SetLink($targetLinkId, $pdf->GetY(), $pdf->PageNo());
关键原理
FPDF的SetLink()方法有两种用法:
- 不带目标参数时,生成一个空的链接ID,作为占位符;
- 传入已存在的链接ID时,会将该ID关联到指定的页码和y坐标,覆盖之前的占位状态。
这种方式无需提前知道目标页面的坐标,完全适配先建链接后生成目标页面的场景。
内容的提问来源于stack exchange,提问作者Sempervivum
相关产品推荐
相关产品推荐

