You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PHP的mPDF库为已有PDF文件添加指定页码书签求助

给已有PDF添加指定页码书签的mPDF解决方案

你的代码问题在于:仅加载了源PDF文件,但没有把源文件的页面实际添加到新创建的mPDF文档里。mPDF的Bookmark方法是针对当前文档的页码生效的,空文档加书签自然看不到效果。

修正后的代码如下:

require_once '../MPDF/mpdf.php';

// 初始化mPDF实例
$mpdf = new mPDF();
// 启用PDF导入功能
$mpdf->SetImportUse();

// 加载源PDF并获取总页数
$sourcePdf = 'testpdf.pdf';
$pageCount = $mpdf->setSourceFile($sourcePdf);

// 循环导入源PDF的每一页并添加到新文档
for ($pageNum = 1; $pageNum <= $pageCount; $pageNum++) {
    // 导入单页
    $pageId = $mpdf->ImportPage($pageNum);
    // 将导入的页面添加到新文档
    $mpdf->UseTemplate($pageId);
    
    // 给指定页码添加书签(示例:第1页加顶级书签)
    if ($pageNum === 1) {
        $mpdf->Bookmark('首页书签', 0, $pageNum);
    }
    // 可扩展:给第3页添加二级书签
    if ($pageNum === 3) {
        $mpdf->Bookmark('第三页详情', 1, $pageNum);
    }
}

// 输出保存带书签的新PDF
$mpdf->Output('new_with_bookmarks.pdf', 'F');

关键细节说明:

  • 必须通过ImportPage导入单页、UseTemplate将页面写入新文档,确保新文档有实际内容
  • Bookmark参数说明:第一个是书签名称,第二个是层级(0为顶级,数字越大层级越深),第三个是绑定的页码(mPDF页码从1开始)
  • 可根据需求在循环内添加多个页码判断,批量设置不同层级的书签

内容的提问来源于stack exchange,提问作者Avinash Kadam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 18:42:43