首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何测试PDF文件的内容

如何测试PDF文件的内容
EN

Stack Overflow用户
提问于 2020-01-03 22:01:35
回答 1查看 1.1K关注 0票数 2

我试图访问http://www.orimi.com/pdf-test.pdf来测试是否存在"PDF“。

这是我的密码:

代码语言:javascript
复制
it 'pdf test' do
        visit 'http://www.orimi.com/pdf-test.pdf'
        puts page.title
        sleep 5
        convert_pdf_to_page
        expect(page).to have_content 'PDF Test File'
end

def convert_pdf_to_page
        temp_pdf = Tempfile.new('pdf')
        temp_pdf << page.source.force_encoding('UTF-8')
        reader = PDF::Reader.new(temp_pdf)
        pdf_text = reader.pages.map(&:text)
        temp_pdf.close
        page.driver.response.instance_variable_set('@body', pdf_text)
end

但我得到了:

代码语言:javascript
复制
PDF::Reader::MalformedPDFError: PDF does not contain EOF marker

我搜索了一下,发现问题可能是PDF文件。我检查了temp_pdf变量,只有一个空体的HTML。

我的代码有什么问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-06 15:34:48

PDF是一种棘手的格式,不同的读者对PDF文件中的意外内容有不同的反应。有些人会崩溃,有些人会假设不会崩溃。

我猜这就是这里发生的事。当您在browser/pdf阅读器中打开文件时,它可以工作,但是PDF::Reader不能处理任何不符合标准的内容。

尝试使用不同的宝石,折纸似乎有很好的意见。我用你的档案试过了,看起来很管用:

代码语言:javascript
复制
> require 'origami'
> pdf = Origami::PDF.read '/tmp/pdf-test.pdf'
> pdf.grep(/Not existing/).any?
=> false
> pdf.grep(/PDF Test File/).any?
=> true

供参考(我是如何想出这个答案的):

我在谷歌上搜索了PDF::Reader::MalformedPDFError: PDF does not contain EOF marker并找到了这条线,这表明这是“工作”PDF的一个更常见的问题。最后一条消息建议使用折纸,它(在检查后)似乎能够处理有关的PDF。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59585872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档