我正在尝试将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有点夸张。这真的需要吗?如果是这样,我的安装有什么问题?
答案 0 :(得分:1)
您不需要作曲家即可使用PDFMerger。
只需从https://github.com/myokyawhtun/PDFMerger克隆原始存储库,然后将PDFMerge.php
和tcpdf
目录移到您的项目中即可。
然后您可以执行以下操作:
include 'PDFMerger.php';
$pdf = new \PDFMerger\PDFMerger;
答案 1 :(得分:1)
上述合并类已经过时,并且依赖于旧版本。只需使用最新的本机FPDI代码即可找到here。该演示向您展示了如何使用FPDI连接多个PDF文档。
您还应该在安装说明的信息文本中注意或:
别忘了先安装FPDF,TCPDF 或 tFPDF!
确保您只需要安装这些类之一。如果要串联PDF页面,则应使用FPDF。