Как да кирилизираме pdf системата

Ако сте забили и се чудите как да накарате преста да създава pdf разпечатки с текст на кирилица, значи тази статия е за вас.

Не знам защо, но разработчиците на преста така и не си оправиха pdf-ите, а решението е толкова просто.

Първото което трябва да се направи е да си изтеглим читава библиотека, която поддържа utf-8 кодировка, и с нея да заменим сегашната. В момента на писането на тази статия(версия 1.4.7), преста все още използва FPDF, въпреки съществуването на tFPDF. Това си е на практика същата библиотека, но вече е добавена поддръжка на utf-8 и следователно преста ще се сработи лесно с нея (със съвсем малка намеса от наша страна). И така, за да изтеглим tFPDF следваме тази връзка -> http://fpdf.org/en/script/dl.php?id=92&f=zip

След като сме се сдобили с копие от tFPDF разархивираме. От новосъздадената папка ние ще се интересуваме главно от файла tfpdf.php както и директорията unifont (намира се във font). И така:

1. Копираме файла tfpdf.php във /tools/fpdf/ директорията на сървъра където е преста.

2. От същата директория изтриваме fpdf.php, след което преименуваме tfpdf.php на fpdf.php

Следващата стъпка е да добавим подходящи шрифтове. Тъй като tFPDF идва с DejaVu ще ползваме него.

3. В директорията /tools/fpdf/font създаваме файл с име Deja Vu Sans.php . Няма никакво значение дали ще има главни букви или празни места в името на този файл, т.е Dejavusans.php също е валидно име, но начина по който го кръстим ще се вижда във админпанела после когато си избираме шрифт.

4. Създаваме директория /tools/fpdf/font/unifont  и в нея копираме файловете DejaVuSans.ttf, DejaVuSans-Bold.ttf  и ttfonts.php от папката unifont която идва с tFPDF.

5. Преименуваме току що копираните файлове DejaVuSans.ttf и DejaVuSans-Bold.ttf на dejavusans.ttf и dejavusansb.ttf

Почти сме готови, остава само да заблудим преста, че не сме й сменяли библиотеката и да я насилим да ползва utf-8 кодировка за pdf репортите си.

6. Отваряме /tools/fpdf/fpdf.php (нали помните, че това беше tfpdf.php някога), за да го маскираме като fpdf.php

7. Сега трябва да сменим местата където пише tFPDF със FPDF. Задължително е да го направим на редове 11,13,79, а на ред 2172 само текста вдясно т.е реда ви трябва да изглежда така ->

$this->_out(‘/Producer ‘.$this->_textstring(‘tFPDF ‘.FPDF_VERSION));

На всички останали места където срещнете стринга не е задължително да се сменя. Затваряме файла.

8. Отваряме файла /classes/PDF.php

9. Търсим функция с име _initPDFFonts() във версия 1.4.7 това се намира на ред 116.

В тази функция някъде към края трябва да намерите 2 такива реда ->

$this->AddFont($font);
$this->AddFont($font, ‘B’);

Това са редове 132 и 133 във преста 1.4.7

Тези редове трябва да станат така ->

$this->AddFont($font,”,”,true);
$this->AddFont($font, ‘B’,”,true);

10. В дъното на този файл (ред 1219 в преста 1.4.7) има функция encoding() и тя съдържа един единствен ред

return (isset(self::$_pdfparams[self::$_iso]) AND is_array(self::$_pdfparams[self::$_iso]) AND self::$_pdfparams[self::$_iso][‘encoding’]) ? self::$_pdfparams[self::$_iso][‘encoding’] : ‘iso-8859-1’;

изтриваме този ред и на негово място пишем ->

return “utf-8”;

Това е всичко. Записваме и затваряме и този файл. Отиваме във админпанела на магазина и отиваме на таба Orders(поръчки), след това на подтаба PDF, от там от падащото меню си избираме шрифта, който добавихме в началото. В случая това е Deja Vu Sans (кодировката от падащо меню отгоре няма значение вече). Даваме Save и всичко би трябвало да работи вече 🙂

Ако имате проблеми може, да съм пропуснал някоя стъпка, така че не се притеснявайте да драснете едно мнение, за да се поправя 🙂