当我尝试运行生成PDF文件的php代码时,我收到标题中提到的错误。这是我正在使用的当前代码:
$pdf = new PDF();
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->SetFont('Times','',12);
foreach($inventories as $key => $inventories) :
$image = $inventories['image'];
$resourceID = $inventories['resourceID'];
$learningcentre = $inventories['learningcentre'];
$title = $inventories['title'];
$quantity = $inventories['quantity'];
$description = $inventories['description'];
$html= 'Resource ID: '. $resourceID. '<br>Title: '.$title.'<br>Learning Centre: '.$learningcentre.'<br>Quantity: '.$quantity.'<br>Description: '.$description.'<br><br>';
$pdf->Image('images/'.$image,10,6,30);
$pdf->WriteHTML($html);
endforeach;
$pdf->Output();
我的图片目前存储在images文件夹中,我已使用以下代码将图像文件类型转换为“文件”:
$fileTypes = array(
'image/pjpeg',
'image/jpeg',
'image/png',
'image/gif'
);
// default value for unsuccessful move file
$successfullyMoveFile = false;
// the name of the input type
$fileInputName = 'file';
// an array to store all the possible errors related to uploading a file
$fileErrorMessages = array();
//if file is not empty
$uploadFile = !empty($_FILES);
if ($uploadFile)
{
$fileUploaded = $_FILES[$fileInputName];
// if we have errors while uploading!!
if ($fileUploaded['error'] != UPLOAD_ERR_OK)
{
$errorCode = $fileUploaded['error']; // this could be 1, 2, 3, 4, 5, 6, or 7.
$fileErrorMessages['file'] = $uploadErrors[$errorCode];
}
// now we check for file type
$fileTypeUploaded = $fileUploaded['type'];
$fileTypeNotAllowed = !in_array($fileTypeUploaded, $fileTypes);
if ($fileTypeNotAllowed)
{
$fileErrorMessages['file'] = 'You should upload a .jpg, .png or .gif file';
}
// if successful, we want to copy the file to our images folder
if ($fileUploaded['error'] == UPLOAD_ERR_OK)
{
$successfullyMoveFile = move_uploaded_file($fileUploaded["tmp_name"], $imagesDirectory . $newFileName);
}
}
我认为问题在于文件类型。有没有办法让FPDF理解文件类型?
答案 0 :(得分:1)
错误信息中的说明非常清楚,但我会尝试用另一个词来解释它们,因为你发现了一些困难。 Image()函数具有以这种方式描述的type
参数:
图像格式。可能的值是(不区分大小写):JPG,JPEG,PNG 和GIF。如果未指定,则从文件中推断出类型 扩展
例如,如果图片是GIF,则需要输入'GIF'
(不要忘记引号)。提供以下示例:
$pdf->Image('http://chart.googleapis.com/chart?cht=p3&chd=t:60,40&chs=250x100&chl=Hello|World',60,30,90,0,'PNG');
但是你用这种方式调用函数:
$pdf->Image('images/'.$image,10,6,30);
您已将该类型留空,因此FPDF(如文档所述)将尝试从文件扩展名中猜出图像类型。扩展名是点后文件名的尾部。例如,如果文件名为kitten.jpg
,则扩展名为jpg
,FPDF将假定它是JPEG图片。提供以下示例:
$pdf->Image('logo.png',10,10,-300);
回到你的代码,我无法知道$image
或$newFileName
包含哪些内容(你已设法省略所有相关代码)但是,鉴于错误消息,我会说它不以FPDF可识别的文件扩展名结尾;它可能根本没有扩展。因此,您需要将文件扩展名附加到文件名或将文件类型存储在其他任何位置(例如数据库表)。您也可以使用启发式方法找出图像类型,但我认为这不值得付出努力。