2017-04-05 173 views
0

我想合併幾個pdf文件。我怎樣才能做到這一點 ?合併幾個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錯誤500.
  • 如果我嘗試更多的文件,我得到tcpdi_parser - 內存不足錯誤。

底線是它似乎沒有工作。

我已經嘗試了其他幾個使用FPDI的軟件包。問題是,它只適用於pdf版本等於或低於1.4(如果我沒有弄錯)。所以使用這些似乎並不是一種選擇。

我很清楚,這個問題已經被問到,沒有一個解決方案似乎工作。

+0

獲取HTTP 500錯誤時,錯誤詳細信息或跟蹤列表是什麼? –

+0

它似乎不是任何= /。我查看了我的nginx error.log,沒有提到那個。只是來自chrome的錯誤代碼。我會試着去其他地方看看是否有錯誤記錄在某處。 – Ruben

+0

基本上 - 「允許的內存大小536870912字節用盡」 – Ruben

回答

0

,你可以嘗試用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函數不能注入來自用戶輸入的惡意命令!

+0

Public_path不提供給用戶,所以它應該找到。我稍微調整了你的答案。我安裝了'poppler-utils'(sudo apt-get install poppler-utils),並用'exec(「pdfunite」''替換你的第一行。 – Ruben