PHP 合併 PDF
PHP 有幾種不同的方法來合併多個 PDF。
長期以來,Ghostscript
是通過 PHP 執行 PDF 操作最常用的方式。
FPDI
也是一個 PHP 庫,在 PHP 中提供 PDF 操作。
可以通過兩種方式合併多個 PDF。本教程演示如何在 PHP 上安裝和執行這些庫以合併 PDF 檔案。
在 PHP 中使用 Ghostscript
合併多個 PDF 檔案
Ghostscript
是一個沒有內建在 Windows 上的命令列庫。首先,我們需要從連結 https://ghostscript.com/releases/gsdnld.html
安裝 Ghostscript
。
根據你的作業系統版本下載 Ghostscript
檔案。該檔案將是這樣的:
gs9550w64.exe
執行下載的檔案並安裝它。安裝完成後,轉到安裝目錄的 bin 資料夾並將檔案 gswin64c.exe
重新命名為 gs.exe
以使用 gs 作為命令。
Ghostscript
的安裝完成。下一步是使用 PHP 將 pdf 檔案與 Ghostscript
合併。
<?php
$files= array("one.pdf","two.pdf","three.pdf");
$pdfdir = "C:/Apache24/htdocs/samplepdfs/";
//we gave absolute path because sometimes the libraries can't detect the path. Please use your path here.
$output = $pdfdir."NewMergedPDF.pdf";
$cmd = "gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=".$output." -dBATCH ";
//setting enviroment variable path
putenv('PATH=C:\Program Files\gs\gs9.55.0\bin');
foreach($files as $file) {
//Setting path for each file
$pdf= $pdfdir.$file;
//adding each file to the command
$cmd = $cmd.$pdf." ";
}
// The final command will be the comment below, if you run this command directly in cmd, the output will be similar
//gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=C:/Apache24/htdocs/samplepdfs/NewMergedPDF.pdf -dBATCH C:/Apache24/htdocs/samplepdfs/one.pdf C:/Apache24/htdocs/samplepdfs/two.pdf C:/Apache24/htdocs/samplepdfs/three.pdf
exec($cmd);
?>
上面的程式碼將三個 PDF 檔案作為輸入,並將它們合併為一個 PDF。
輸出:
在 PHP 中使用 FPDF
和 FPDI
庫合併多個 PDF
首先,我們需要從下面的連結下載 FPDF
和 FPDI
庫。
下載 zip 或任何其他檔案後,將它們從執行你的 test.php
檔案中解壓縮到資料夾中。
提取檔案後,執行以下示例:
<?php
//import fpdi and fpdf files
use setasign\Fpdi\Fpdi;
require_once('fpdf/fpdf.php');
require_once('fpdi/src/autoload.php');
//create your class to merge pdfs
class MergePdf extends Fpdi
{
public $pdffiles = array();
public function setFiles($pdffiles)
{
$this->pdffiles = $pdffiles;
}
//function to merge pdf files using fpdf and fpdi.
public function merge()
{
foreach($this->pdffiles AS $file) {
$pdfCount = $this->setSourceFile($file);
for ($pdfNo = 1; $pdfNo <= $pdfCount; $pdfNo++) {
$pdfId = $this->ImportPage($pdfNo);
$temp = $this->getTemplatesize($pdfId);
$this->AddPage($temp['orientation'], $temp);
$this->useImportedPage($pdfId);
}
}
}
}
$Outputpdf = new MergePdf();
//we gave absolute path because sometimes the libraries can't detect the path. Please use your path here.
$Outputpdf->setFiles(array('C:\Apache24\htdocs\samplepdfs\one.pdf', 'C:\Apache24\htdocs\samplepdfs\two.pdf', 'C:\Apache24\htdocs\samplepdfs\three.pdf'));
$Outputpdf->merge();
//I: The output pdf will run on the browser
//D: The output will download a merged pdf file
//F: The output will save the file to a particular path.
//We select the default I to run the output on the browser.
$Outputpdf->Output('I', 'Merged PDF.pdf');
?>
上面的程式碼將匯入 fpdi
和 fpdf
庫併合並 pdf 檔案。輸出將是在瀏覽器上執行的合併 pdf。
輸出:
其他庫也可以對 PDF 執行類似的操作,但 Ghostscript
和 Fpdi
是使用最廣泛的兩個。
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn Facebook