我正在尝试访问http://www.orimi.com/pdf-test.pdf以测试是否存在“ PDF测试文件”。
这是我的代码:
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
但是我得到了:
PDF::Reader::MalformedPDFError: PDF does not contain EOF marker
我搜索后发现问题可能出在PDF文件中。我检查了temp_pdf
变量,只有HTML带有一个空的正文。
我的代码有问题吗?
您不能只将页面源作为PDF文件。
[假设您使用的是Chrome,但其他浏览器类似,它会通过插件显示PDF,这意味着页面源实际上是HTML页面,而PDF通过<embed>
元素显示。在Chrome中检查页面以查看其功能。
要执行您想做的事情,您需要单独下载PDF的源代码,使用PDF :: Reader对其进行解析,然后对文本进行断言。
您将not使用Capybara进行断言。