我有一个小型的Ruby程序,我可以使用Prawn将一些文本打印成PDF,但文本的一小部分是非英文字符。 (其中一些是中文,有些是希腊文等)。当我运行我的程序时,我当然会收到错误Your document includes text that's not compatible with the Windows-1252 character set. (Prawn::Errors::IncompatibleStringEncoding)
If you need full UTF-8 support, use TTF fonts instead of PDF's built-in fonts
。我知道我需要使用TTF字体,但我怎么做呢?我需要在线安装吗?如果是这样,我将把它保存到哪里?我知道这可能是一个愚蠢的问题,但我是Ruby和Prawn的新手。谢谢!
答案 0 :(得分:7)
ttf是一种常见的格式,您可以在Google font下载字体,例如,将字体放在项目的某个目录中,例如/assets/fonts/
下
然后您可以定义一个新的字体系列:
Prawn::Document.generate("output.pdf") do
font_families.update("Arial" => {
:normal => "/assets/fonts/Arial.ttf",
:italic => "/assets/fonts/Arial Italic.ttf",
})
font "Arial"
end
然后,您可以在整个文档中使用该字体。
答案 1 :(得分:0)
如果您使用普通Range
,可以尝试这种方式:
Ruby
答案 2 :(得分:0)
要避免此错误,一种快速而肮脏的解决方法是在将文本写入pdf文件之前将其编码为Windows-1252。
text = text.encode("Windows-1252", invalid: :replace, undef: :replace, replace: '')
此方法的缺点是,如果要转换的字符在Windows-1252编码中无效或未定义,则将其替换为空字符串''
根据您的原始文本,此解决方案可能效果很好,或者您最终可能会在PDF中丢失一些字符。