如何检查PDF文件是否与Ruby/Rspec有链接?

如何检查PDF文件是否与Ruby/Rspec有链接?,ruby,pdf,rspec,pdf-generation,Ruby,Pdf,Rspec,Pdf Generation,我用它来测试Rails应用程序中生成的PDF的内容是否正确 我想检查PDF文件是否包含带有特定URL的链接。我查看了,但没有找到任何与此主题相关的有用信息 可以用Ruby/RSpec测试PDF中的URL吗 我希望: expect(urls_in_pdf(pdf)).to include 'https://example.com/users/1' 由于pdf inspector似乎只返回文本,因此您可以尝试直接使用(pdf inspector无论如何都会使用它) 无论如何,我只是快速浏览了一下g

我用它来测试Rails应用程序中生成的PDF的内容是否正确

我想检查PDF文件是否包含带有特定URL的链接。我查看了,但没有找到任何与此主题相关的有用信息

可以用Ruby/RSpec测试PDF中的URL吗

我希望:

expect(urls_in_pdf(pdf)).to include 'https://example.com/users/1'

由于
pdf inspector
似乎只返回文本,因此您可以尝试直接使用(
pdf inspector
无论如何都会使用它)

无论如何,我只是快速浏览了一下github页面。我不确定
原始内容
到底返回了什么。但也有一种低级方法可以直接访问pdf的对象:

reader  = PDF::Reader.new("somefile.pdf")
puts reader.objects.inspect
有了它,当然可以获得url。

包含一个名为text的每个页面的方法。 做点像

    pdf = PDF::Reader.new("tmp/pdf.pdf")
    assert pdf.pages[0].text.include? 'https://example.com/users/1'

假设你要找的是第一页

你到底面临什么问题?由于您使用的是
pdf inspector
您拥有pdf的全部文本,对吗?@DoktorOSwaldo我想检查pdf中包含的链接是否具有正确的HREFyeah,那么您不应该只搜索文本中的
标记吗?@DoktorOSwaldo pdf inspector和pdf reader无法从pdf内容中读取href。如果PDF包含类似于
PDF的链接,则PDF阅读器仅返回解析文本中的URL
    pdf = PDF::Reader.new("tmp/pdf.pdf")
    assert pdf.pages[0].text.include? 'https://example.com/users/1'