I am working with fpdf to convert html to pdf . I have the following html in new.html .
I also faced the same problem much time then I started to read all code of FPDF. I got my solution by changing some line fpdf.php. FPDF.php is core file in FPDF Library. So keep backup of this file before any change.
In this file I just searched
Not a JPEG file
then i comment out this line and set a default value
//$this->Error('Not a JPEG file: '.$file);
$colspace ="DeviceRGB";
After this, my PDF going generate. Note that in my case Image path was valid and i was upload image on S3 using base64 Decode also Croping too. so that maybe my image going working wrong. but it was being open on the browser. So after two change on fpdf.php. I got my solution.
Another thing you have to check is the image path is valid or not. in pdf file i am using
$pdf->Image($file,12,12,30,30);
Have found that constructing slideshows with Paintbrush on a MacBook Pro for years have sometimes been saving what "file jpeg_filename.jpg" determines is a PNG, as a JPEG, which is not the end of the world as far as the browsers go rendering this. Within FPDF's fpdf.php I fixed my own shortcomings that were resulting in "FPDF Error: Not a JPEG file" via the kludgy "if($a[2]==3) { return $this->_parsepng($file); }" additional codeline below ...
function _parsejpg($file)
{
// Extract info from a JPEG file
$a = getimagesize($file);
if(!$a)
$this->Error('Missing or incorrect image file: '.$file);
if($a[2]==3) { return $this->_parsepng($file); }
if($a[2]!=2)
$this->Error('Not a JPEG file: '.' '.$a[2].' '.$file);
if(!isset($a['channels']) || $a['channels']==3)
$colspace = 'DeviceRGB';
elseif($a['channels']==4)
$colspace = 'DeviceCMYK';
else
$colspace = 'DeviceGray';
$bpc = isset($a['bits']) ? $a['bits'] : 8;
$data = file_get_contents($file);
return array('w'=>$a[0], 'h'=>$a[1], 'cs'=>$colspace, 'bpc'=>$bpc, 'f'=>'DCTDecode', 'data'=>$data);
}
For "Not a JPEG file": Your best bet here is to re-export the image file. Just open it up in Gimp, Photo Shop, etc and re-export as a jpeg. Every time I've had that come up, I've just re-exported with Gimp and it fixed whatever FPDF thought was the non-jpeg part of the image.
For "Alpha channel not supported": This is because FPDF does NOT support the Alpha channel. I believe it does support Index transparency so you can re-save the image (again Gimp, Photo Shop, etc) with the alpha channel off and Index transparency on.
You may also want to checkout DomPDF it is a HTML TO PDF converter that does support the alpha channel. If it is a large PDF you're generating (many pages, images, etc) you may need to increase the execution time.
One more thing you can check out too, is a fan made support for Alpha in FPDF Alpha Channels / Masks