Magento 1.9 Invoice PDF Версия для печати на арабском языке отображается в перечеркнутых клетках - PullRequest
0 голосов
/ 26 ноября 2018

Описание проблемы

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

В PDF-накладной отображается скрещенное поле с арабскими символами

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

Системная информация

  • CentOS 7
  • Magento 1.9.2.4

Пробные решения

Я исчерпал интернет-ссылки, ничего не получалось, лучшее, что мне удалось сделать, это следующее.

1- Форсирование шрифтов

$font = Zend_Pdf_Font::fontWithPath(Mage::getBaseDir() . '/lib/LinLibertineFont/AraJozoor-Regular.ttf');

Документ PDF получен с разделенными символами, аналогично прикрепленному изображению.

Арабский текст с разделенными и обращенными символами

Когда я пытался напечатать PDF-файл счета-фактуры с арабскими словами, он дает отдельные символы вместо полного арабского слова.Отдельные символы арабского алфавита показаны не справа налево, а слева направо и разделены на отдельные символы. Например: مدرسة (школа) отображается как ة س ر د م

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

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

    function fixText($text){ 
      if(preg_match("/\p{Arabic}/u", $text ) ){
       preg_match_all('/./us', $text, $ar);
       $text = join('',array_reverse($ar[0]));
       $words = explode( ' ', $text );
foreach( $words as $i => $word ){
    if( !preg_match( "/\p{Arabic}/u", $word ) ){
        $words[$i] = implode( '', array_reverse( str_split( $word ) ) );
    }
}
$text = implode( ' ', $words );
 return $text; }}

2 - Обновление сервера семейства шрифтов

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

yum install linux-libertine-fonts
yum clean all
rm -rf /var/cache/yum

Какой пакет шрифтов используется Magento

3- Использование библиотеки TCPDF вместо библиотеки Zend pdf

1 Ответ

0 голосов
/ 27 ноября 2018

Это может помочь вам

1) Загрузите шрифт, поддерживающий арабский текст и символ.

2) Поместите шрифт в каталог lib

3) Пожалуйста, переопределите этот файл app / code / core / Mage / Sales / Model / Order / Pdf / Abstract.php и app / code /core / Mage / Sales / Model / Order / Pdf / Items / Abstract.php и замените

$font = Zend_Pdf_Font::fontWithPath(Mage::getBaseDir() . '/lib/LinLibertineFont/LinLibertine_Re-4.4.1.ttf');

на

$font = Zend_Pdf_Font::fontWithPath(Mage::getBaseDir() . '/lib/dejavu-sans/DejaVuSans.ttf');

Я использовал его на magento 1.9 Пожалуйста, не используйте этошрифт "dejavu-sans / DejaVuSans.ttf" Вы должны использовать ваш язык и символ, поддерживаемый шрифт

...