2016-01-22 38 views
0

我正在構建一個簡單的Web服務,需要將兩個PDF合併到一個PDF文件中。我可以將兩個PDF作爲文本(基本編碼爲64)和一個POST傳遞給服務,並且該服務需要將合併的PDF作爲編碼文本進行吐出,然後客戶端將重新編碼並生成PDF。將PDF與編碼PDF中的PHP結合 - 錯誤:「模板不存在!」

我發現這裏這個問題,這讓我開始: Can TCPDF/FPDI accept PDF as string?

我發現了一些示例代碼和多個庫:

這裏是一個編碼的PDF單頁簡單的(發佈資料) http://pastebin.com/zLXmCNJt

這裏是我的代碼:

<?php 

require_once($_SERVER['DOCUMENT_ROOT'].'/FPDF/tcpdf/tcpdf.php'); 
require_once($_SERVER['DOCUMENT_ROOT'].'/FPDF/tcpdf/tcpdi.php'); 


class ConcatPdf extends TCPDI 
{ 
    public $files = array(); 

    public function setFiles($files) 
    { 
     $this->files = $files; 
    } 

    public function concat() 
    { 
     foreach($this->files AS $file) { 
      //$pageCount = $this->setSourceFile($file); 
      $pageCount = $this->setSourceData($file);//i modified this 
      for ($pageNo = 1; $pageNo <= $pageCount; $pageNo++) { 
       $tplIdx = $this->ImportPage($pageNo); 
       $s = $this->getTemplatesize($tplIdx); 
       $this->AddPage($s['w'] > $s['h'] ? 'L' : 'P', array($s['w'], $s['h'])); 
       $this->useTemplate($tplIdx); //error here 
      } 
     } 
    } 
} 


$pdf641 = $_POST['pdf1']; 
$pdf642 = $_POST['pdf2']; 

$pdf = new ConcatPdf(); 
$pdf->setFiles(array(base64_decode($pdf641), base64_decode($pdf642))); 
$pdf->concat(); //!!error here!! 
echo base64_encode($pdf->Output('concat.pdf', 'S')); 

?> 

下面是來自服務器的錯誤日誌: http://pastebin.com/q2vzZfft

這是怎麼回事這裏錯了嗎?我該如何解決?

+0

'$ pdf641 = _POST ['pdf1'];'不應該是'$ pdf641 = $ _POST ['pdf1'];'? – Meroje

+0

@Meroje謝謝。同樣的錯誤。 – GisMofx

回答

2

注意:此問題已經解決via the Github issue tracker for TCPDI;我在這裏也回答了任何遇到這個SO問題的人的好處。

根據TCPDI installation instructions,TCPDI目前不兼容FPDF_TPL版本與最新版本的FPDF捆綁在一起。

試圖使用FPDF_TPL的捆綁版本可能會導致「模板不存在」錯誤;使用獨立版本(FPDF_TPL 1.2.3)應解決此問題。如果您在使用FPDF_TPL 1.2.3時仍然收到錯誤消息,請針對TCPDI或TCPDI_PARSER(根據需要)記錄Github問題,並提供觸發問題的PDF示例。