【发布时间】:2014-12-12 09:42:08
【问题描述】:
首先我会说我可以使用 mPDF 很好地生成 PDF,但是对于我的生活,我无法将现有的 PDF 与它刚刚生成的 PDF 合并。
我需要弄清楚的是如何将现有的 PDF 附加/添加到新生成的 PDF 中。我已经尝试使用 mPDF 方法来导入页面,但我能得到的只是一个错误,例如:
mPDF error: Cannot open '/downloads/test.pdf'.
上面的消息是模棱两可的,不清楚为什么它不能打开文件...... 这是我用来尝试合并 PDF 的代码:
include_once("./pdf/mpdf/mpdf.php");
$output_file = $_GET['output_file'];
$url = $_GET['input_file'];
$technical_drawing = $_GET['tech_drawing'];
$html = file_get_contents($url);
$mpdf = new mPDF('utf-8','Letter','','',0,0,0,0,0,0,'P');
$mpdf->SetImportUse();
$pagecount = $mpdf->SetSourceFile($technical_drawing);
$tplIdx = $mpdf->ImportPage($pagecount);
$mpdf->UseTemplate($tplIdx);
$mpdf->WriteHTML($html);
$mpdf->Output($output_file, 'D');
exit;
$output_file 将是显示给用户的文件名。 $url 是我们在 PDF 生成期间写入文件的 HTML。 $technical_drawing 是我们想要与生成的 PDF 附加/合并的 PDF 的相对路径。
我知道我可以使用 ghostscript 之类的东西,但我在客户端的服务器上没有这种类型的访问权限。
如果有人使用 mPDF 找到解决方案,或者我是 S.O.L.,请告诉我。并且需要找到另一个库来进行 PDF 合并。我真的在寻找解决方案或建议,而不仅仅是指向另一个库的链接。我已经用尽了可以在 Google 或 mPDF 文档中找到的描述我遇到的错误的内容。
编辑:将 mPDF 错误从 http://example.com/pdf/example.pdf 更改为“/downloads/test.pdf”。
EDIT_2:代码已修复为采用相对路径。
这是最终的工作代码。如果有人知道如何指定将 HTML 写入 PDF 文档的顺序,将页面作为最后一页导入(自定义页面大小与 HTML 不同),将获得奖励。
include_once("./pdf/mpdf/mpdf.php");
$output_file = 'test-' . $_GET['output_file'];
$url = $_GET['input_file'];
$technical_drawing = $_GET['tech_drawing'];
$html = file_get_contents($url);
if(!file_exists($technical_drawing)) {
$mpdf = new mPDF('utf-8','Letter','','',0,0,0,0,0,0,'L');
} else {
$mpdf = new mPDF('utf-8','A3-L','','',0,0,0,0,0,0,'L');
$mpdf->SetImportUse();
$pagecount = $mpdf->SetSourceFile($technical_drawing);
$import_page = $mpdf->ImportPage();
$mpdf->UseTemplate($import_page);
// Add Last page
$mpdf->AddPageByArray(array(
'orientation' => 'P',
'ohvalue' => 1,
'ehvalue' => -1,
'ofvalue' => -1,
'efvalue' => -1,
'newformat' => 'Letter'
));
}
$mpdf->WriteHTML($html);
$mpdf->Output($output_file, 'D');
exit;
【问题讨论】:
-
网址
http://example.com/pdf/example.pdf来自哪里? -
你应该提供本地文件路径而不是 url
-
@zerkms - 抱歉,澄清一下,这不是 example.com。我的网址设置为本地路径,例如“/downloads/test.pdf”。
-
具体来说,$technical_drawing = '/downloads/test.pdf'
-
那么,有
/downloads/test.pdf路径吗?如果您打开终端并运行ls /downloads/test.pdf,您会看到什么?
标签: php merge pdf-generation mpdf