Rails et Prawn Prawnto génération PDF - UTF-8?
-
21-09-2019 - |
Question
J'utilise ruby, gambas et prawnto pour générer dynamiquement le texte contenant des pdf dans d'autres langues. Je ne peux pas sembler obtenir le texte dans les langues avec des caractères non-anglais pour apparaître. Il ne jette pas d'erreur ... juste montre un tas de tirets au lieu de caractères. Prawn se vante sur son site au sujet du soutien UTF-8, donc je ne vois pas pourquoi cela est un problème. J'utilise Ruby 1.8.6 (EngineYard).
La solution
Pour Unicode fonctionne, vous devez charger une police TTF qui a les caractères dont vous avez besoin.
La valeur par défaut Helvetica ne supporte que ASCII (plus quelques extras).
Autres conseils
Voici un exemple de crevette rose avec unicode. Télécharger 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"