Jump to content
nobody78

[РЕШЕНА] [lang] Проблема с генерацией PDF

Recommended Posts

Кракозяблики генерятся в ПДФке (( Кто-нить победил? (1.0 RC5)

Пробовал следовать совету который описан тут:
http://www.prestashop.com/forums/viewthread/3161/

Но ничего не вышло. Сгенеренный Arial также кракозябликами пишется. (все проделывал для кодировки cp-1251)

Share this post


Link to post
Share on other sites
http://www.muerto.ru/utility/fontsFPDF/ Качайте Verdana
Распакуйте и закиньте в /tools/fpdf/font (можно закинуть только verdana.php, verdana.z, verdanab.php, verdanab.z). Поправьте код PDF.php так как было указано в упоминаемом Вами посте. Должно заработать. По крайней мере у меня заработало.

Share this post


Link to post
Share on other sites

выложил Verdan'у

поправил classes/PDF.php таким образом что фунция PDF теперь выглядит так:

       function PDF($orientation='P', $unit='mm', $format='A4')
       {
               global $cookie;

               if (!isset($cookie) OR !is_object($cookie))
                       $cookie->id_lang = intval(Configuration::get('PS_LANG_DEFAULT'));
                       $lang=strtoupper($lang);
                               self::$_pdfparams[$lang] = array('encoding' => $conf['PS_PDF_ENCODING'],
                                                               'font' => $conf['PS_PDF_FONT']);

                               FPDF::FPDF($orientation, $unit, $format);

                               $font = self::embedfont();
                               if($font) {
                               $this->AddFont($font);
                               $this->AddFont($font, 'B');
                                            }
       }



В админке в настройках PDF потавил cp1251 и выбрал verdana.
PDF стал генерится, но вместо русских букв пустота.

Share this post


Link to post
Share on other sites

Может еще в систему надо куда выложить эти шрифты? Я не знаю где в линуксах обычно они лежат и как их активировать..

Share this post


Link to post
Share on other sites
Может еще в систему надо куда выложить эти шрифты? Я не знаю где в линуксах обычно они лежат и как их активировать..

нет, не надо

Share this post


Link to post
Share on other sites

и вообще теперь какие бы настройки не выставлялись для ПДФ - пофик, всегда испльзуется Гельветика (скриншот)

mazvv можете выложить сюда свои файлы которые вы правили? Может я че не так накосячил? или вы еще где поправили и забыли совсем..

Спасибо заранее!

1277_ARJkBsR7TofAvMg9UOlV_t

Share this post


Link to post
Share on other sites

Попробуйте заменить

   function PDF($orientation='P', $unit='mm', $format='A4')
   {
       global $cookie;

       if (!isset($cookie) OR !is_object($cookie))
           $cookie->id_lang = intval(Configuration::get('PS_LANG_DEFAULT'));
       $lang = strtoupper(Language::getIsoById($cookie->id_lang));
       $conf = Configuration::getMultiple(array('PS_PDF_ENCODING_'.$lang, 'PS_PDF_FONT_'.$lang));
       $conf['PS_PDF_ENCODING'] = (isset($conf['PS_PDF_ENCODING_'.$lang]) AND $conf['PS_PDF_ENCODING_'.$lang] == true) ? $conf['PS_PDF_ENCODING_'.$lang] : 'iso-8859-1';
       $conf['PS_PDF_FONT'] = (isset($conf['PS_PDF_FONT_'.$lang]) AND $conf['PS_PDF_FONT_'.$lang] == true) ? $conf['PS_PDF_FONT_'.$lang] : 'Arial';
       self::$_pdfparams[$lang] = array('encoding' => $conf['PS_PDF_ENCODING'],
                                       'font' => $conf['PS_PDF_FONT']);
       FPDF::FPDF($orientation, $unit, $format);
       $font = self::embedfont();
           if($font) {
                   $this->AddFont($font);
                   $this->AddFont($font, 'B');
               }        

   }

Share this post


Link to post
Share on other sites

Попробую, спасибо! Отпишусь о результатах.

Кстати вот что мне ответил один из тех кто принимал участие (я так понял) в разработке модуля котрый за генерацию ПДФ отвечает.


Hi,

I have not worked on PrestaShop for a long time. I don’t know how PDF generation works in last versions. May be I will find some time to take a look at it this weekend.

Generally, you must have the font installed in your OS (Windows, Linux) before you generate the embeded font files for PrestaShop. Are you sure that your font crr… works well with cyrillic on your OS? I am using windows and I am not familiar with linux fonts.

Regards,
Zhivko


Из его слов понятно что шрифт еще обязательно должен быть установлен в системе.

Share this post


Link to post
Share on other sites

Итак, чистая установка версии 1.0 RC5:

1) правим PDF.php таким образом как вы написали и больши НИЧЕГО не трогаем
2) кладем Verdan'у в нужное место
3) изменяем настройки ПДФ в админке cp1251 - verdana

