2009-12-17 9 views
2

Nous générons un pdf en utilisant le moteur xsl fo d'apache, à savoir fop 0.95. Nous avons réussi à afficher du texte arabe du format XML au format PDF. Mais il y a un problème dans la direction des mots affichés.Afficher le texte arabe de gauche à droite en pdf en utilisant apache fop 0.95

Si nous avons 'sangam' (s'il vous plaît supposer que 'sangam' est en arabe) en XML, il s'affiche comme 'magnas'. Est-ce que quelqu'un a déjà rencontré ça? Quelle pourrait être la solution?

Par exemple, j'ai un nœud dans le fichier xml comme ceci:

<empltmoblab>موبایل</empltmoblab> 

maintenant lors de l'affichage en format pdf, ce message est affiché comme ceci:

لیابوم 

Cela signifie que je reçois juste le sens inverse. Je le veux comme il est dans le noeud xml.

Merci.

+0

On ne sait pas si vous dites que le renversement de la direction de texte est indésirable ou non. Nous savons que l'arabe est affiché de droite à gauche. – pavium

+0

Peut-être que si vous pouvez poster quelques exemples, cela aidera. –

+0

@pavium, vous avez dit que l'arabe est affiché de droite à gauche. Je suis confus si mon problème actuel est un problème réel ou non. Ne devrait-il pas afficher le texte tel qu'il est dans le fichier XML? @scott, j'ai ajouté un exemple – sangam

Répondre

0

Je pense que c'est un problème intéressant.Il pourrait être résolu en utilisant bidi (attribut bidirectionnel) à RTL (droite à gauche), mais malheureusement, il n'est toujours pas pris en charge par fop. Si quelqu'un a une solution Ce serait très bien.

J'ai découvert que dans fop nous ne pouvons pas afficher le texte arabe à ce niveau.

La seule solution trouvée consistait à générer un document RTF à la place des documents PDF. Dans le document RTF, le texte arabe s'affiche tel qu'il est dans le fichier XML. Essayez-vous d'utiliser RTF à la place de PDF? ça a marché pour moi.

Merci.

+0

@Thunder, vous avez raison, le problème pourrait être résolu si la propriété bidi-overeide était supportée dans fop. Mais nous ne l'avons pas pour l'instant. – sangam

+0

@Thunder: il semble que FOP 1.1 supporte maintenant bidi. En regardant https://xmlgraphics.apache.org/fop/changes.html, ils listent FOP-959, FOP-1790, FOP-1827 comme références. Dans mes tests, ça fonctionne bien maintenant. – Quamis

1

Essayez d'utiliser ceci:

<fo:block-container writing-mode="rl-tb" font-family="ArabicTransparent" language="fa"> 
     <fo:block> 
      علی‌ کریمی (Farsi-right-to-left) 
     </fo:block> 
    </fo:block-container> 
+0

Désolé, mais mettre un write-mode = "rl-tb" dans un objet fo: blockcontainer échoue de manière vicieuse. Il produit une écriture de droite à gauche des pixels, pas les caractères! C'est un tueur en utilisant fop-1.0 pour produire du texte en hébreu. (Les Arabes et les Juifs ne peuvent pas obtenir leur texte en PDF par fop-1.0.) –

Questions connexes