PDF阅读器黄瓜红宝石

Posted

技术标签:

【中文标题】PDF阅读器黄瓜红宝石【英文标题】:PDF Reader Cucumber Ruby 【发布时间】:2017-01-05 08:59:12 【问题描述】:

有人要求我编写一些测试来确认文本是否包含在 PDF 文件中。我遇到了 PDF 阅读器 gem,它非常擅长从文件中呈现文本,除了输出不太好。例如,我有一段文字,应该是 Date of first registration of the product,但 PDF 阅读器将其视为 Date offirstregistrationoftheproduct。因此,当我运行我的断言时,由于文本的间距而失败。

我的代码:

expected_text = 'Date of first registration of the product'

file = File.open(my_pdf, "rb")
  PDF::Reader.open(file) do |reader|
    reader.pages.each do |page|
       expect(page).to have_text expected_text
    end

结果是 RSpec 期望未满足错误。

有没有办法让这个文本正确格式化,以便我的断言可以读取它?

【问题讨论】:

您提供了包含相关文本的示例 PDF 吗? 不幸的是,由于敏感性,尽管是测试数据,我不会被允许上传副本:-( 不能只用文本生成 PDF 吗?如果没有任何实际输入,我不确定如何为您提供帮助。 【参考方案1】:

Reader 的页面对象不是文本。如果您想从 pdf 中获取文本,您可以使用 page.text。使用正则表达式可能会解决您的问题。

试试下面的方法。

expected_text = 'Date of first registration of the product'

file = File.open(my_pdf, "rb")
  PDF::Reader.open(file) do |reader|
    reader.pages.each do |page|
       expect(page.text.match(/#expected_text/)).to be true
    end

【讨论】:

以上是关于PDF阅读器黄瓜红宝石的主要内容,如果未能解决你的问题,请参考以下文章

在rails中验证pdf的数字签名时出现Origami和OpenSSL错误

多款pdf阅读器比较,哪款pdf阅读器比较好?

手机pdf阅读器之轻快PDF阅读器

轻快PDF阅读器阅读pdf文件步骤

PDF小说阅读器软件哪个好之轻快PDF阅读器

pdf打不开是啥原因