в итоге имеем

FPDF error: Undefined font: verdana B



эта ошибка исчезает если вместо

$lang = strtoupper(Language::getIsoById($cookie->id_lang));


писать

$lang=strtoupper($lang);



но тогда по прежнему ничего что должно быть русскими буквами в ПДФ не отображается.

Share this post


Link to post
Share on other sites

У меня работает если внести изменения которые выше и закачать шрифты(verdana).
А ну и поставить в настройках PDF кодировку и шрифт.

FPDF error: Undefined font: verdana B


Эта ошибка выскакивает тогда, когда нет файлов verdana.z и verdanab.z (с расширением .z)

Вот архив со шрифтом который нужно залить скачать

Share this post


Link to post
Share on other sites

Все получилось. )) Ура.

Дело в том что я пробовал работоспособность на уже сгенеренных счетах, а они со старыми параметрами, поэтому выскакивала ошибка. Сделал новую покупку и все сгенерилось как надо!

Огромное всем спасибо!

Share this post


Link to post
Share on other sites

Can you upload you pdf class file and you fonts? Please?
Or you can write a tutorial how to display utf-8 chars in cp1251 pdf invoices ?

Share this post


Link to post
Share on other sites

Сделал все как описано выше, но
PDF-счета по-прежнему НЕЧИТАЕМЫ.

Кто-то может ПОДРОБНО описать шаги
по решению проблемы?

Share this post


Link to post
Share on other sites

После исправлений Вы просматривали старые счета или новые? Нужно создать новый заказ.
Работать должно точно. Проверено.

Share this post


Link to post
Share on other sites

Хочу проверить, так ли я все делаю для правильного отображения кирилицы в PDF.



1. скачал PDF_VERDANA.rar
(http://stream.ifolder.ru/7599538,
который был выложен nobody78)


2. залил
verdana.z
verdanab.z
verdana.php
verdanab.php

в /tools/fpdf/font

3. Проверил PDF.php на соответствие наличия всех исправлений согласно постов форума, сделал 1 замену:

заменил

$lang = strtoupper(Language::getIsoById($cookie->id_lang));



на

$lang=strtoupper($lang);



4. залил
PDF.php

в /classes/PDF.php


5. В бекофисе в [Preferences - PDF]
выставил

Encoding: - cp1251
Font: verdana

6. Сделал новый заказ, опять те же иероглифы.

Share this post


Link to post
Share on other sites

Проделал те же действия, что и Stroller - с тем же результатом. Presta 1.0.0.8, все остальное врроде бы точно такое же как в описании в теме.

Возможно для 1.0.0.8 надо как-то по-другому фиксить ?

Кто-то может написать пошагово все, что было сделано для чистого инсталла 1.0.0.8, чтобы в .pdf заработал русский ?

У меня просто не выводятся никакие русские символы - только латинские.

Share this post


Link to post
Share on other sites

На самом деле такая проблема есть!
у меня тоже версия 1-0-0-8, может уже французам писать?

На самом деле сделал всё как сказано в постах!
не работает и всё тут!

И к тому же такой баг обнаружился!
в ПДФ файле всегда стоит валюта Евро! не смотря на то что по умолчанию идёт руб или доллар!
при этом сумма та же, а валюта евро! блин ржач!

Кто поможет вылечиться?

