使用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
相关产品推荐
相关产品推荐

