我正在使用pdftk解析pdf文件中的标题,其中包含各种语言特定字符。
我需要执行此ruby on rails应用程序正在使用ruby 1.8.7和rails 2.3.14,因此内置于ruby 1.9中的任何编码解决方案都不适合我。
我需要做的例子:
如果标题包含ü,当我使用pdftk(命令行或使用ruby pdf-toolkit gem)阅读pdf内容时,“ü”将转换为ü
在我的应用程序中,我真的想在ü中使用它,因为这似乎可以在网页和XML文件中满足我的需求。
我可以使用
在ruby中显式转换字符>> string = "ü"
=> "ü"
>> string.gsub("ü","ü")
=> "ü"
但显然我不想一个接一个地做这件事。
我尝试使用Iconv来做这件事,但我觉得我不知道要指定什么来将其转换为渲染角色。我想也许这只是一个utf-8但似乎没有转换为渲染角色
>> Iconv.iconv("latin1", "utf-8","ü").join
=> "ü"
我对在这里使用什么格式来获取渲染角色的最终结果感到困惑。
那么如何使用Iconv或其他工具对从pdftk转换为此HTML代码的所有字符进行此转换?
或者,当我首先阅读pdf文件时,如何告诉pdftk这样做!
答案 0 :(得分:1)
好的 - 我认为这里的问题是pdftk返回的代码是HTML,因此首先取消HTML的工作路径
>> Iconv.iconv("utf8", "latin1", CGI.unescapeHTML(string) ).join
=> "ü"
<强>更新强>
使用以下
pdf = PDF::Toolkit.open(file)
pdf.title = Iconv.iconv("utf8", "latin1", CGI.unescapeHTML(pdf.title)).join
这似乎适用于大多数语言,但是当我将它应用于日语和中文时,它会破坏事物并且不会导致原始文件出现在PDF中。
更新:
越来越近 - 看来html代码pdftk放入日文和中文的标题已经正确呈现,如果我只是取消它们并且不尝试任何Iconv转换。
CGI.unescapeHTML(pdf.title)
这正确呈现。
那么......在尝试应用其他语言所需的转换之前,如何测试pdf.title以提前查看中文或日文(双字节?)?
答案 1 :(得分:0)
可能是这样的:
string.gsub(/&#\d+;/){|x| x[/\d+/].to_i.chr}