p.s. я тут грешным делом подумал, может дело в сравнении базы данных! я когда устонавливал Престу, созал базу в сравнении utf8_unicode_ci
знающие люди подскажите плиз!

Share this post


Link to post
Share on other sites

Поскольку от французов толку ноль, новых версий и багфиксов пока не ожидается - пришлось разбираться самостоятельно. В моем случае задача усложняется тем, что мне нужны инвойсы не только на русском, а и в CP1257. А как известно, эти кодировки между собой не совместимы.

В общем, я проинсталировал ufpdf, сделал фонты для него, пофиксил его самого и переписал pdf.php на работу с utf-8. В результате все заработало - теперь инвойсы нормально печатаются в utf-8 в любой кодировке.

  • Like 1

Share this post


Link to post
Share on other sites
теперь инвойсы нормально печатаются в utf-8 в любой кодировке.


Привет!
Можно ли поподробнее с этого момента :-) ?
Что и где нужно поменять? Можете выложить файлы с иправлениями?

Share this post


Link to post
Share on other sites

Да да! коли начал давай по пунктам что делать и кто виноват!
Хотя бы расскажи последовательность, где брать и что с этим делать!
что такое ufpdf, как делать для него фонты и фиксить? и что менять в пдф.пхп?
Очень поможешь!

Пока что я понял:
1. любой шрифт TTF(true type) кот. мы пользуем в винде можно превести в FPDF либо скачав скрипт UFPDF либо просто сделать это на сайте http://fpdf.fruit-lab.de/
2. кладём все эти адаптированые шрифты в папку \tools\fpdf\font
3. После этого эти шрифты доступны в бэке Back Office >> Preferences >> PDF

ЧТО ДЕЛАТЬ С ФАЙЛОМ PDF.php (\classes), что бы всё заработало????
Всё пробовал не получается!!!!

Share this post


Link to post
Share on other sites

Не совсем так.

ufpdf - это надстройка над fpdf, позволяющая работать в utf-8. Берется на http://acko.net/node/56
В оригинальном виде работать у меня не захотела, пропатчил в ней следующее в function AddFont:

//  if(defined('FPDF_FONTPATH')) 
//    $file=FPDF_FONTPATH.$file; 
 if(!defined('FPDF_FONTPATH')) 
   $this->_getfontpath(); 
   $file=FPDF_FONTPATH.$file; 


Кладем ufpdf.php рядом с fpdf.php - в tools/fpdf

Далее занимаемся генерацией шрифтов для ufpdf в соответствии с readme к ней. Шрифты этой надстройке нужны другие - в UTF-8, и шрифты для fpdf не подойдут. Процесс генерации шрифтов проходит в 3 этапа. Сперва берем желаемые .ttf шрифты, содержащие весь нужный нам набор символов.

1) Генерируем метрику .ufm при помощи программки ttf2ufm
$ ttf2ufm -a -F myfont.ttf
2) Запускаем makefontuni.php с аргументами .ttf и .ufm :
$ php -q makefontuni.php myfont.ttf myfont.ufm
3) Результирующие .php, .z и .ctg.z копируем в tools/fpdf/font

Теперь нужно переделать модуль pdf.php, чтобы он больше не конвертировал utf-8 в какую-либо другую кодировку, а отдавал непосредственно utf-8.

Для начала вызываем ufpdf вместо fpdf:

require(_PS_FPDF_PATH_.'ufpdf.php');

class PDF extends UFPDF



Далее я выбрал фонт verdana и вписал так:

       private static $_pdfparams = array(
              'CS' => array(
                      'encoding' => 'utf-8',
                      'font' => 'verdana')



Затем описал используемые фонты в fpdf_core_fonts и еще в самом конце модуля заменил фонт:

    static private function fontname()
   {
               $font = self::embedfont();
               return $font ? $font : 'verdana';
       }



Еще нужно описать используемые фонты в fpdf.php в функции CoreFonts по образу и подобию имеющегося описания.

После всей этой процедуры presta начала нормально печатать в utf-8.

Share this post


Link to post
Share on other sites

М-да, сложновато для меня.....
Видно, буду счета вручную пока что делать ;)

Share this post


Link to post
Share on other sites
Не совсем так.

