2010-01-20 50 views
8

我使用ruby,prawn和prawnt来动态生成包含其他语言的pdf文本。我似乎无法使用非英文字符的语言显示任何文本。它不会抛出任何错误......只显示一串破折号而不是字符。虾在它的主页上吹嘘UTF-8支持,所以我不明白为什么这是一个问题。我使用红宝石1.8.6(engineyard)。对虾和Prawnto Rails PDF生成 - UTF-8?

+0

您需要给我们一些更多的细节或示例。你想渲染哪些字符,以什么字体显示?他们只是没有出现,或者你有错误或例外?这是Ruby 1.8还是1.9?如果您在Prawn主页上使用UTF-8示例,请将其粘贴到文本文件中,并使用Ruby安装程序单独运行它,它是否有效? – 2010-01-20 20:52:01

+0

我编辑了这个问题来回答大部分问题。 – tybro0103 2010-01-20 21:22:03

+0

你使用Ruby还是Rails? – Katarzyna 2015-04-27 01:36:50

回答

11

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

默认的Helvetica字体只支持ASCII(加上一些额外的)。

+0

我明白了......我会试试看。 – tybro0103 2010-01-21 03:14:59

+0

哪里可以找到.ttf文件的好地方? – tybro0103 2010-01-21 14:58:16

+4

我建议你尝试DejaVu字体系列,它支持Unicode标准的相当大的一部分。你可以在http://dejavu-fonts.org/找到它(The Prawn gem包括DejaVu Sans,特别是对虾核心/数据/字体/ DejaVuSans.ttf) – 2010-01-21 18:12:14

4

这是一个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" 
+0

仅用于文字形状=) – 2016-04-25 21:09:08