Оказа се, че PrestaShop не поддържа уникод при генерирането на PDF файлове. Голям проблем ако трябва да се издават фактури директно от магазина. Решението след малко ровичкане из форума на преста и нагаждане на дадените варианти се оказа лесно :
FPDF се заменя с TCPDF. Предимството на последния е точно в поддръжката на UTF-8 .
Замяната стъпка по стъпка :
От Sourceforge сваляме TCPDF .
Разархивира се в директория tools на Presta.
Променят се следните файлове :
\AdminX\tabs\AdminPDF.php
На ред 41 блокираме
//$fontFiles = scandir(_PS_FPDF_PATH_.'font');
и добавяме
$fontFiles = scandir(_PS_TCPDF_PATH_.'fonts');
На ред 55 блокираме
//$encodingFiles = scandir(_PS_FPDF_PATH_.'font/makefont');
и добавяме
$encodingFiles = scandir(_PS_TCPDF_PATH_.'fonts/utils/enc');
Следващият файл за промяна е в \classes\PDF.php
Намираме на ред 28
include_once(_PS_FPDF_PATH_.'fpdf.php');
class PDF_PageGroupCore extends FPDF
и заменяме с
include_once(_PS_TCPDF_PATH_.'tcpdf.php');
class PDF_PageGroupCore extends TCPDF
Намираме на ред 112 във функцията Construct
FPDF::FPDF($orientation, $unit, $format);
и заменяме с
parent::__construct($orientation, $unit, $format, true, 'UTF-8');
На 125 ред намираме
'encoding' => (isset($conf['PS_PDF_ENCODING_'.$isoCode]) AND $conf['PS_PDF_ENCODING_'.$isoCode] == true) ? $conf['PS_PDF_ENCODING_'.$isoCode] : 'utf-8',
'font' => (isset($conf['PS_PDF_FONT_'.$isoCode]) AND $conf['PS_PDF_FONT_'.$isoCode] == true) ? $conf['PS_PDF_FONT_'.$isoCode] : 'helvetica'
и заменяме с
//'encoding' => (isset($conf['PS_PDF_ENCODING_'.$isoCode]) AND $conf['PS_PDF_ENCODING_'.$isoCode] == true) ? $conf['PS_PDF_ENCODING_'.$isoCode] : 'utf-8',
'encoding' => 'utf-8',
'font' => 'dejavusans'
На ред 1157 намираме
return $font ? $font : 'Arial';
и заменяме с
return $font ? $font : 'dejavusans';
Последно остана да се промени defines.inc.php в \config\ където просто след
define('_PS_FPDF_PATH_', _PS_TOOL_DIR_.'fpdf/');
добавяме дефиниране и за TCPDF
define('_PS_TCPDF_PATH_', _PS_TOOL_DIR_.'tcpdf/');
Това в общи линии решава проблема. Естествено, хубаво е и да се направи архив на оригиналните файлове преди модифицирането им