ufpdf - это надстройка над fpdf, позволяющая работать в utf-8. Берется на http://acko.net/node/56
В оригинальном виде работать у меня не захотела, пропатчил в ней следующее в function AddFont:
//  if(defined('FPDF_FONTPATH')) 
//    $file=FPDF_FONTPATH.$file; 
 if(!defined('FPDF_FONTPATH')) 
   $this->_getfontpath(); 
   $file=FPDF_FONTPATH.$file; 


Кладем ufpdf.php рядом с fpdf.php - в tools/fpdf

Далее занимаемся генерацией шрифтов для ufpdf в соответствии с readme к ней. Шрифты этой надстройке нужны другие - в UTF-8, и шрифты для fpdf не подойдут. Процесс генерации шрифтов проходит в 3 этапа. Сперва берем желаемые .ttf шрифты, содержащие весь нужный нам набор символов.

1) Генерируем метрику .ufm при помощи программки ttf2ufm
$ ttf2ufm -a -F myfont.ttf
2) Запускаем makefontuni.php с аргументами .ttf и .ufm :
$ php -q makefontuni.php myfont.ttf myfont.ufm
3) Результирующие .php, .z и .ctg.z копируем в tools/fpdf/font

Теперь нужно переделать модуль pdf.php, чтобы он больше не конвертировал utf-8 в какую-либо другую кодировку, а отдавал непосредственно utf-8.

Для начала вызываем ufpdf вместо fpdf:

require(_PS_FPDF_PATH_.'ufpdf.php');

class PDF extends UFPDF



Далее я выбрал фонт verdana и вписал так:

       private static $_pdfparams = array(
              'CS' => array(
                      'encoding' => 'utf-8',
                      'font' => 'verdana')



Затем описал используемые фонты в fpdf_core_fonts и еще в самом конце модуля заменил фонт:

    static private function fontname()
   {
               $font = self::embedfont();
               return $font ? $font : 'verdana';
       }



Еще нужно описать используемые фонты в fpdf.php в функции CoreFonts по образу и подобию имеющегося описания.

После всей этой процедуры presta начала нормально печатать в utf-8.





РАСКАЖИТЕ поподробнее НЕ ПОНЯТНО НИЧЕГО, КАК ДЛЯ ДЕБИЛОВ ПОЖАЛЙУСТА!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Share this post


Link to post
Share on other sites

Пожалуйста, кто разобрался пусть объяснит кто нибудь как это сделать?????!!!!!!!!!!!!!!!!

Share this post


Link to post
Share on other sites

Avlad - 15 October 2008 02:20 AM

3) Результирующие .php, .z и .ctg.z копируем в tools/fpdf/font


Было бы здорово если бы уважаемый Avlad поделился этими файликами

Приаттачим где-нибудь здесь? :-)

И работает ли это для Version 1.1 beta 3?

Share this post


Link to post
Share on other sites

Не могу скачать фонт верданы ни по одной из перечисленных ссылок!
битые!
пож. выложите рабочие!
спс

Share this post


Link to post
Share on other sites

После долгих мучений с fpdf и ufpdf, отказался от обоих и перешел на tcpdf и все заработало. After long try to get work fpdf with ufpdf I simply swith to tcpdf and all works fine.

Share this post


Link to post
Share on other sites
После долгих мучений с fpdf и ufpdf, отказался от обоих и перешел на tcpdf и все заработало. After long try to get work fpdf with ufpdf I simply swith to tcpdf and all works fine.


Можно поподробней???

Share this post


Link to post
Share on other sites

1. Скачял с http://www.sourceforge.net/projects/tcpdf дистрибутив
2. Распаковал содержимое в /tools/tcpdf/
3. Изменил в /config/config.inc.php

===
define('_PS_FPDF_PATH_',            _PS_TOOL_DIR_.'fpdf/');
на
define('_PS_TCPDF_PATH_',            _PS_TOOL_DIR_.'tcpdf/');
===


4. Изменил пути в /tools/tcpdf/tcpdf.php на:

