2010-01-20 23 views
8

Ich verwende Ruby, Prawn und Prawnto, um dynamisch PDFs zu generieren, die Text in anderen Sprachen enthalten. Ich kann anscheinend keinen Text in Sprachen mit nicht-englischen Zeichen sehen. Es wirft keine Fehler auf ... zeigt nur eine Reihe von Bindestrichen anstelle von Zeichen. Prawn prahlt auf seiner Homepage mit UTF-8-Unterstützung, also sehe ich nicht, warum das ein Problem ist. Ich benutze Ruby 1.8.6 (Motoryard).Prawn & Prawnto Rails PDF-Generierung - UTF-8?

+0

Sie müssen uns etwas mehr Details oder ein Beispiel geben. Welche Zeichen versuchen Sie in welcher Schriftart zu rendern? Werden sie nicht angezeigt oder haben Sie einen Fehler oder eine Ausnahme? Ist das Ruby 1.8 oder 1.9? Wenn Sie das UTF-8-Beispiel auf der Prawn-Homepage verwenden, fügen Sie es in eine Textdatei ein und führen Sie es eigenständig mit Ihrem Ruby-Setup aus, funktioniert es? –

+0

Ich habe die Frage bearbeitet, um das meiste zu beantworten. – tybro0103

+0

Verwenden Sie Ruby oder Rails? – Katarzyna

Antwort

11

Damit Unicode funktioniert, müssen Sie eine TTF-Schriftart mit den von Ihnen benötigten Zeichen laden.

Die Standardschriftart Helvetica unterstützt nur ASCII (plus ein paar Extras).

+0

Ich sehe ... Ich werde das ausprobieren. – tybro0103

+0

Wo ist ein guter Ort, um .ttf-Dateien zu finden? – tybro0103

+4

Ich schlage vor, Sie versuchen die DejaVu Schriftfamilie, die einen ziemlich großen Teil des Unicode-Standards unterstützt. Du findest es unter: http://dejavu-fonts.org/ (Das Prawn-Juwel enthält DejaVu Sans, speziell in Garnelen-Core/Daten/Fonts/DejaVuSans.ttf) –

4

Hier ist ein Beispiel für Garnelen mit Unicode. Laden Sie die Schriftart von hier herunter. 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

nur für Textform =) –