2010-01-20 8 views
8

Estoy usando ruby, gamba y gamba para generar dinámicamente el texto que contiene pdf en otros idiomas. Parece que no puedo obtener ningún texto en idiomas con caracteres no ingleses para mostrar. No arroja ningún error ... solo muestra un montón de guiones en lugar de caracteres. Prawn se jacta de su página de inicio sobre soporte UTF-8 así que no veo por qué esto es un problema. Estoy usando ruby ​​1.8.6 (Engineyard).Prawn & Prawnto Rails Generación PDF - UTF-8?

+0

Tendrás que darnos más detalles o un ejemplo. ¿Qué personajes intentas representar, en qué tipo de letra? ¿Simplemente no se muestran o tiene un error o una excepción? ¿Es este Ruby 1.8 o 1.9? Si toma el ejemplo de UTF-8 en la página de inicio de Prawn, péguelo en un archivo de texto y ejecútelo de manera independiente con su configuración de Ruby, ¿funciona? –

+0

Edité la pregunta para responder la mayor parte de eso. – tybro0103

+0

¿Utiliza Ruby o Rails? – Katarzyna

Respuesta

11

Para que Unicode funcione, debe cargar una fuente TTF que tenga los caracteres que necesita.

La fuente Helvetica predeterminada solo es compatible con ASCII (más algunos extras).

+0

Ya veo ... Lo intentaré. – tybro0103

+0

¿Dónde hay un buen lugar para encontrar archivos .ttf? – tybro0103

+4

Sugiero que pruebe la familia de fuentes DejaVu, que es compatible con una gran parte del estándar Unicode. Usted puede encontrarlo en: http://dejavu-fonts.org/ (La gema de la gamba incluye DejaVu Sans, específicamente en gamba-core/data/fonts/DejaVuSans.ttf) –

4

Aquí hay un ejemplo de gambas con unicode. Descargue la fuente desde aquí. http://www.siyabas.lk/files/iskpota.ttf

#!/bin/env ruby 
# encoding: utf-8 

require 'prawn' 

pdf = Prawn::Document.new 

pdf.font_families.update("Iskoola Potha Unicode"=>{:normal =>"fonts/iskpota.ttf"}) 
pdf.font "Iskoola Potha Unicode" 

pdf.text "යුනිකෝඩ් වනාහි …" 

pdf.move_down 10 
pdf.text " 
පරිගණක මූලිකව අංක මගින් එහි කටයුතු සිදු කරයි. 
ඒවා වචන හා අක්‍ෂරවලට නොයෙකුත් අංක නියම කොට ඒ අංක ගබඩා කිරීම මගින් වචන 
හා අකුරුද ගබඩා කර ගනී. යුනිකෝඩ් ක්‍රමය සොයා ගැනීමට පෙර මෙසේ අකුරුවලට අංක 
නියම කිරීමට කේතන පද්ධති ඉතා විශාල ගණනක් පැවතුනි. උදාහරණයක් ලෙස යුරෝපීය 
සංගමයට පමණක් ඔවුන්ගේ භාෂා කේතන ක්‍රම රාශියක් අවශ්‍ය විය. එසේම එක් භාෂාවක් වන 
ඉංග්‍රීසි භාෂාව සඳහා එහි සියලු අක්‍ෂර, විරාම ලකුණු සහ තාක්‍ෂණික සංකේත සඳහා එක් 
කේතන ක්‍රමයක් නොසෑහුනි. තවද මෙම කේනත ක්‍රම එකිනෙක හා ගැටුනි. එනම් වෙනස් 
කේතන ක්‍රම 2කට එකම අංකය වෙනස් අක්‍ෂර දෙකකට හෝ වෙනස් අංක දෙකක් එකම 
අක්‍ෂරයකට යෙදිය හැක. වෙනස් කේතන ක්‍රම භාවිතයේදී ඕනෑම පරිගණකයක් 
(විශේෂයෙන්ම සර්වර් පරිගණක) වෙනස් කේතන ක්‍රම කීපයක් සමග ක්‍රියා කළ යුතු වේ; 
එහෙයින් දත්ත වෙනස් කේතන ක්‍රම හෝ පරිගණක පද්ධති හරහා ගමන් ගැනීමේදී කේතන 
ක්‍රමවල වෙනස හේතුවෙන් එමදත්ත විනාශ වීමට හෝ අපවිත්‍ර වීමට ඉඩ ඇත." 

pdf.stroke_horizontal_rule 

pdf.render_file "sinhala.pdf" 
+0

solo para forma de texto =) –

Cuestiones relacionadas