require_once(_PS_TCPDF_PATH_.'/config/tcpdf_config.php');
require_once(_PS_TCPDF_PATH_.'/unicode_data.php');
require_once(_PS_TCPDF_PATH_.'/htmlcolors.php');
require_once(_PS_TCPDF_PATH_.'/barcodes.php');


5. Изменил в /clases/PDF.php

===
include_once(_PS_FPDF_PATH_.'fpdf.php');

class PDF extends FPDF
на
require_once(_PS_TCPDF_PATH_.'config/lang/eng.php');
include_once(_PS_TCPDF_PATH_.'tcpdf.php');

class PDF extends TCPDF
===
FPDF::FPDF($orientation, $unit, $format);
на
TCPDF::__construct($orientation, $unit, $format, true);
===
       static private function convertSign($s)
   {
       return str_replace('¥', chr(165), str_replace('£', chr(163), str_replace('€', chr(128), $s)));
   }
на
   static private function convertSign($s)
   {
       return html_entity_decode($s,ENT_NOQUOTES,'UTF-8');
   }
===
$this->MultiCell($w[++$i], 5, Tools::iconv('utf-8', self::encoding(), $product['product_name']), 'B');
на
$this->MultiCell($w[++$i], 5, Tools::iconv('utf-8', self::encoding(), $product['product_name']), 'B','L');
===
return $font ? $font : 'Arial';
на
return $font ? $font : 'dejavusanscondensed';


===

6. Изменил в /admin/tabs/AdminPDF.php

===
$fontFiles = scandir(_PS_FPDF_PATH_.'font');
$encodingFiles = scandir(_PS_FPDF_PATH_.'font/makefont');
на
$fontFiles = scandir(_PS_TCPDF_PATH_.'fonts');
$encodingFiles = scandir(_PS_TCPDF_PATH_.'fonts/utils/enc');
===


7. Зашел через BackOffice/Настройки/PDF и выбрал шрифт 'dejavusanscondensed' (можете выбрать любой который вам больше понравится)

Вот вроде и все. ;)
Кстати tcpdf умеет печатать HTML в PDF с сохранением форматирования. Т.е. можно например сделать выдачу счета клиенту на выбор - в HTML или PDF.
Странно почему tcpdf не используется по умолчанию в prestashop.

P.s.: все публикуемые мной исправления делаются на SVN версии PrestaShop!

Share this post


Link to post
Share on other sites

Спасибо :exclaim: Будем пробовать :-)

Share this post


Link to post
Share on other sites

