2015-03-02 114 views
1

我使用fpdf和fpdi將pdf拆分爲不同的單頁面。一切工作正常,但PDF內的鏈接不起作用。鏈接在拆分的單個頁面上被刪除。當將多個頁面pdf拆分爲不同的單頁時,pdf內部的鏈接(超鏈接)被刪除

split_pdf("test.pdf", 'splitedpdf/'); 

function split_pdf($filename, $end_directory = false) 
{ 
    require_once('fpdf/fpdf.php'); 
    require_once('fpdi/fpdi.php'); 

    $end_directory = $end_directory ? $end_directory : './'; 
    $new_path = preg_replace('/[\/]+/', '/', $end_directory.'/'.substr($filename, 0, strrpos($filename, '/'))); 

    if (!is_dir($new_path)) 
    { 
     // Will make directories under end directory that don't exist 
     // Provided that end directory exists and has the right permissions 
     mkdir($new_path, 0777, true); 
    } 

    $pdf = new FPDI(); 
    $pagecount = $pdf->setSourceFile($filename); // How many pages? 

    // Split each page into a new PDF 
    for ($i = 1; $i <= $pagecount; $i++) { 
     $new_pdf = new FPDI(); 
     $new_pdf->AddPage(); 
     $new_pdf->setSourceFile($filename); 
     $new_pdf->useTemplate($new_pdf->importPage($i)); 

     try { 
      $new_filename = $end_directory.str_replace('.pdf', '', $filename).'_'.$i.".pdf"; 
      $new_pdf->Output($new_filename, "F"); 
      echo "Page ".$i." split into ".$new_filename."<br />\n"; 
     } catch (Exception $e) { 
      echo 'Caught exception: ', $e->getMessage(), "\n"; 
     } 
    } 
    // $pdf->close(); 
} 

回答

2

FPDI is not able to handle any dynamic content鏈接鏈接,表單域或任何其他註釋類型。有至少支持鏈接的an extension(僅與FPDI 1.4.4 + FPDF_TPL 1.2.3兼容)。

如果您需要提取包括所有附加註釋的頁面,則可以查看SetaPDF-Merger component(不是免費的!)。

+0

有沒有免費的api或庫? 我只需要將pdf與其外部鏈接拆分 – 2015-03-09 11:34:48

+0

因此,鏈接的擴展程序不適用於您? – 2015-03-09 13:04:08

+0

我剛剛嘗試過我自己的版本,並確認該版本不適用於當前版本的FPDI,但版本爲1.4.4 + FPDF_TPL(v1.2.3)。我更新了我的答案。 – 2015-03-09 13:48:18