gpt4 book ai didi

ruby - Ruby pdf-reader 出现未知字形宽度错误

转载 作者:太空宇宙 更新时间:2023-11-03 16:52:50 24 4
gpt4 key购买 nike

我有一个脚本,它使用 pdf-reader 和其他 gem 来解析一个大的 pdf 文件并将其拆分为多个 pdf。我一直在将其设置为在新机器上运行,现在在尝试运行测试时出现此错误:

Failure/Error: SrnProcessor.process_main_pdf(main_pdf_path)
ArgumentError:
Unknown glyph width for 9 Helvetica

我看到其他几个人在这里遇到这个问题:https://github.com/yob/pdf-reader/issues/102但还没有解决方法。在我看来,这一定是我的设置问题,而不是 gem 或 pdf,因为在其他机器上我没有任何问题。我在 linux(Mageia 3 64 位)上运行 ruby​​ 1.9.3,并尝试切换到 gem 的多个版本但没有成功。对我所缺少的有什么建议吗?谢谢!

最佳答案

我在使用 ruby​​ 1.9.3 时遇到了同样的问题。我已将范围缩小到至少在 pdf 中包含商标 R。我把它归结为 pdf gem 中的这段代码:

 def glyph_width(code_point)
return 0 if code_point.nil? || code_point <= 0

m = @metrics.char_metrics_by_code[code_point]
if m.nil?
names = @font.encoding.int_to_name(code_point)
m = names.map { |name|
@metrics.char_metrics[name.to_s]
}.compact.first
end

if m
m[:wx]
elsif @font.widths[code_point - 1]
@font.widths[code_point - 1]
else
raise ArgumentError, "Unknown glyph width for #{code_point} #{@font.basefont}"
end
end

我把它改成了这个,它只会忽略它无法识别的字符。我不确定 ruby​​ 2.0 是否解决了这个问题。

  def glyph_width(code_point)
return 0 if code_point.nil? || code_point <= 0

m = @metrics.char_metrics_by_code[code_point]
if m.nil?
names = @font.encoding.int_to_name(code_point)
m = names.map { |name|
@metrics.char_metrics[name.to_s]
}.compact.first
end

if m
m[:wx]
elsif @font.widths[code_point - 1]
@font.widths[code_point - 1]
elsif(m == nil)
return 0
else
p(m)
raise ArgumentError, "Unknown glyph width for #{code_point} #{@font.basefont}"
end
end

更好的解决方案可能是在 char_metrics_by_code 中捕获 code_point,在本例中为 9

关于ruby - Ruby pdf-reader 出现未知字形宽度错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17116175/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com