2010-01-20 19 views
8

J'utilise ruby, crevette et crevette pour générer dynamiquement du texte contenant du pdf dans d'autres langues. Je n'arrive pas à trouver de texte dans les langues avec des caractères non-anglais. Il ne jette aucune erreur ... montre juste un tas de tirets au lieu de caractères. Prawn se vante sur sa page d'accueil sur le support UTF-8, donc je ne vois pas pourquoi c'est un problème. J'utilise ruby ​​1.8.6 (chantier naval).Prawn & Prawnto Rails Génération PDF - UTF-8?

+0

Vous devrez nous donner plus de détails ou un exemple. Quels personnages essayez-vous de rendre, dans quelle police? Est-ce qu'ils ne viennent pas ou avez-vous une erreur ou une exception? Est-ce Ruby 1.8 ou 1.9? Si vous prenez l'exemple UTF-8 sur la page d'accueil de Prawn, collez-le dans un fichier texte et exécutez-le de façon autonome avec votre configuration Ruby, ça marche? –

+0

J'ai édité la question pour répondre à la plupart de cela. – tybro0103

+0

Utilisez-vous Ruby ou Rails? – Katarzyna

Répondre

11

Pour que Unicode fonctionne, vous devez charger une police TTF qui a les caractères dont vous avez besoin.

La police Helvetica par défaut prend uniquement en charge ASCII (plus quelques extras).

+0

Je vois ... Je vais essayer ça. – tybro0103

+0

Où trouver un fichier .ttf? – tybro0103

+4

Je vous suggère d'essayer la famille de polices DejaVu, qui supporte une partie assez importante de la norme Unicode. Vous pouvez le trouver sur: http://dejavu-fonts.org/ (La gemme de Prawn inclut DejaVu Sans, plus précisément dans cawn-core/data/fonts/DejaVuSans.ttf) –

4

Voici un exemple de crevette avec unicode. Téléchargez la police d'ici. 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

juste pour la forme du texte =) –