当在所有文档中使用相同的图像文件时,FPDF无法创建多个PDF文档

时间:2013-12-17 13:26:28

标签: php fpdf

如果我们在循环外部创建一个对象并继续将同一图像插入到多个文档中,则会识别出未定义的索引错误。

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行和第1659行注释FPDF类中的未设置功能。 1660年也是第3&amp;第4份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']); 
    } 
} 

请帮我解决此问题。提前谢谢。

2 个答案:

答案 0 :(得分: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']); 
    } 
}

答案 1 :(得分:0)

我在循环中更改了对象创建它在测试文件中正常工作。但是如果我与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');

}