Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Prawn & Prawnto Rails PDF generation - UTF-8?

I'm using ruby, prawn, and prawnto to dynamically generate pdf's containing text in other languages. I can't seem to get any text in languages with non-english characters to show up. It doesn't throw any errors...just shows a bunch of dashes instead of characters. Prawn brags on its homepage about UTF-8 support so I don't see why this is a problem. I'm using ruby 1.8.6 (engineyard).

like image 672
tybro0103 Avatar asked Jan 20 '10 20:01

tybro0103


People also ask

Is a prawn the same as a shrimp?

Shrimp and prawns are completely different creatures. Yes, they're both decapods — which means they have external skeletons and 10 legs — but that's where the similarities end. Shrimp belong to the sub-order Pleocyemata, and prawns belong to the sub-order Dendrobranchiata.

Is eating prawn good for you?

Prawns are a great source of high quality protein, and provide some of the most important vitamins and minerals that make up a healthy diet. They are surprisingly low in calories and are made up of extremely healthy cholesterol.

Is a prawn a shrimp or lobster?

Shrimps can live in freshwater, prawns are found in both fresh and saltwater, while lobsters live in saltwater and brackish water but not fresh water. Shrimps and prawns are swimmers while lobsters are crawling or walking crustaceans. Prawns have three pairs of claw-like legs, while shrimp have only one pair.

What kind of meat is prawn?

Shrimp and prawn are types of seafood that are consumed worldwide. Although shrimp and prawns belong to different suborders of Decapoda, they are very similar in appearance and the terms are often used interchangeably in commercial farming and wild fisheries.


2 Answers

For Unicode to work you need to load a TTF font that has the characters you require.

The default Helvetica font only supports ASCII (plus a few extras).

like image 125
James Healy Avatar answered Sep 21 '22 11:09

James Healy


Here is a example of prawn with unicode. Download the font from here. 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"
like image 41
Gihan De Silva Avatar answered Sep 23 '22 11:09

Gihan De Silva