2014-11-25 63 views
0

我嘗試使用帶Drupal的FPDI lib將pdf連接在一起。 我創建了一個類到一個新的PDF添加到FPDI:FPDI:調用未定義的方法FPDI :: _ getrawstream()Drupal

class PdfGenerator 
{ 
public function importPDF(&$fpdi, $file) 
    { 
     $pageCount = $fpdi->setSourceFile($file); 
     for ($p = 1; $p <= $pageCount; $p++) { 
      $tplidx = $fpdi->importPage($p); 
      $size = $fpdi->getTemplatesize($tplidx); 

      if ($size['w'] > $size['h']) { 
       $format = 'L'; 
      } else { 
       $format = 'P'; 
      } 

      $fpdi->addPage($format, array($size['w'], $size['h'])); 
      $fpdi->useTemplate($tplidx); 
     } 
    } 
} 

和我稱之爲importPDF方法是這樣的:

$pdf = new FPDI(); 
$pdf_path = 'path/to/pdf.pdf'; 
$pdfGenerator->importPDF($pdf,$pdf_path); 
$pdf->Output('test.pdf','I'); 

但不幸的是我有這樣的錯誤:

Fatal error: Call to undefined method FPDI::_getrawstream() in [..]sites/all/libraries/fpdi/fpdi.php on line 473 

你知道這個錯誤的原因嗎?

預先感謝您:)

回答

0

我找到了解決方案: 我實際上在FPDI之前使用HTML2PDF來生成PDF。

  • HTML2PDF作出了包括TCPDF過時的版本(5.0.002)

所以,當我使用FPDI的FPDI對象實例化的類型是TCPDF而不是FPDF。並且FPDI稱爲TCPDF的函數,該函數出現在TCPDF的v6上。

解決方案: 我FPDI降級到1.3.3版本,以匹配HTML2PDF(v5.0.002) 我就把fpdf_tpl 1.2.2版本相匹配的FPDI LIB V1.3.3

這工作!

0

請確保您更新FPDIFPDF到其最新版本。

+0

我使用FPDI v1.5.2和FPDF v1.7。我在沒有Drupal的乾淨安裝上嘗試相同的代碼,它可以工作。我仍然沒有Drupal的解決方案。 – tyhupo 2014-11-26 09:01:14

+0

在您的Drupal設置中,過期版本的TCPDF似乎在加載FPDI之前加載。 – 2014-11-26 11:08:29

+0

實際上,我之前使用html2pdf生成動態pdf。在html2pdf中,TCPDF的版本是5.0.002。 – tyhupo 2014-11-26 12:55:38