Увеличение производительности tcpdf

Сообщение об ошибке

Deprecated function: The each() function is deprecated. This message will be suppressed on further calls в функции menu_set_active_trail() (строка 2405 в файле /var/www/notes7/includes/menu.inc).

tcpdf - библиотека для создания pdf файлов средствами php

Во время создания pdf tcpdf инициализирует каждый шрифт используемый для создания pdf файла, что сильно замедляет процесс генерирования pdf файлов.

Недавно нашел возможность ускорить процесс . Данный метод увеличил скорость создания pdf файлов в 2 раза.

Вариант включающий кириллицу: файл tcpdf.pdf , строка 8800, заменить

$font = TCPDF_FONTS::_getTrueTypeFontSubset($font, $subsetchars);

на:

$cached_font_file = $fontfile.'.cached';
if (!file_exists($cached_font_file)){
    // calculate $font first time
    $subsetchars = array_fill(0, 512, true); // fill subset for all chars 0-512
    // Cyrillic Chars (0410–044F)
    for($i=1040;$i <= 1103;$i++){
        $subsetchars[$i] = true;
    }
    $font = TCPDF_FONTS::_getTrueTypeFontSubset($font, $subsetchars);
    // and then save $font to file for further use
    $fp=fopen($cached_font_file,'w');
    $flat_array = serialize($font);
    fwrite($fp,$flat_array);
    fclose($fp);
}
else {
    // cache file exist, load file
    $fp=fopen($cached_font_file,'r');
    $flat_array = fread($fp,filesize($cached_font_file));
    fclose($fp);
    $font = unserialize($flat_array);
}

Данный скрипт будет сохранять обработанные шрифты в папку tcpdf/fonts/ c расширением .cached

Добавить комментарий

CAPTCHA