Кодировка в счете PDF Virtuemart v.2 (v.3) (invoice pdf по-русски)
Все привет!
Много вопросов уже возникало и много есть решений проблемы кирилицы или русского языка в PDF инвойсах (счетах, invoice ).
Остановлюсь на вопросах и буду давать краткие ответы.
Для начала ОБЯЗАТЕЛЬНО!!!:
1) скачиваем кирилические шрифты тут (TCPDF) в разделе Download или можно тут tcpdf_6_0_099
2) Разархивируем и из папки fonts копируем содержимое к себе на сервер в папку
ваш_сайт/libraries/tcpdf/fonts
Вопрос 1
на сайте при просмотре товара есть кнопка PDF - при ее нажатии генерируется pdf файл а вместо текста вопросы
Ответ 1
Открываем файл в дримвивере, блокноте или каким редактором кода вы пользуетесь
ваш_сайт/libraries/joomla/document/pdf/pdf.php, находим строку
$pdf->SetFont('helvetica', '', 8, '', 'false'); и заменяем на $pdf->SetFont('freesans', '', 6, '', 'false');
В этом же файле находим var $_header_font" и "var $_footer_font" заменяем на
var $_header_font = 'freesans';
var $_footer_font = 'freesans';
Вопрос 2
Счет PDF в Virtuemart 2 или 3 вместо текста вопросы.
Ответ 2
Идем в VirtueMart - Магазин - вкладка "Счета" и в блоке "Внешний вид" в списке "Шрифт по умолчанию" выбрать Free Mono (UTF-8 Unicide).
Вопрос 3
В Virtuemart 2 или 3 в меню Магазин-Счета нет доступных шрифтов.
Ответ 3
Идем в VirtueMart - Магазин - вкладка "Счета" и в блоке "Внешний вид" в списке "Шрифт по умолчанию" видм что ничего нет.
открывем файл components/com_virtuemart/helpers/vmpdf.php
Эту строку комментируем // $this->SetFont($vmFont, '', $this->vendor->vendor_letter_font_size, '', 'false');
Эту вставляем $this->SetFont('freesans', '', '8', '', 'false');
тем самым мы напрямую говорим virtuemart, что шрифт у нас по умолчанию для генерации PDF freesans.
Вопрос 4
Счет PDF в Virtuemart 2 или 3 вместо текста знаки вопроса.
Ответ 4
Открываем файл: /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);
Если таких значений у вас в коде нет, Не беда отправляемся в пункт вопрос №3
Вопрос 5
tcpdf error: the xobject template '' doesn't exist! что за ошибка?
Ответ 5
затронуто ядро генерации - надо обновить полностью Virtuemart 2 или 3.
Вот вроде и все, что на сегодняшний день было изучено по этому вопросу. Если есть еще - пишите в комментах.
Комментарии
How to start
You are new to Joomla and VirtueMart or you don't have Joomla already installed? we recommend to download the Full installer:
Unzip the downloaded archive
Move the unzipped archive to your web folder
Open your browser and enter the URL of you website
The installation process starts. Follow the instructions.
You already have Joomla installed ?
Download VirtueMart component (Core, AIO and TCPDF)
Unzip the downloaded archive
Install the VirtueMart core component via the Joomla installer first (com_virtuemart.w.x.y.zip)
Install the VirtueMart AIO component second. It contains VirtueMart plugins and modules (com_virtuemart_ext_aio.w.x.y.zip)
Install the TCPDF component. It is necessary for printing invoices and delivery notes (com_tcpdf_1.0.0.zip)
все так ставили ?
$vmFont=$this->vendor->vendor_letter_font;
$this->SetFont($vmFont, '', $this->vendor-> vendor_letter_f ont_size, '', 'false');
$this->setHe aderFont(Array( $vmFont, '', $this->vendor-> vendor_letter_h eader_font_size ));
$this->setFooterFont(Array($vmFont, '', $this->vendor-> vendor_letter_f ooter_font_size ));
есть у меня боевой проект с последними и движком и виртом. Ничего не делалось отсюда. все заработало само после пункта №2.
Даже шрифты загружать не пришлось.
Видимо ошибку разработчики все-таки поправили.
Стоит последняя версия Joomla и Virtuemart. Проделал все пункты (кроме 4-го) что указаны выше, но знаки вопросов не убрались(.
Вот кусочек кода из vmpdf.php :
$vmFont=$this->vendor->vendor_letter_font;
//$this->SetFont($vmFont, '', $this->vendor-> vendor_letter_f ont_size, '', 'false');
$this->SetFont( 'freesans', '', '8', '', 'false');
$this->setHeaderFont(Array($vmFont, '', $this->vendor-> vendor_letter_h eader_font_size ));
$this->setFooterFont(Array($vmFont, '', $this->vendor-> vendor_letter_f ooter_font_size ));
может тут где то проблема? Помогите плиз
Ну так обновитесь до свежих версий и joomla (сейчас уже 3.6.2) и VM 3 - чего на старом сидеть и делать заплатки постоянно.
на сайте вирта написано "VirtueMart 3 component (Core, AIO and TCPDF)" TCPDF - не наводит ни на какие мысли ?
Сборка какая ? (версия joomla и VM ?). насколько я знаю в последней версии эту проблему разработчики победили. Там шрифт есть UTF-8 Fre Mono. Попробуйте другие шрифты выбрать - что после этого поменяется ?