Question

J'ai un tas de lignes de texte arabe en UTF-8. Le dispositif que je suis en train d'afficher celui-ci ne supporte pas le texte arabe affiché. Par conséquent, je dois convertir le texte en images.

Je voudrais enregistrer chaque ligne de texte sous forme d'image avec une largeur spécifique. Je dois utiliser aussi bien une police spécifique. Quelle est la meilleure façon de procéder? Quelqu'un sait-il d'un outil qui peut être utile ici?

Les problèmes que j'ai rencontré à ce jour:

PHP + GD: lettres arabes apparaissent et non séparés cursive comme ils le devraient. VB.net: Je peux vider chaque ligne de texte dans un richtextbox ... mais je ne sais pas comment exporter l'image de tout ce contrôle. Flash:. Pas de soutien pour le droit au texte gauche

Était-ce utile?

La solution

arabe , vous avez besoin d'une bibliothèque inverse Chars / Glyphes PHP / GD . voir par exemple http://sourceforge.net/projects/ar-php/ ou http://www.ar-php.org/ .

Assurez-vous fichier PHP encodage est unicode / UTF .
par exemple. > Bloc-notes ouvert> Enregistrer sous> encodage UTF-8:

Exemple d'utilisation de la typographie arabe en PHP en utilisant imagettftext :

<?php 
    // The text to draw
    require('./I18N/Arabic.php'); 
    $Arabic = new I18N_Arabic('Glyphs'); 
    $font = './DroidNaskh-Bold.ttf';
    $text = $Arabic->utf8Glyphs('لغةٌ عربيّة');

    // Create the image
    $im = imagecreatetruecolor(600, 300);

    // Create some colors
    $white = imagecolorallocate($im, 255, 255, 255);
    $grey = imagecolorallocate($im, 128, 128, 128);
    $black = imagecolorallocate($im, 0, 0, 0);
    imagefilledrectangle($im, 0, 0, 599, 299, $white);

    // Add the text
    imagettftext($im, 50, 0, 90, 90, $black, $font, $text);

    // Using imagepng() results in clearer text compared with imagejpeg()
    imagepng($im, "./output_arabic_image.png");
    echo 'open: ./output_arabic_image.png';
    imagedestroy($im); 
?>

Sorties:

entrer image description ici

Autres conseils

Je l'ai entendu dire que pango poignées mise en page arabe assez bien. ont pas utilisé bien.

Mise à jour:

Le pango-view utilitaire peut rendre le texte dans any langue et la sortie sous forme d'image

$ pango-view input_file.txt --no-display --output=image.png

ou vous pouvez fournir le texte en option ainsi:

$ pango-view --no-display --output=image.png --text="your sentence"

Vous pouvez également spécifier une largeur:

--width=50 -wrap=word

<< fin de la mise à jour

Sinon, il y a quelques programmes qui utilisent des caractères unicode qui représentent des formes contextuelles lettre arabe et le texte du processus et font rendre correctement sur les systèmes qui ne peuvent pas rendre le texte en arabe correctement.

Voici ceux que je connais:

Ils sont tous open source, même si vous ne l'utilisez l'une de ces langues, vous pouvez étudier le code et créer une solution dans votre langage de programmation de choix.

Il y a plusieurs façons; en utilisant Windows.Forms par exemple, je pense que vous:

  • Créer une instance d'image vide; Je pense qu'à ce stade, vous définissez les dimensions de l'image
  • Créer une instance graphique de l'image, en utilisant la méthode Graphics.FromImage
  • Invoquer la méthode de contrôle (RichTextBox) qui lui dit de se peindre:. Et à cette méthode, passer l'instance graphique associée à votre image, de sorte qu'il se peint sur l'image

Je ne sais pas si vous attendez toujours une réponse mais il y a une solution très propre et soignée pour votre problème. Vous pouvez modifier tout texte, y compris rtl, à l'image en fonction de leur classe css. Mais laissez-moi vous dire d'abord, PHP et GD ce que jamais, ne fait aucun bien pour le texte rtl. Vous devriez essayer de remplacer le texte asp.net fonction de la largeur.

Une fois que je suis le même chemin et eu du mal pendant des jours. Voici ce que vous devez faire.

Tout d'abord aller à l'adresse suivante et voir le tutoriel et télécharger les fichiers. http://weblogs.asp.net /yaneshtyagi/archive/2008/11/07/text-to-image-convertor.aspx

Deuxièmement, vous avez besoin d'un serveur asp.net. Vous pouvez l'installer ou vous pouvez utiliser un de ces serveurs virtuels, tels que serveur asp.net mono, ou vous pouvez utiliser Visual Web Developer.

Le code que vous obtiendrez convertit le texte en une seule image en ligne, mais vous pouvez spécifier la largeur. Dans ce cas, longue ligne de texte devient illisible et rétrécir. Ce que vous avez besoin est de justifier le texte en fonction de la largeur spécifiée.

Ici, dans ce lien qui explique comment modifier le code fontwriter.ashx pour obtenir une pellicule de texte. http://www.codeproject.com/Questions /189513/Dynamic-Image-Replacement-Method-with-Csharp.aspx

Troisième exécutez la page via le serveur asp.net. Une fois que vous avez les images que vous pouvez l'enregistrer, clic droit et enregistrer sous, avec firefox, qui fonctionne le mieux à ce jour.

Maintenant, tout le texte est converti en images et texte original sera ajouté à l'image alt balise . J'espère que ça aide.

Je prévois de publier un tutoriel sur la question bientôt. Vérifiez www.codeproject.com plus tard.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top