Насчет tcpdf:
Пробую на 1.0 - в админке все выбирается, но сами счета не отображаются. Клиент после оформления заказа видит только левый и верхний блоки страницы, вместо центрального блока отображается сумма одного из товаров, например: 171.00.
Если в профиле клиента нажать на иконку PDF последнего заказа, открывается пустое окно (http://www.имя_сайта/pdf-invoice.php?id_order=7).
В списке заказов из админки ситуация та же - пустое окно.
В чем может быть проблема? Права на файлы вроде проставлены.
Спасибо!

Share this post


Link to post
Share on other sites

хм, сделал все по инструкции о замене на TCPDF, но при попытке генерации выдает ошибку - TCPDF error: Could not include font definition file
хотя пути прописаны правильно

Share this post


Link to post
Share on other sites

Наверняка что-то по невниманию не сделал как надо. У меня все работает.

Share this post


Link to post
Share on other sites

Так, поэтапно пишу, как пытался сделать (но так ничего и не вышло):
Скачал с http://www.sourceforge.net/projects/tcpdf дистрибутив под 5 php, версия 4.3.006 (на сервере установлен 5-й).
Положил в папку /tools/tcpdf.
В файле config.inc.php (/config/config.inc.php) прописал путь:

define('_PS_TCPDF_PATH_', _PS_TOOL_DIR_.'tcpdf/');


В файле tcpdf.php (/tools/tcpdf/tcpdf.php) заменил родные пути на такие же, только убрал первый слеш, т.к. он уже прописан в константе _PS_TCPDF_PATH_ (впрочем, с этим слешем результат такой же):

require_once(_PS_TCPDF_PATH_.'config/tcpdf_config.php');
require_once(_PS_TCPDF_PATH_.'unicode_data.php');
require_once(_PS_TCPDF_PATH_.'htmlcolors.php');
require_once(_PS_TCPDF_PATH_.'barcodes.php'); 


В файле PDF.php (/classes/PDF.php) заменил:

include_once(_PS_FPDF_PATH_.'fpdf.php');

class PDF extends FPDF


на:

require_once(_PS_TCPDF_PATH_.'config/lang/eng.php');
include_once(_PS_TCPDF_PATH_.'tcpdf.php');

class PDF extends TCPDF


Далее:

FPDF::FPDF($orientation, $unit, $format);


на:

TCPDF::__construct($orientation, $unit, $format, true);

- одна замена.
Далее:

static private function convertSign($s)
{
   return str_replace('¥', chr(165), str_replace('£', chr(163), str_replace('€', chr(128), $s)));
}


на:

static private function convertSign($s)
{
   return html_entity_decode($s,ENT_NOQUOTES,'UTF-8');
}


Далее:

$this->MultiCell($w[++$i], 5, Tools::iconv('utf-8', self::encoding(), $product['product_name']), 'B');


на:

$this->MultiCell($w[++$i], 5, Tools::iconv('utf-8', self::encoding(), $product['product_name']), 'B','L');

- 2 замены.
В AdminPDF.php (/admin/tabs/AdminPDF.php):
Заменил:

 $fontFiles = scandir(_PS_FPDF_PATH_.'font');
$encodingFiles = scandir(_PS_FPDF_PATH_.'font/makefont');


на:

 $fontFiles = scandir(_PS_TCPDF_PATH_.'fonts');
$encodingFiles = scandir(_PS_TCPDF_PATH_.'fonts/utils/enc');


В итоге симптомы такие же, как я описывал раньше - при попытке купить товар, указав метод оплаты "Наличными курьеру", грузятся левый и верхний блоки страницы, в центральной части отображается цена товара. Ссылка в адресной строке при этом имеет вид: имя_сайта/modules/cashondelivery/validation.php.
Подскажите, что не так делаю? Может, не та версия tcpdf? Руководство выложено как раз за день до выхода новой версии (новая версия вышла 1-го декабря и предыдущая для скачивания недоступна).
UPD: Нашел версию 4.3.005, сейчас попробую с ней...
UPD2: Не-а :)

Share this post


Link to post
Share on other sites
После долгих мучений с fpdf и ufpdf, отказался от обоих и перешел на tcpdf и все заработало. After long try to get work fpdf with ufpdf I simply swith to tcpdf and all works fine.

Спс будем пробовать, а шрифты там уже по умолчанию?

Share this post


Link to post
Share on other sites

у меня пишет 356.8500

TCPDF error: Could not include font definition file

пользую версию 1.0.0.8

Share this post


Link to post
Share on other sites
у меня пишет 356.8500

TCPDF error: Could not include font definition file

пользую версию 1.0.0.8

вот! у мну такая же ошибка, версия тоже такая... кстати в последней замене (а конкретно в строчке "$this->MultiCell($w[++$i],") она там несколько другая...у меня там вообще не инкремент стоит...

Share this post


Link to post
Share on other sites

кстати в последней замене (а конкретно в строчке "$this->MultiCell($w[++$i],") она там несколько другая...у меня там вообще не инкремент стоит...

Да, кстати, верно, у меня тоже, только сейчас внимание обратил - у меня в этой строчке тоже вместо ++$i просто индекс массива -
MultiCell($w[0])

Share this post


Link to post
Share on other sites

оказывается это прикручивается только к бета версии, в ней почти все нормально заработало,почему то искало шрифт ариал, а такого файла в шрифтах не было, переименовал другой - поперло нормально
только непонятно одно, в тестовом заказе в админке есть иконка пдфа, а вновых что создал сейчас - нету...
зы. кстати денежные знаки после этих манипуляций в пдфе все равно отображаются криво...

Share this post


Link to post
Share on other sites

Короче я уже думаю что эта проблема с pdf нерешабельная вообще!

Share this post


Link to post
Share on other sites
Короче я уже думаю что эта проблема с pdf нерешабельная вообще!


