El aspecto de la codificación suele ser un factor a tener muy en cuenta en todos los Frameworks para e-commerce (codificación de archivos excel a importar, descripciones de la tienda, documentos PDF…). En Magento, se suelen producir errores de codificación a la hora de generar las facturas en PDF con caracteres españoles, chinos… En algunas ocasiones, lo único que conseguiremos ver al generar la factura en PDF será un página en blanco.
Ante un error en la generación de las facturas en PDF, siempre deberemos hacer una revisión del archivo app/code/core/Mage/Sales/Model/Order/Pdf/Abstract.php En muchos casos, como bien comentaba antes, deberemos realizar ajustes en la codificación, utilizando funciones del tipo: iconv("UTF-8", “ISO-8859-1//TRANSLIT”, $str) En otros casos, el problema se encuentra en la fuente utilizada, por defecto, LinLibertine y por tanto, la solución pasa por sustituirla y realizar los ajustes necesarios (este caso lo hemos detectado tiendas Magento sobre servidores Windows).
lib/<nueva_fuente>/. Por ejemplo:
app/code/core/Mage/Sales/Model/Order/Pdf/Abstract.php dentro del directorio app/code/local/Mage/Sales/Model/Order/Pdf/ para sobreecribir el comportamiento por defecto y evitar que el archivo sea borrado al actualizar Magento.Código original:
protected function _setFontRegular($object, $size = 7) { $font = Zend_Pdf_Font::fontWithPath(Mage::getBaseDir() . '/lib/LinLibertineFont/LinLibertineC_Re-2.8.0.ttf'); $object->setFont($font, $size); return $font; } protected function _setFontBold($object, $size = 7) { $font = Zend_Pdf_Font::fontWithPath(Mage::getBaseDir() . '/lib/LinLibertineFont/LinLibertine_Bd-2.8.1.ttf'); $object->setFont($font, $size); return $font; } protected function _setFontItalic($object, $size = 7) { $font = Zend_Pdf_Font::fontWithPath(Mage::getBaseDir() . '/lib/LinLibertineFont/LinLibertine_It-2.8.2.ttf'); $object->setFont($font, $size); return $font; }
Nuevo Código:
protected function _setFontRegular($object, $size = 7) { $font = Zend_Pdf_Font::fontWithPath(Mage::getBaseDir() . '/lib/TuffyFont/Tuffy.ttf'); $object->setFont($font, $size); return $font; } protected function _setFontBold($object, $size = 7) { $font = Zend_Pdf_Font::fontWithPath(Mage::getBaseDir() . '/lib/TuffyFont/TuffyBold.ttf'); $object->setFont($font, $size); return $font; } protected function _setFontItalic($object, $size = 7) { $font = Zend_Pdf_Font::fontWithPath(Mage::getBaseDir() . '/lib/TuffyFont/TuffyItalic.ttf'); $object->setFont($font, $size); return $font; }
Tags: Experto Magento, Freelance Magento, Magento, Magento Factura PDF