【问题标题】:Prawn & Prawnto Rails PDF generation - UTF-8?Prawn & Prawnto Rails PDF 生成 - UTF-8?
【发布时间】:2011-01-07 11:15:59
【问题描述】:

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

【问题讨论】:

  • 您需要向我们提供更多细节或示例。你想渲染哪些字符,用什么字体?他们只是没有出现还是您有错误或异常?这是 Ruby 1.8 还是 1.9?如果您使用 Prawn 主页上的 UTF-8 示例,将其粘贴到文本文件中并使用您的 Ruby 设置独立运行,它是否有效?
  • 我编辑了这个问题来回答大部分问题。
  • 你使用 Ruby 还是 Rails?

标签: ruby-on-rails pdf utf-8 prawn prawnto


【解决方案1】:

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

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

【讨论】:

  • 我建议你试试 DejaVu 字体系列,它支持相当大的 Unicode 标准块。您可以在以下位置找到它:dejavu-fonts.org(Prawn gem 包括 DejaVu Sans,特别是在 prawn-core/data/fonts/DejaVuSans.ttf)
  • DejaVu 有很多我需要的字符...虽然没有中文。我确实在我的 Mac 上的 fontbook 程序中找到了一种名为“Arial Unicode MS”的字体,似乎可以做到这一切。谢谢!
  • manual 建议(text/utf8 部分)font("#{Prawn::DATADIR}/fonts/DejaVuSans.ttf") { text "ὕαλον φαγεῖν δύναμαι" } 使用 DejaVuSans 字体。
  • 谢谢。这帮助我找到了支持逻辑符号“因此”的字体。这是支持它的字体列表。 fileformat.info/info/unicode/char/2234/fontsupport.htm
【解决方案2】:

这里是一个带有 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"

【讨论】:

  • 仅用于文本形状 =)
猜你喜欢
  • 2010-12-27
  • 2010-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多