$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$PDF_FILE=file_get_contents("C:/Users/TEST/TEST.pdf");
$pdf->Bookmark('Chapter 1', 0, 0, '', 'B', array(0,128,0),'',$PDF_FILE);
想請問各位大大,要將sever上的pdf用程式新增書籤,
有找到TCPDF,當中的Bookmark參數最後一個link指的是要新增書籤的檔案路徑嗎?
測試好幾次新增書籤都失敗,想請教各位大大。
如有誤會,請再多多指教謝謝
setasign/fpdi 確定可以用
他的原理是繼承原有的 pdf library,再添加內嵌其他 pdf 頁面的 method
以下範例用到的 pdf: 03-111學測數學a試卷定稿.pdf
composer.json
{
"require": {
"tecnickcom/tcpdf": "6.3.*",
"setasign/fpdi": "^2.0"
}
}
test.php
<?php
require('vendor/autoload.php');
use setasign\Fpdi\Tcpdf\Fpdi;
$pdf = new Fpdi();
// 移除 header 與 footer(繼承自 TCPDF)
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
// 指定要被匯入的檔案,並取得總頁數
$pageCount = $pdf->setSourceFile("03-111學測數學a試卷定稿.pdf");
for ($i = 0; $i < $pageCount; ++$i) {
// 匯入頁面,注意是從 1 開始算
$tplId = $pdf->importPage($i + 1);
// 取得匯入那頁的長寬
$szInfo = $pdf->getImportedPageSize($tplId);
// 增加一頁,並設定長寬(AddPage 繼承自 TCPDF)
$pdf->AddPage($szInfo['orientation'], [$szInfo['width'], $szInfo['height']]);
// 把這頁「畫上去」
$pdf->useTemplate($tplId);
}
// 添加書籤(繼承自 TCPDF),第三個參數是 y 位置,抓個大概而已
$pdf->Bookmark('選擇題', 0, 0, 2);
$pdf->Bookmark('多選題', 0, 297 / 2, 3);
$pdf->Bookmark('選填題', 0, 297 / 3 - 20, 5);
$pdf->Output();