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插件还有很多功能,具体的后续学习,可以看看官方文档。

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