Edit PDF address in Magento
Editing PDF in Magento can be restrictive but if you need to edit just an address you can use events.
First set up your observer in config.xml:
<adminhtml>
<events>
<customer_address_format>
<observers>
<inchoo_sales_customer_address_format_observer>
<type>model</type>
<class>inchoo_sales/observer</class>
<method>addAdditionalDataToAddress</method>
</inchoo_sales_customer_address_format_observer>
</observers>
</customer_address_format>
</events>
</adminhtml>
After obsever is set you need to set in code and edit address templates:
/**
* Observer printing invoices in PDF
*
* @category Inchoo
* @package Inchoo_Sales
*/
class Inchoo_Sales_Model_Observer
{
public function addAdditionalDataToAddress(Varien_Event_Observer $address)
{
$data = $address->getEvent();
if($data->type['code']=="pdf")
{
$customerData = $data["address"]->getOrder()->getData();
$customerId = $customerData['customer_id'];
//we are using customer object because it give us latest user data, if you want data from user on order creation use $customerData
$customer = Mage::getModel('customer/customer')->load($customerId);
$customerVariable = $customer->get?????;
//prevent of multiple insertion
if(strpos($data->type['default_format'],"Customer Variable")===false)
{
$stringToInsert = "{{var company}}|{{/depend}}|Customer Variable: ".$customerVariable."|";
$data->type['default_format'] = str_replace("{{var company}}|{{/depend}}",$stringToInsert, $data->type['default_format']);
};
};
}
}
If you use customer from order in PDF you get state from user in order state, if you wont get latest user data you have to use Mage::getModel(‘customer/customer’) object.
Replace ????? with your own data.
We are fetching address template and changing that template.
Happy coding,
Goran:)
Published in:
Leave a comment
3 comments
Nice post! I’ve tried to change the file /app/code/core/Mage/Customer/etc/config.xml and change the address formats directly on that file, but without success. I would like to put the second address line besides 1st, how can I do this? Can be a solution editing core files, no problem, because I’ll never will do an update on the store I’m working it.
Thanks for help.
I know this post is a little bit old, but i use a very good Magento Invoice Extension. With this extension you are able to easily change the customer address format, by drag and drop. The Templates are completely customizable and easy to use. Our designer loves this Invoice Extension and creates incredible PDFs. Thanks.
Hi,
Thanks to share this. Nice tutorial.