【问题标题】:Merge several pdf files合并几个pdf文件
【发布时间】:2017-04-05 10:15:09
【问题描述】:

我想合并几个 pdf 文件。我该怎么做?

我目前拥有的是这个。

我正在尝试使用这个包 myokyawhtun/PDFMerger。

    include base_path('vendor/myokyawhtun/pdfmerger/PDFMerger.php');

    $pdf = new \PDFMerger;

    $pdf->addPDF(public_path('doc/uploads/doc_1.pdf'), 'all');
    $pdf->addPDF(public_path('doc/uploads/doc_2.pdf'), 'all');

    $pdf->merge('file', public_path('doc/files/test.pdf'));

错误因我尝试合并的文件而异。

  • 如果我尝试将同一个 pdf 合并两次,则会生成文件但全为空白。
  • 如果我尝试使用上面的代码,我会收到 HTTP ERROR 500。
  • 如果我尝试使用更多文件,我会收到 tcpdi_parser - Out of memory 错误。

底线是它似乎不起作用。

我已经尝试过其他几个使用 FPDI 的软件包。问题是它仅适用于等于或低于 1.4 的 pdf 版本(如果我没记错的话)。因此,使用其中任何一个似乎都不是一种选择。

我很清楚这个问题已经被问过了,但似乎没有一个解决方案有效。

【问题讨论】:

  • 收到 HTTP 500 错误时的错误详细信息或跟踪列表是什么?
  • 好像没有=/。我查看了我的 nginx error.log,没有任何相关内容。只是来自chrome的错误代码。我将尝试查看其他地方,看看是否在某处记录了错误。
  • 基本上——“允许的内存大小为 536870912 字节已用尽”

标签: php laravel pdf


【解决方案1】:

您可以尝试使用exec 调用外部工具

exec("convert -density 300x300 -quality 100 " 
    . public_path('doc/uploads/doc_1.pdf') . " "
    . public_path('doc/uploads/doc_2.pdf') . " "
    . public_path('doc/uploads/merged.pdf')

查看除转换之外的其他可能工具:here

警告:请记住,调用exec 通常不是一个好主意,由于潜在的安全漏洞,您应该尽量避免它。绝对安全,public_path 函数不能从用户输入中注入恶意命令!

【讨论】:

  • Public_path 对用户不可用,因此应该可以找到。我稍微调整了你的答案。我安装了'poppler-utils'(sudo apt-get install poppler-utils)并用'exec(“pdfunite”'替换你的第一行。效果很好,性能很好。
猜你喜欢
  • 2018-03-30
  • 2012-06-16
  • 2020-12-27
  • 2019-02-08
  • 2011-03-27
  • 2013-06-10
  • 2014-10-27
  • 2013-04-02
相关资源
最近更新 更多