PHP:在没有作曲家的情况下合并PDF?

时间:2019-02-15 18:39:08

标签: php pdf

我正在尝试将PDF文档与PHP合并,并且进行了大量搜索并尝试了几种解决方案。似乎最常见的方法是使用 FPDI 库,然后使用诸如PDF-Merger之类的小类。

但是问题是该库依赖于其他库以及其他库,依此类推。安装示例主要是如何使用composer进行安装。但是我想能够为不使用作曲家的网站合并pdf。似乎真的很难实现。

由于manual,如果我不想使用作曲家,唯一要做的就是在安装库时将此代码写到您的代码中:

require_once('path/to/src/autoload.php');

当然,具有正确的路径。但是,不,这对我没有用。找不到fpdi类。而且,如果您再次查看该手册,则会看到以下警告:

  

别忘了先安装FPDF,TCPDF或tFPDF!

因此,我手动下载了这三个库,并且如果没有作曲家,这些库也很难安装。并且仍然陷于这种混乱之中。通过将PDFMerger.php文件从use fpdi\FPDI;更改为\setasign\Fpdi\Fpdi,我取得了一些成功。因此,现在找到了Fpdi类。但是仍然会出错。

让我告诉您当前的情况。 这是我当前的代码:

<?php
require_once get_stylesheet_directory().'/classes/fpdf/fpdf.php';
require_once get_stylesheet_directory().'/classes/tfpdf/tfpdf.php';

require_once get_stylesheet_directory().'/classes/tcpdf/src/Output.php';
require_once get_stylesheet_directory().'/classes/tcpdf/src/MetaInfo.php';
require_once get_stylesheet_directory().'/classes/tcpdf/src/ClassObjects.php';
require_once get_stylesheet_directory().'/classes/tcpdf/src/Tcpdf.php'; 

require_once get_stylesheet_directory().'/classes/FPDI/src/autoload.php';
require_once get_stylesheet_directory().'/classes/FPDI/src/Fpdi.php';

require_once get_stylesheet_directory().'/classes/PDFMerger/PDFMerger.php';

$pdf = new \Clegginabox\PDFMerger\PDFMerger;
$pdf->addPDF('path/to/file1.pdf', 'all', 'P');
$pdf->addPDF('path/to/file2.pdf', 'all', 'P');
$pdf->merge();
?>

这是浏览器中的错误消息:

  

注意:未定义索引:w in   /home/public_html/wp-content/themes/my-theme/classes/PDFMerger/PDFMerger.php   在第85行

     

注意:未定义索引:h in   /home/public_html/wp-content/themes/my-theme/classes/PDFMerger/PDFMerger.php   在第85行

     

注意:未定义索引:w in   /home/public_html/wp-content/themes/my-theme/classes/PDFMerger/PDFMerger.php   在第85行

     

注意:未定义索引:h in   /home/public_html/wp-content/themes/my-theme/classes/PDFMerger/PDFMerger.php   在第85行

     

致命错误:未捕获的异常:FPDF错误:已经有一些数据   已输出,无法发送PDF文件   /home/public_html/wp-content/themes/my-theme/classes/fpdf/fpdf.php:271   堆栈跟踪:#0   /home/public_html/wp-content/themes/my-theme/classes/fpdf/fpdf.php(1063):   FPDF->错误('某些数据有一个...')#1   /home/public_html/wp-content/themes/my-theme/classes/fpdf/fpdf.php(999):   FPDF-> _ checkoutput()#2   /home/public_html/wp-content/themes/my-theme/classes/PDFMerger/PDFMerger.php(107):FPDF->Output('I','newfile.pdf')#3   /home/public_html/wp-content/themes/my-theme/functions.php(269):   Clegginabox \ PDFMerger \ PDFMerger-> merge()#4   /home/public_html/wp-includes/class-wp-hook.php(286):   cdon_woocommerce_loaded('')#5   / home / public_html / wp-includes / cla   在   /home/public_html/wp-content/themes/my-theme/classes/fpdf/fpdf.php   在第271行

您会看到PDFMerger.php here,第85行是这样:

$fpdi->AddPage($fileorientation, array($size['w'], $size['h']));

我的意思是,我认为将所有这些依赖项合并为pdf有点夸张。这真的需要吗?如果是这样,我的安装有什么问题?

2 个答案:

答案 0 :(得分:1)

您不需要作曲家即可使用PDFMerger。

只需从https://github.com/myokyawhtun/PDFMerger克隆原始存储库,然后将PDFMerge.phptcpdf目录移到您的项目中即可。

然后您可以执行以下操作:

include 'PDFMerger.php';

$pdf = new \PDFMerger\PDFMerger;

答案 1 :(得分:1)

上述合并类已经过时,并且依赖于旧版本。只需使用最新的本机FPDI代码即可找到here。该演示向您展示了如何使用FPDI连接多个PDF文档。

您还应该在安装说明的信息文本中注意

  

别忘了先安装FPDF,TCPDF tFPDF!

确保您只需要安装这些类之一。如果要串联PDF页面,则应使用FPDF。