lunes, 13 de agosto de 2012

Magento: Cómo reducir el tamaño de los archivos PDF

Para reducir el tamaño de los archivos PDF que genera Magento, tales como las facturas (invoices), pedidos (orders), etc. se necesita usar una fuente (fonts) diferentes a las predeterminadas.

Los archivos PDF generados por Magento tienen un tamaño alrededor de 1.5 MB, esto se debe a que la fuente predeterminada es /lib/LinLibertineFont/LinLibertineC_Re-2.8.0.ttf

La cual por sí misma pesa 1.5 MB. La solución es reemplazar esta fuente por alguna estándar de Zend_Pdf, para hacer esto, solamente abre el archivo app/code/core/Mage/Sales/Model/Order/Pdf/Abstract.php

Busca la siguiente línea:

$font = Zend_Pdf_Font::fontWithPath(Mage::getBaseDir() . '/lib/LinLibertineFont/LinLibertineC_Re-2.8.0.ttf');
#
#

Y reemplázala con:

$font = Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA);
#
#

Esto reducirá hasta en un 90% el tamaño de los archivos PDF generados en Magento

Si deseas aumentar el tamaño de las fuentes para las facturas, direcciones de envío, etc., puedes cambiar las líneas:

protected function _setFontRegular($object, $size = 7)
protected function _setFontBold($object, $size = 7)
protected function _setFontItalic($object, $size = 7)

Por:

protected function _setFontRegular($object, $size = 9)
protected function _setFontBold($object, $size = 9)
protected function _setFontItalic($object, $size = 9)

Como podrás ver, hemos tocado el core de Magento, para preservar las modificaciones para futuras actualizaciones de Magento, puedes colocar este código en app/local/Mage/Sales/Model/Order/Pdf/Abstract.php, pero toma en cuenta que con el simple hecho de colocarlo en esta carpeta no quiere decir que vas a sobreescribir la clase, sino que simplemente es a manera de "backup" para que sepas que ahí puedes recolectar los cambios hechos al core de Magento cuando hagas una actualización de versión y repetir estos pasos para un futuro.

Ahora bien, si no quieres tocar el core de Magento, puedes extender la clase app/code/core/Mage/Sales/Model/Order/Pdf/Abstract.php y entonces sobreescribir los métodos arriba mencionados. Por el momento no voy a tocar el tema de cómo extender módulos en Magento, pero te dejo unos links en inglés que te pueden servir:

http://blog.chapagain.com.np/magento-block-controller-model-helper-override/

http://blog.theunical.com/ecommerce/shopping-carts/magento-cart/magento-how-to-create-a-custom-plugin-module-example-tutorial/

http://www.webspeaks.in/2010/07/create-your-first-magento-module.html

 

Artículo original:
http://www.magpleasure.com/blog/change-fonts-and-reduce-file-size-for-pdf-invoice-in-magento.html

No hay comentarios:

Publicar un comentario

Datos personales

Mi foto
Podrás encontrar códigos recursos y artículos sobre PHP, JavaScript, jQuery, MooTools, Ajax, CSS, HTML, UML, RUP, AUP, XP (eXtreme Programming), Six-Sigma, CMMI, FrameWorks, Zend Framework, Magento, CodeIgniter, CakePHP, Joomla 1.5, Doctrine, Active Record, ORM, POO, MVC, MySql, PostgreSql. Este espacio está destinado a ayudar y compartir un poco de lo mucho que he recibido de la comunidad en la Red.