2013-05-07 38 views
2

我必須合併一些PDF文件與超鏈接裏面。與mPDF合併很好,但輸出文件中沒有超鏈接!只剩下文字。爲什麼使用mPDF合併PDF文件後超鏈接丟失?

require_once('./mpdf/mpdf.php'); 

$mpdf = new mPDF('utf-8', 'A4', '8', '', 10, 10, 7, 7, 10, 10); 
$mpdf->SetImportUse(); 

$pagecount = $mpdf->SetSourceFile('./static_files/01_file.pdf'); 
$tplId = $mpdf->ImportPage(1); 
$mpdf->UseTemplate($tplId); 
$mpdf->WriteHTML(); 

$pagecount = $mpdf->SetSourceFile('02_SourceFile.pdf'); 
for ($i=1;$i<$pagecount;$i++) { 
    $mpdf->AddPage(); 
    $tplId = $mpdf->ImportPage($i); 
    $mpdf->UseTemplate($tplId); 
    $mpdf->WriteHTML(); 
} 

$pagecount = $mpdf->SetSourceFile('./static_files/03_file.pdf'); 
for ($i=1;$i<=$pagecount;$i++) { 
    $mpdf->AddPage(); 
    $tplId = $mpdf->ImportPage($i); 
    $mpdf->UseTemplate($tplId); 
    $mpdf->WriteHTML(); 
} 

$mpdf->Output('Output.pdf', '', 'F'); 

文件01_file.pdf,03_file.pdf是靜態的(它miens他們使用桌面工具,如Acrobat或LibreOffice的創建)和02_SourceFile.pdf被TCPDF創建。他們所有的三個文件都包含具有活動超鏈接的頁面,但合併後沒有活動的超鏈接,只有每個文件的標題文本。

出了什麼問題?或者如何使用其他PHP工具合併PDF文件(僅使用跨平臺工具和首選PHP非常重要)。

+0

我發現一個腳本,實現鏈接支持FPDI,這是用在mPDF這是我現在發現的PHP的最佳解決方案。這裏是:[link](https://gist.github.com/andreyvit/2020422#file-fpdi_with_annots-php)現在我正在研究如何使它與mPDF一起工作,所以需要任何幫助。 – user1173016 2013-07-20 08:23:16

+0

我知道這是非常古老的,但如果有人需要它,你需要的是在你的mPDF安裝的根目錄下創建一個新文件,並將其稱爲你想要的。 其中包括文件mpdf.php一次,並從上面提供的鏈接複製類FPDI_with_annots(https://gist.github.com/andreyvit/2020422#file-fpdi_with_annots-php) 修改該類,使其擴展mPDF的FPDI。 現在,當您要使用mpdf時,請調用新創建的文件並使用fpdi_with_annots類而不是mPDF。像使用mPDF一樣使用它,它會工作,並保存你的鏈接。 – 2015-05-02 14:52:32

回答

0

您可以輕鬆地將PDF與QPDF或PDFTK合併,這些都是免費工具。他們不是PHP,但您可以輕鬆地爲他們編寫一個PHP包裝器,並在Linux中運行。

我個人更喜歡QPDF,因爲它保留內容並且不會混淆任何元標記,而PDFTK喜歡設置作者。

看一看the QPDF site at sourceforge

+0

主要問題是我在Linux上開發一個基於Windows的Web服務器的單元。 mPDF很好,但我可以找出爲什麼它殺死超鏈接。 – user1173016 2013-05-08 05:26:15

-1

@ user1173016

你需要使用的<=

for ($i=1;$i<=$pagecount;$i++) { 

代替<

for ($i=1;$i<$pagecount;$i++) { 

,因爲你將失去第一頁在第二種情況下,並且如果$pagecount = 1你什麼都不會輸入。