2013-12-17 50 views
1

如果我們在循環的外部創建對象並繼續向多個文檔插入相同的圖像,則會識別未定義的索引錯誤。當在所有文檔中使用相同的圖像文件時,FPDF無法創建多個PDF文檔

FPDF庫一旦在第一個文檔中使用,就會在內部刪除圖像。每當循環執行第二條記錄來創建文檔時,附加的圖像都不可用。

由於這個錯誤拋出FPDF類。如果我們在循環內部移動這個對象,這個未定義的索引錯誤被解決了,但是性能明智,這是不斷創建新對象的一個​​缺點。

步驟來重現

<?php 

require 'fpdf.php'; 

$pdf = new FPDF(); 

foreach(array(1,2,3,4) as $value) 
{ 
//add the page to the current PDF 
$pdf->AddPage(); 

$cover_image = 'cover_page.jpg'; 

//add one image to that pdf page 
$pdf->Image($cover_image,0,0,210,'','JPG'); 

$temp = 'temp/'.$value.'.pdf'; 

//output the file into the local folder 
$pdf->Output($temp, 'F'); 

} 

如果我們行號1659 & 1660評論未設定功能的FPDF類也第三&第四PDF文檔是不妥當的

function _putimages() 
{ 
    foreach(array_keys($this->images) as $file) 
    { 
     $this->_putimage($this->images[$file]); 
     //unset($this->images[$file]['data']); 
     //unset($this->images[$file]['smask']); 
    } 
} 

請幫我解決這個問題。提前致謝。

+0

無效在使用上面的代碼時,PDF文件正在生成(第3和第4)。請忽略我對FPDF類中_putimages()函數的更改,因爲我正在嘗試。我們需要創建多個PDF,在所有文檔中使用相同的封面圖像。 – Sundar

+0

如果我們將對象創建移動到循環內部,則通知錯誤是固定的。由於現有對象在驗證完成後會清除圖像 – Sundar

回答

0

我改變了它的工作在測試精細循環內的對象創建file.But如果我codeignitor整合它不工作我必須檢查

<?php 

require 'fpdf.php'; 

foreach(array(1,2,3,4) as $value) 
{ 
    $pdf = new FPDF(); 

    //add the page to the current PDF 
    $pdf->AddPage(); 

    $cover_image = 'cover_page.jpg'; 

    //add one image to that pdf page 
    $pdf->Image($cover_image,0,0,210,'','JPG'); 

    $temp = 'temp/'.$value.'.pdf'; 

    //output the file into the local folder 
    $pdf->Output($temp, 'F'); 

} 
0

試試這個:

function _putimages() 
{ 
    foreach(array_keys($this->images) as $file) 
    { 
     $this->_putimage($this->images[$file]); 
     if (isset($this->images[$file]['data'])) unset($this->images[$file]['data']); 
     if (isset($this->images[$file]['smask'])) unset($this->images[$file]['smask']); 
    } 
} 
+0

實際問題:使用上述代碼時無效的PDF文件正在生成(第3和第4)。請忽略我對FPDF類中_putimages()函數的更改,因爲我正在嘗試。 – Sundar