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