Русская кодировка в PDF счетах PrestaShop

Русская кодировка в PDF счетах PrestaShop

Ваш интернет-магазин на PrestaShop установлен, внешний вид настроен, каталог товаров заполнен, все работает просто замечательно. Вы тестируете работу магазина, делаете пробный заказ и вдруг обнаруживаете, что счета, оформленные в виде PDF файла, нечитаемы. Содержат «кракозябры» или вообще не заполнены.

Да, да! Это опять тяжелое наследие доюникодовой эпохи: русские шрифты и выкрутасы с кодировками.

Как лечится

(Проверено для версий с 1.4.0 по 1.4.7; хостинг — Masterhost)

  1. Закачиваем русские шрифты (содержимое архива распаковать в папку ./tools/fpdf/font)
  2. В панели управления магазином Orders — PDF выбираем: кодировка — verdana, Шрифт — cp1251
  3. Все бы уже хорошо, но вместо русского «руб.» Вы скорее всего увидите непонятные загогулины. Слово «руб» хранится в базе в utf-8, поэтому нужно и его перевести в 1251.  Редактируем файл ./classes/PDF.php:
Находим:
static protected function convertSign($s)
{
$arr['before'] = array('€', '£', '¥');
$arr['after'] = array(chr(128), chr(163), chr(165));
return  str_replace($arr['before'], $arr['after'], $s);
}

Заменяем на:

static protected function convertSign($s)
{
$arr['before'] = array('€', '£', '¥');
$arr['after'] = array(chr(128), chr(163), chr(165));
$s = str_replace($arr['before'], $arr['after'], $s);
return iconv('UTF-8', 'windows-1251', $s);
}
Делаем пробный заказ, проверяем. Должно получится что-то вроде этого
К сожалению, при обновлении кода магазина на новую версию, шаг три придется повторить.

Удачи!

20.02.2012 Автор: Ссылка
12 комментариев на Русская кодировка в PDF счетах PrestaShop
  1. Мила:

    ошибка в написании кода (кавычки! не «ёлочки», а обычне) — нужно так:
    static protected function convertSign($s)
    {
    $arr['before'] = array(‘€’, ‘£’, ‘¥’);
    $arr['after'] = array(chr(128), chr(163), chr(165));
    $s = str_replace($arr['before'], $arr['after'], $s);
    return iconv("UTF-8", "windows-1251", $s);
    }

    а вообще — огромное МЕРСИ! :)

    • Albina:

      Да, верно, заморочки вордпресса.
      спасибо за поправку!

  2. Спасибо, Albina!
    Ваш рецепт сработал!

  3. огромное спасибо!
    вашу запись яндекс дал первой
    — и сразу по делу, и сразу помогло.
    удача : ))

  4. Boroda:

    Большое спасибо!
    Работает отлично!

  5. kibiorio:

    Огромное спасибо, долго голову ломал со счетами :)

  6. Владимир:

    У меня стоит версия 1.5.0.17 и в ней нету нигде меню, где меняется шрифт и кодировка PDF. Там вообще нету настроек PDF, только возможность перевода вручную, но все переведено. Заместо русских букв вопросительные знаки. Не подскажете как быть?

    • Albina:

      Здравствуйте!
      В бою еще не проверяла, но на локалке помогло:
      в файле classes/pdf/PDFGenerator.php в самом начале вместо
      const DEFAULT_FONT = ‘helvetica’;
      написать:
      const DEFAULT_FONT = ‘freeserif’;

  7. Спасибо все заработало нормально

  8. Сергей:

    Действительно помогло следующее:
    в файле classes/pdf/PDFGenerator.php в самом начале вместо
    const DEFAULT_FONT = ‘helvetica’;
    написать:
    const DEFAULT_FONT = ‘freeserif’;