Prawn&Prawnto Rails PDF生成 – UTF-8?

我正在使用ruby,prawn和prawnto来动态生成包含其他语言文本的pdf。 我似乎无法使用非英文字符的语言显示任何文本。 它不会抛出任何错误…只显示一堆破折号而不是字符。 Prawn在其主页上讨论UTF-8支持,所以我不明白为什么这是一个问题。 我正在使用ruby1.8.6(发动机厂)。

要使Unicode工作,您需要加载具有所需字符的TTF字体。

默认的Helvetica字体仅支持ASCII(加上一些附加function)。

这是一个带unicode的虾的例子。 从这里下载字体。 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"