2010-01-20 27 views
8

Tôi đang dùng ruby, prawn và prawnto để tự động tạo văn bản có chứa pdf bằng các ngôn ngữ khác. Tôi dường như không nhận được bất kỳ văn bản nào bằng các ngôn ngữ có ký tự không phải tiếng Anh để hiển thị. Nó không ném bất kỳ lỗi nào ... chỉ hiển thị một loạt các dấu gạch ngang thay vì ký tự. Tôm khoe khoang trên trang chủ của nó về hỗ trợ UTF-8 vì vậy tôi không thấy lý do tại sao đây là một vấn đề. Tôi đang sử dụng ruby ​​1.8.6 (engineyard).Prawn & Prawnto Rails Tạo PDF - UTF-8?

+0

Bạn sẽ cần cung cấp cho chúng tôi một số chi tiết hoặc ví dụ khác. Bạn đang cố gắng hiển thị ký tự nào trong phông chữ nào? Họ chỉ không hiển thị hoặc bạn có lỗi hay ngoại lệ? Đây có phải là Ruby 1.8 hoặc 1.9 không? Nếu bạn lấy ví dụ UTF-8 trên trang chủ Prawn, hãy dán nó vào một tệp văn bản và chạy nó độc lập với thiết lập Ruby của bạn, nó có hoạt động không? –

+0

Tôi đã chỉnh sửa câu hỏi để trả lời hầu hết câu hỏi đó. – tybro0103

+0

Bạn có sử dụng Ruby hoặc Rails không? – Katarzyna

Trả lời

11

Để Unicode hoạt động, bạn cần tải phông TTF có các ký tự bạn yêu cầu.

Phông chữ Helvetica mặc định chỉ hỗ trợ ASCII (cộng với một vài tính năng bổ sung).

+0

Tôi hiểu ... Tôi sẽ thử điều đó. – tybro0103

+0

Đâu là nơi tốt để tìm các tệp .ttf? – tybro0103

+4

Tôi đề nghị bạn hãy thử gia đình phông chữ DejaVu, hỗ trợ một đoạn khá lớn của tiêu chuẩn Unicode. Bạn có thể tìm thấy nó tại: http://dejavu-fonts.org/ (Đá quý Prawn bao gồm DejaVu Sans, đặc biệt là trong tôm-core/data/fonts/DejaVuSans.ttf) –

4

Đây là ví dụ về tôm có unicode. Tải xuống phông chữ từ đây. 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

chỉ dành cho hình dạng văn bản =) –

Các vấn đề liên quan