【发布时间】:2019-07-09 22:46:52
【问题描述】:
我正在尝试将 PDF 文档与 PHP 合并,并进行了很多搜索并尝试了几种解决方案。似乎最常见的是使用 FPDI 库,然后使用像 PDF-Merger 这样的小类。
但问题是该库依赖于其他库以及其他库的那些库等等。安装示例主要是如何使用composer安装。但我希望能够为不使用作曲家的网站合并 pdf。而且似乎真的很难做到。
由于manual,如果我不想使用作曲家,唯一要做的就是将其写入您的代码作为库的安装:
require_once('path/to/src/autoload.php');
当然,用正确的路径。但是不,这对我不起作用。找不到 fpdi 类。如果您再次查看手册,您会看到以下警告:
别忘了之前安装 FPDF、TCPDF 或 tFPDF!
所以我手动下载了这三个库,而且如果没有 Composer,这些库也很难安装。并且仍然被困在这个烂摊子中。通过将 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->Error('Some data has a...') #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 有点夸张。这真的需要吗?如果是这样,我的安装有什么问题?
【问题讨论】:
-
开始听起来好像只是使用作曲家?将其添加到现有项目中并不难
-
@Clive 但是我真的需要所有这些库来合并 pdf 文件吗?我错过了什么吗?我最好不要使用作曲家。我不习惯在服务器上安装东西,而且,如果我无法访问所有目录,这个站点位于共享主机上。我只想.. 喜欢.. 在没有作曲家的情况下这样做......
-
PDF 处理很麻烦。可以说,历史上积累的 PHP 实现并没有多大帮助。但也有用于该任务的命令行工具。 // 你确实意识到真正的问题是缺少介于两者之间的大小参数?
-
Composer 在本地单独的目录中完全可以正常工作。不,也许这些依赖项是假的或不必要的,例如以前开发的剩余部分,或者只需要您不需要的功能。通常,欢迎您提供减少这些依赖关系的拉取请求。