Son Ame, у меня способ, предложенный zuzul - сработал, в отличие от первых способов, предложенных в этой ветке (хотя конечно не факт что в первом случае я делал все правильно...)

Но зато есть баг (может еще у кого?) кракозябры (по некоторым товарам) в модуле "история просмотра", причем именно в этом модуле и при чем только часть текста...



---
пока разработчик "чешется" выкладываю файлы с внесенными правками
заливаем:

AdminPDF.php - /admin/tabs/
config.inc.php - /config/
PDF/.php - /clases/
tcpdf.php - /tools/tcpdf/


---
сработало для:
------------------------
PrestaShop - 1.1.0.3
PHP Version 5.1.6

cyrillic_pdf_invoice.zip

Share this post


Link to post
Share on other sites
хм, сделал все по инструкции о замене на TCPDF, но при попытке генерации выдает ошибку - TCPDF error: Could not include font definition file
хотя пути прописаны правильно


Попробуй исправить в самом конце файла /clases/PDF.php
===
return $font ? $font : 'Arial';
на
return $font ? $font : 'dejavusanscondensed'; 
===

Share this post


Link to post
Share on other sites
Насчет tcpdf:
Пробую на 1.0 - в админке все выбирается, но сами счета не отображаются. Клиент после оформления заказа видит только левый и верхний блоки страницы, вместо центрального блока отображается сумма одного из товаров, например: 171.00.
Если в профиле клиента нажать на иконку PDF последнего заказа, открывается пустое окно (http://www.имя_сайта/pdf-invoice.php?id_order=7).
В списке заказов из админки ситуация та же - пустое окно.
В чем может быть проблема? Права на файлы вроде проставлены.
Спасибо!

У меня была та же самая проблема. Оказалось, неправильно поменял пути в файле /tools/tcpdf/tcpdf.php (оставил "dirname"). Когда присмотрелся внимательнее и исправил - всё заработало.
P.S. Сервер использует UTF-8, кодировка для PDF в Prestashop - cp1251.

Share this post


Link to post
Share on other sites

Джентельмены, все это не работает на версии 1.1 final. Все - это все способы включая способ zuzul. Дайте же решение проблемы!

Share this post


Link to post
Share on other sites

У меня прекрастно работает именно на PS 1.1 Final!

Share this post


Link to post
Share on other sites

Аналогично!
Не работало только на 1.0 финале, даже на бетах уже все пахало

Share this post


Link to post
Share on other sites

Hello, This work for 1.0 and 1.1

But i got one problem about currency encoding ?
Only on display price summation.

4423_nzX14kxTuWoTrhTj7XVC_t

Share this post


Link to post
Share on other sites

maybe you forgot to change in /clases/PDF.php

       static private function convertSign($s)
   {
       return str_replace('¥', chr(165), str_replace('£', chr(163), str_replace('€', chr(128), $s)));
   }


on

    static private function convertSign($s)
   {
       return html_entity_decode($s,ENT_NOQUOTES,'UTF-8');
   }

Share this post


Link to post
Share on other sites

Спасибо перепробовал все методы.

Помог Posted: 30 November 2008 10:31 PM от zuzu

Share this post


Link to post
Share on other sites

Может кто подскажет.

С PDF все хорошо по методу zuzul (кодировка нормальная), а вот страница .../modules/bankwire/validation.php загружается пустой (только левый и верхний блоки грузятся). Должна грузиться страница "Подтверждение заказа".

---- Presta 1.1.0.5 ---- TCPDF 4.5.015

Share this post


Link to post
Share on other sites

Уже много вариантов перепробовал. Пока решения нет.

Страница .../validation.php - “Подтверждения заказа” особенно нужна при оплате клиентом банковским переводом, она показывает реквизиты банковского счета.

Попробую изменить шаблон генерации PDF, чтобы реквизиты банковского счета отображались в инвойсе.

Share this post


Link to post
Share on other sites

способ zuzul у меня прошёл. мой ему респект

Share this post


Link to post
Share on other sites

Ребята, а в новой альфа версии от 11 апреля этот способ уже не работает? Я обновил 1.1 финал новой альфа версией и пропала работа метода zuzul :( Теперь русский шрифт не отображается просто. Уважаемый zuzul, не могли бы вы подсказать что может служить проблемой (все изменения 32 поста zuzul'а вносил)

Share this post


Link to post
Share on other sites

Спасибо zuzul за инструкцию!!!

Делал как написано в [ # 32 ], все работает!!! УРААААА!! :)

PrestaShop Version 1.1.0.5.

Share this post


Link to post
Share on other sites

На 1.2. alfa c SVN - заменила PDF на тот который в архиве с вербаной и вербану поставила. В админке выбрала вербану и все замечательно работает

Share this post


Link to post
Share on other sites

В файле PDF.php как-то некорректно работает функция encoding(); (версияPrestaShop 1.2)
Русский язык работает... Только корявенько.
Все сделал по zuzul'у :)
Сначала все как было так и осталось до тех пор пока в функции l(); не исправил:

1. в функции


return (Tools::iconv('utf-8', 'cp1251', $str));


заменил на

return ($str);


2. добавил arial.ttf (конвертится и ставится так, как описано в доках tcpdf);


Начал показывать "по-русски" (но только из файла translations/ru/pdf.php.

Из базы мускула по прежнему вопросики...)

Путем замены self::encoding(); на 'utf-8' в местах вывода в ячейки значений из мускула типа:


$pdf->Cell($width, 10, Tools::iconv('utf-8', self::encoding(), $delivery_address->firstname).' '.Tools::iconv('utf-8', self::encoding(), $delivery_address->lastname), 0, 'L');


на


$pdf->Cell($width, 10, Tools::iconv('utf-8', 'utf-8', $delivery_address->firstname).' '.Tools::iconv('utf-8', 'utf-8', $delivery_address->lastname), 0, 'L');[br]


Начал показывать Имя Фамилию по нашему.
В php не силен, но буду признателен за подсказки в какую сторону копать :)

Видимо где-то переменные $_iso $lang (или что там за язык отвечает?) привирают.

PS Я уже на БД грешил -- сервер локальный, мускул на latin1 был. Поправил на utf-8 -- те же грабли...
Где-то переменные Presta гуляют все-таки
А в PDF.php непонятно -- зачем эта encoding(); нужна?..
т.е поменял содержимое функции от скобки до скобки на
return ('utf-8');
и все с вышеуказанными изменениями -- ПО РУССКИ/ ПО ФРАНЦУЗКИ/ ПО АНГЛИЙСКИ! (вуаля!)
и знаки евро/фунт/доллар показвает (правда шрифт arial... на других непробовал -- надоело и запутался :)). Какое "небо" она должна была держать?
PPS и SVN и не SVN версия ...
  • Like 1

Share this post


Link to post
Share on other sites

А у меня вот такая штука случилась, хотя раньше всё работало.
Когда заказ отправляешь или
когда генеришь ПДФ из истории заказов...
TCPDF ERROR: Missing or incorrect image file: /tmp/jpg_mAo5vA

Как убрать?

И вообще. нафиг поддержка пдф если не нужна, легко ли её отключить полностью?

Share this post


Link to post
Share on other sites

Version 1.2.0.8
Всё что ранее было написано не сработало и была у меня мысля что слишком глубоко копают, идёт просто переформат с utf8 на 1251 за каким фигом сами перешли на утф ну зачем вам 1251 при выборе карты кодировок нужно карту utf8 (не нашёл)и не нужно перебирать весь скрипт по винтикам.
Короче все что было я сделал но не сработало тупо влез в базу и в PS_PDF_ENCODING_RU поставил utf8 и всё прошло русские буквы вместо зловещих вопросов. :)

Share this post


Link to post
Share on other sites

Так проблема решена или нет?
Пробовал способ, указанный в посте 3* каком-то, не помогло.

Share this post


Link to post
Share on other sites

на версии 124 вариант из поста 32 не работает
\во всяком случае у меня не сработал
хотя на предыдущей воспользовалась этим же вариантом и все было в порядке
причем, "руб." пишутся русскими, а всего остального или нет или квадратики
может есть еще какие-то варианты?

Share this post


Link to post
Share on other sites