Magento : display product image on invoice + shipping PDF

Magento's wiki has a few articles on the subject of Magento's PDF generation, which is not very efficient in its default version : one of the main critics I've seen is the size of the generated PDF, which can fly to more than 1MB, where a simple font replacement can bring the weight to less than a few KBs ! The subject of the article below is to illustrate how to display images on each line of the generated invoice and shipping PDF.
The product line display occurs in specific PHP classes within  the app/code/core/Mage/sales/Model/order/pdf folder

there is one folder for shipment, one for invoice, and one for credit. The product display occurs in the DEfault file where the Mage_Sales_Model_Order_Pdf_Items_Abstract is defined. What I did was simply instanciate a product object using the id from order / items, and get the image file using the following code in the draw function :

//<display image>
$id = Mage::getModel('catalog/product')->getIdBySku($this->getSku($item));
$product=  Mage::getModel('catalog/product')->load($id);
$imageUrl = $product->getSmallImageUrl();
$imageFile=  str_replace(Mage::getBaseUrl('media'),"media/",$imageUrl);
// $page->drawText($imageFile , 65, $pdf->y-$shift{1}, 'UTF-8');
$imageWidth = 100; $imageHeight = 50;
$image = Zend_Pdf_Image::imageWithPath($imageFile,$imageWidth,$imageHeight);
$y=$pdf->y - $imageHeight /3;
$page->drawImage($image, 35,$y, 35+ $imageWidth / 2, $y + $imageHeight/2);
//</display image>
4 replies
  1. Thillai
    Thillai says:


    I have created a new transactional email template for my website for processed status .

    I would like to edit some values dynamically in the email template.

    Could please tell me on which file(*.phtml) i have to make my changes.

    Please help me how to resolve this issue as early as possible.

  2. Jhansi
    Jhansi says:


    I have added this code in invoice.php,but product image is not shown in invoice..

    How to proceed with this issue.


  3. Neil
    Neil says:

    Hi there,

    I was wondering if you could perhaps explain a bit more with those code gets added?

    Thanks. 🙂

  4. shanthi
    shanthi says:

    I have the following code in
    $cs = Mage::getModel('catalog/product')->load($_item->getProductId();

    if ($cs->getOptionById($_option['option_id'])->getPriceType() == 'fixed')

    //do something here
    The above works perfect for the TEXT type and other field types
    But it does not work for the select drop down custom option
    The value $cs->getOptionById($_option[’option_id’])->getPriceType() is empty for the select custom option
    Can anyone point me how to make it work for drop down option too ?


Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published. Required fields are marked *