Virtuemart 2.0 — invoice pdf по-русски

Virtuemart 2.0 — invoice pdf по-русски изображение поста

Итак, продолжаем разбираться с построением магазина на Virtuemart 2.0 и Joomla 2.5. На очереди веселый глюк с русскими инвойсами и pdf в Virtuemart 2.0. Дело в том, что когда происходит формирование заказа, virtuemart выставляет счет в pdf (invoice), только вот все русские буквы заменяются на знаки вопросов. Согласитесь, что это не слишком информативно для Ваших покупателей?

Сделаем маленькое отступление. Если на этапе оформления заказа Ваш Virtuemart 2.0 начинает глючить, то показывая страницу 404, то зависая, то выдавая множество ошибок, переставьте для начала пакет Virtuemart 2.0 all in one (aio), который идет в стандартной поставке с самим магазином.

Virtuemart 2.0 pdf инвойсы и русские буквы

Итак, оказывается шрифты, которые используются для формирования счетов в самом virtuemart попросту не поддерживают кириллицу (кириллические символы). Программисты Virtuemart здесь кивают в сторону TCPDF, библиотеки, которую использует и Virtuemart для формирования pdf документов (вид для печати в pdf, virtuemart 2.0 invoce pdf и т.п.).

Итак, приведем порядок действий, как же «добавить» поддержку кириллицы в invoice pdf virtuemart 2.0. Первое, после установки virtuemart 2.0 в папке /libraries создает подпапку /libraries/tcpdf/fonts/

Нам нужно добавить необходимые шрифты, поддерживающие кириллицу, в эту подпапку. После того, как скачали, открываем архив, в нем папку tcpdf и папку fonts из нее копируем по пути /libraries/tcpdf (только папку шрифтов!), соглашаясь о замене всех существующих файлов. После этого мы сможем использовать следующие кириллические шрифты, например: freesans или times.

Перейдем теперь к изменению файлов virtuemart для добавления поддержки кириллицы в pdf invoice в virtuemart 2.0.

Открываем файл /components/com_virtuemart/controllers/invoice.php

Ищем следующее значение (приблизительно строка 169):

$pdf->setHeaderFont(Array('helvetica', '', 8));

Изменяем на:

$pdf->setHeaderFont(Array('freesans', '', 8));

Далее ищем значение (приблизительно строка 170):

$pdf->setFooterFont(Array('helvetica', '', 10));

Изменяем на:

$pdf->setFooterFont(Array('freesans', '', 10));

Далее ищем значение (приблизительно строка 197):

$pdf->SetFont('helvetica', '', 8, '', true);

Изменяем на:

$pdf->SetFont('freesans', '', 8, '', true);

Далее ищем значение (приблизительно строка 251):

$this->SetFont('helvetica', 'I', 8);

Изменяем на:

$this->SetFont('freesans', 'I', 8);

Дальше открываем файл /components/com_virtuemart/helpers/vmpdf.php

Ищем следующее значение (приблизительно строка 183):

$this->setHeaderFont(Array('helvetica', '', 8));

Меняем на:

$this->setHeaderFont(Array('freesans', '', 8));

Ищем следующее значение (приблизительно строка 184):

$this->setFooterFont(Array('helvetica', '', 10));

Меняем на:

$this->setFooterFont(Array('freesans', '', 10));

Ищем следующее значение (приблизительно строка 211):

$this->SetFont('helvetica', '', 8, '', true);

Меняем на:

$this->SetFont('freesans', '', 8, '', true);

Ищем следующее значение (приблизительно строка 250):

$this->SetFont('helvetica', 'I', 8);

Меняем на:

$this->SetFont('freesans', 'I', 8);

Данная инструкция верна для virtuemart 2.0.16 + 2.0.18 a по замене кода в указанных файлах. Но что же делать, если код и версия вашего Virtuemart 2.0 отличаются? Нужно сделать следующее: найти поиском по файлам рекурсивно в папках /components/com_virtuemart все строки, где встречается helvatica, и заменить их на freesans, или другой шрифт в формате tcpdf из папки /libraries/tcpdf/fonts (название шрифта в папке и будет названием шрифта для замены), поддерживающий кириллицу (русские символы). Можно также дополнительно осуществить поиск по методам самого класса tcpdf – SetFont,setHeaderFont,setFooterFont, и изменить шрифт, указанный в этих методах.

А еще в этих методах Вы можете кроме начертания шрифтов изменить их размер. Для этого третьим параметром каждого метода можно передать целое число (высоту шрифта). Рекомендую для freesans увеличить на 1-2 пункта это значение по сравнению с helvatica. Шрифт будет крупнее и читабельнее. После всех изменений сделайте заказ и проверьте, как выглядит invoce в pdf.

Комментарии