PHP fpdi合併多個PDF文件,取多個PDF特定頁數合併以及導出

在說之前,先說明一下,FPDI 插件,不能操作被 pdf 軟件編輯過的 pdf 文件。
在我們寫項目的時候,經常需要對PDF文件進行操作。例如:合併多個PDF文件,取PDF特定頁數以及合併。
PHP 有一個專門對PDF進行操作的插件,SETASIGN,官方文檔爲:
https://www.setasign.com/products/fpdi/demos/simple-demo/
首先,我們要先下載,該插件支持composer下載,具體的操作步驟,請看文檔下載:
https://packagist.org/packages/setasign/fpdi
下面實現這些功能,上代碼:
實現選取多個PDF文件的特定頁數,進行合併

<?php
use setasign\Fpdi\Tcpdf\Fpdi;
 //選取多個PDF,取第一頁導出新的PDF
    function  selectionFirstPageToNewPdf($pdf_road_datas){
        $pdf = new Fpdi();
        // 載入現在 PDF 檔案
        for($i = 0; $i < count($pdf_road_datas); $i++){
            $pdf->setSourceFile($pdf_road_datas[$i]);    //該方法的返回值爲,PDF總頁數
            $tpl = $pdf->importPage(1);                  //取出PDF第一頁
            $pdf->addPage();                             //添加到新的PDF上
            $pdf->useTemplate($tpl);                     // 在新增的頁面上使用匯入的第一頁
                                                         // 輸出成本地端 PDF 檔案
        }
        /**
         * 默認是I:在瀏覽器中打開,D:下載,F:在服務器生成pdf
         * S:只返回pdf的字符串,個人感覺無實在意義
         */
        $pdf->output("merge-articals.pdf", "D");
        // 結束 FPDI 剖析器
        $pdf->closeParsers();
        return;
    }

實現選取多個PDF文件進行合併:

<?php
use setasign\Fpdi\Tcpdf\Fpdi;
 //拼接多個PDF
    function selectionSplicingToNewPdf($pdf_road_datas){
        // 建立 FPDI 物件
        $pdf = new Fpdi();
        // 載入現在 PDF 檔案
        for($i = 0; $i < count($pdf_road_datas); $i++){
            $page_count = $pdf->setSourceFile($pdf_road_datas[$i]);
            for($pageNo = 1; $pageNo <= $page_count; $pageNo++){
                //一頁一頁的讀取PDF,添加到新的PDF
                $templateId = $pdf->importPage($pageNo);
                $size = $pdf->getTemplateSize($templateId);
                $pdf->AddPage($size['orientation'], $size);
                $pdf->useTemplate($templateId);
                $pdf->SetFont('Helvetica');
                $pdf->SetXY(5, 5);
            }
        }
        $pdf->output("merge-pdf.pdf", "D");
        // 結束 FPDI 剖析器
        $pdf->closeParsers();
        return ;
    }

SETASIGN,這個PHP插件還有很多功能,具體的後續學習,可以看看官方文檔。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章