Pergunta

Eu tenho um monte de linhas de texto em árabe em UTF-8. O dispositivo que eu estou tentando exibir este não suporta ser texto árabe exibido. Portanto, eu preciso converter o texto em imagens.

Eu gostaria de salvar cada linha de texto como uma imagem com uma largura específica. Eu preciso usar uma fonte específica também. Qual é a melhor maneira de fazer isso? Alguém sabe de uma ferramenta que pode ser útil aqui?

Problemas de eu correr em até agora:

PHP + GD: letras árabes aparecem separados e não em letra cursiva como deveriam. VB.net: Eu posso despejar cada linha de texto em um richtextbox ... mas eu não sei como exportar a imagem de apenas esse controle. Flash: Não. Apoio ao direito ao texto esquerdo

Foi útil?

Solução

Como para árabe , você precisa de uma biblioteca para reverter caracteres / glifos PHP / GD . veja-se e.g. http://sourceforge.net/projects/ar-php/ ou pelo http://www.ar-php.org/ .

Certifique-se o arquivo PHP codificação está em unicode / UTF .
por exemplo. > Bloco de notas aberto> Salvar como> codificação como UTF-8:

Exemplo de uso para a tipografia árabe em PHP usando 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); 
?>

Saídas:

enter descrição da imagem aqui

Outras dicas

Ouvi dizer que Pango alças de layout árabe muito bem. nunca usei isso embora.

Update:

O pango-view utilitário pode processar texto em qualquer linguagem e de saída como uma imagem

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

ou você pode fornecer o texto como uma opção também:

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

Você também pode especificar uma largura:

--width=50 -wrap=word

<< final de atualização

Como alternativa, existem alguns programas que personagens uso unicode que representam formas de carta árabes contextuais e texto processo e torná-lo processar corretamente em sistemas que não pode processar texto Árabe corretamente.

Aqui estão os que eu conheço:

Eles são todos de código aberto, por isso mesmo se você não usar qualquer um desses idiomas, você pode estudar o código e criar uma solução em sua linguagem de programação de escolha.

Há muitas maneiras; usando Windows.Forms por exemplo, acho que você:

  • Criar uma instância de imagem vazia; Eu acho que neste momento você define as dimensões da imagem
  • Criar uma instância Gráficos da imagem, usando o método Graphics.FromImage
  • invocar o método do controle (o RichTextBox) que diz-lhe para pintar-se:. E esse método, passe a ocorrência Graphics associado à sua imagem, para que ele pinta-se para a imagem

Eu não tenho certeza se você ainda está esperando por uma resposta, mas não é uma solução muito limpo e arrumado para o seu problema. Você pode alterar qualquer texto, incluindo a RTL, a imagem com base na sua classe css. Mas deixe-me dizer-lhe primeiro, PHP e GD que nunca, não faz qualquer bom para texto RTL. Você deve tentar substituição de texto asp.net com base na largura.

Uma vez eu andei o mesmo caminho e lutou por dias. Aqui está o que você deve fazer.

Primeiro vá para o seguinte endereço e ver o tutorial e fazer o download dos arquivos. http://weblogs.asp.net /yaneshtyagi/archive/2008/11/07/text-to-image-convertor.aspx

Em segundo lugar você precisa de um servidor asp.net. Você pode instalá-lo ou você pode usar um daqueles servidor virtual, tais como mono asp.net servidor, ou você pode usar desenvolvedor web visual.

O código que você vai ter converte o texto em uma imagem única linha, mas você pode especificar a largura. Nesse caso longa linha de texto encolher e se torna ilegível. O que você precisa é para quebrar o texto com base na largura especificada.

Aqui neste link que explica como alterar o código em fontwriter.ashx para alcançar quebra de texto. http://www.codeproject.com/Questions /189513/Dynamic-Image-Replacement-Method-with-Csharp.aspx

Em terceiro lugar executar a sua página através do servidor asp.net. Depois de ter as imagens que você pode salvá-lo, clique direito e salvar como, com firefox, firefox funciona melhor até agora.

Agora, todo o texto é convertido em imagens e texto original será adicionada à imagem como tag alt . Espero que ajude.

Estou planejando para postar um tutorial sobre o assunto em breve. Verifique www.codeproject.com mais tarde.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top