Сер 282013
 

Итак, продолжаем разбираться с построением магазина на 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/

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

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

Открываем файл:

/components/com_virtuemart/controllers/invoice.php

Ищем следующее значение:

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

Изменяем на:

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

Ищем значение:

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

Изменяем на:

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

Ищем значение:

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

Изменяем на:

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

Ищем значение:

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

Изменяем на:

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

Дальше открываем файл

/components/com_virtuemart/helpers/vmpdf.php

Ищем следующее значение:

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

Меняем на:

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

Ищем следующее значение:

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

Меняем на:

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

Ищем следующее значение:

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

Меняем на:

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

Ищем следующее значение:

$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.

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)