2010-01-20 65 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