gpt4 book ai didi

php - 阿拉伯文本上的 Magento 1.9 发票 PDF 打印问题出现在交叉框中

转载 作者:行者123 更新时间:2023-12-04 19:42:15 25 4
gpt4 key购买 nike

问题描述

当客户以阿拉伯语输入帐单/运输信息时,我遇到了打印发票、发货和装箱单的问题。下载的 PDF 将如下图所示,没有解码(编译)阿拉伯字符。

Pdf invoice shows crossed box on Arabic characters

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

系统信息

  • CentOS 7
  • Magento 1.9.2.4

  • 尝试过的解决方案

    我已经用尽了互联网引用资料,没有任何效果,我能做到的最好的就是以下。

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

    PDF 文档带有分隔字符,类似于附加的图像。

    Arabic text with separated and reversed characters

    当我尝试用阿拉伯语单词打印发票 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/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”
    您应该使用您的语言和符号支持的字体

    关于php - 阿拉伯文本上的 Magento 1.9 发票 PDF 打印问题出现在交叉框中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53487657/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com