2017-02-28 9 views
10

में आरटीएल टेक्स्ट सही ढंग से डालें I टेम्पलेट में कुछ टेक्स्ट डालने के लिए PHPWord टेम्पलेट प्रोसेसर का उपयोग कर रहा हूं।PHPWord टेम्पलेट

शब्द टेम्पलेट को एलटीआर स्वरूपित किया गया है क्योंकि सभी लेबल अंग्रेजी हैं।

$template->setValue('name', $user->name); 

वाक्य द्विदिश है:

User Name: ${name} 

यहाँ पीएचपी लाइन है कि मूल्य बदल देता है:

यहाँ शब्द टेम्पलेट में रेखा है। लेबल अंग्रेजी (एलटीआर) है और उपयोगकर्ता नाम हमेशा अरबी (आरटीएल) है।

यहाँ, document.xml में कोड का उत्पन्न लाइन है शब्द फ़ाइल अनज़िप करने के बाद:

<w:r><w:rPr><w:b/><w:bCs/><w:lang w:val="en-US" w:bidi="ar-EG"/></w:rPr><w:t>User Name:</w:t></w:r><w:r><w:rPr><w:lang w:val="en-US" w:bidi="ar-EG"/></w:rPr><w:t xml:space="preserve"> عمرو هشام</w:t><w:tab/></w:r> 

प्रतिस्थापित पाठ सही ढंग से लिब्रे ऑफिस में प्रकट होता है RTL, लेकिन माइक्रोसॉफ्ट वर्ड में लीटर (विपरीत) दिखाई देता है।

माइक्रोसॉफ्ट वर्ड में इसे सही तरीके से प्रदर्शित करने के लिए मैं क्या कर सकता हूं?

+0

मुझे लगता है कि दूसरे ' 'के ठीक बाद' 'होना चाहिए जो मौजूद नहीं है। – revo

+0

http://stackoverflow.com/questions/14491325/fix-a-bi-lingual-wrong-right-to-left-text संभवतः – MifReal

+0

में मदद कर सकता है मुझे लगता है कि आपने पहले यह किया था: http://stackoverflow.com/questions/13967229/phpword बनाने और एक-अरबी-दाएँ-से-बाएँ-शब्द-दस्तावेज़ –

उत्तर

0

आपने यूटीएफ -8 तारों के साथ काम करने के लिए PHPवर्ड को सही करने के लिए पहली जगह में गलत कार्रवाई की है।
this के अनुसार PHPword को ठीक करने के दो तरीके हैं और मैंने दोनों की कोशिश की।

लाइन 150 पर, Shared/String.php की: सही एक यह है

बदलें

public static function IsUTF8($value = '') { 
    return utf8_encode(utf8_decode($value)) === $value; 
} 

public static function IsUTF8($value = '') { 
    return mb_check_encoding($value, "UTF-8"); 
} 

के साथ तो फिर, अगर आप ऐसा करेंगे

$ grep -rn "utf8_encode" . 

पर पेशेवर जेक्ट रूट, आपको सभी लाइनें मिलेंगी जहां utf8_encode का उपयोग किया जाता है। आप की तरह

$linkSrc = utf8_encode($linkSrc); //$linkSrc = $linkSrc; 

$givenText = utf8_encode($text); //$givenText = $text; 

लाइनों देखेंगे आप बस utf8_encode निकाल सकते हैं के रूप में टिप्पणी में दिखाया गया है।