Уменьшаем размер PDF-документов в Magento (Invoice, Order и пр.)

21 янв. 2015

Подчас можно удивиться большому размеру pdf-файлов (счета, заказы и пр.), генерируемых Magento. Происходит это за счет того, что в pdf внедряется шрифт LinLibertine в нескольких начертаниях - regular, bold, italic. А что если использовать одно начертание и вообще - подключить свой произвольный шрифт?

PDF-файл генерируется посредством компонента Zend_Pdf. Внести нам нужно всего три изменения в файл "/app/code/local/Mage/Sales/Model/Order/Pdf/Abstract.php".

 

1. Для начала создадим этот файл со структурой папок и перенесем туда содержимое файла ядра "/app/code/core/Mage/Sales/Model/Order/Pdf/Abstract.php".

 

2. В Abstract.php меняем путь и имя файла шрифта на наши:

 

было:


    protected function _setFontRegular($size = 7)
    {
       $font = Zend_Pdf_Font::fontWithPath(Mage::getBaseDir() . '/lib/LinLibertineFont/LinLibertineC_Re-2.8.0.ttf');
        $this->getPage()->setFont($font, $size);
        return $font;
    }
protected function _setFontBold($size = 7)
{
    $font = Zend_Pdf_Font::fontWithPath(Mage::getBaseDir() . '/lib/LinLibertineFont/LinLibertine_Bd-2.8.1.ttf');
    $this->getPage()->setFont($font, $size);
    return $font;
}

protected function _setFontItalic($size = 7)
{
    $font = Zend_Pdf_Font::fontWithPath(Mage::getBaseDir() . '/lib/LinLibertineFont/LinLibertine_It-2.8.2.ttf');
    $this->getPage()->setFont($font, $size);
    return $font;
}

стало:


    protected function _setFontRegular($size = 7)
    {
        $font = Zend_Pdf_Font::fontWithPath(Mage::getBaseDir() . '/lib/MyFont/myfont-regular.ttf');
        $this->getPage()->setFont($font, $size);
        return $font;
    }
protected function _setFontBold($size = 7)
{
    $font = Zend_Pdf_Font::fontWithPath(Mage::getBaseDir() . '/lib/MyFont/myfont-bold.ttf');
    $this->getPage()->setFont($font, $size);
    return $font;
}

protected function _setFontItalic($size = 7)
{
    $font = Zend_Pdf_Font::fontWithPath(Mage::getBaseDir() . '/lib/MyFont/myfont-italic.ttf');
    $this->getPage()->setFont($font, $size);
    return $font;
}

3. Создадим папку, где будет храниться шрифт - "корневая_директория/lib/MyFont" и поместим туда файлы шрифта - "myfont-regular.ttf", "myfont-bold.ttf", "myfont-italic.ttf".

 

Это все!

P.S. и напоследок - шрифт можно взять и из вашего любимого windows, из папки fonts.

Choose languageRU

© 2009—2024 Mygento. Все права защищены. Политика конфиденциальности

Menu Menu Menu

Аккредитованная
ИТ-компания