Magento 1.9发票PDF打印版阿拉伯文本出现在交叉框中



问题描述

当客户用阿拉伯语输入账单/发货信息时,我面临打印发票、发货和装箱单的问题。下载的PDF将看起来像下面的屏幕截图,没有解码(编译(阿拉伯字符。

Pdf发票显示阿拉伯字符上的交叉框

预期结果:发票、发货和包装应正确显示所有信息,无论是英语和/或阿拉伯语。不使用第三方扩展。

系统信息

  • 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( 请下载支持阿拉伯语文本和符号的字体。

2( 将字体放在lib目录中

3( 请覆盖此文件app/code/core/Mage/Sales/Model/Order/Pdf/Abstract.php和app/code/core/Mage/Sesales/Model/Older/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"你应该你的语言和符号支持字体

最新更新