私はMechanize
ルビーの宝石を使ってPDFをダウンロードしていますローカルファイルシステムに保存します。Ruby - PDFファイルにEOFマーカーを追加する、または他の方法でバイパスする方法:: Reader :: MalformedPDFError:PDFにEOFマーカーが含まれていません
URL = "www.my-site.com"
agent = Mechanize.new
agent.pluggable_parser.pdf = Mechanize::File # FYI I have also tried Mechanize::FileSaver and Mechanize::Download here
page = agent.get(URL)
form = page.forms.first
button = page.form.button_with(:value => "Some Button Text")
local_file = "path/to/file.pdf"
response = agent.submit(form, button)
response.save_as(local_file)
しかし、私はPDF::Reader
宝石を使用して、このPDFファイルを読み込むしようとすると、私はエラー「PDFは、EOFマーカーが含まれていません」を取得します。
reader = PDF::Reader.new(local_file) # this also happens if I try to use PDF::Reader.new(response.body) and PDF::Reader.new(response.body_io) depending on the different pluggable_parser configurations mentioned above
#> PDF::Reader::MalformedPDFError: PDF does not contain EOF marker
私はローカルでPDFを保存し、それを表示することができるよ、それは正常に見えるが、PDF::Reader
逸品EOFマーカーを逃すそれについて不平を言っています。
私の質問は、PDFに解析するために、このエラーを回避するためにPDFに何かを追加する方法があるのでしょうか?
ありがとうございました。
関連(未回答)質問:PDF does not contain EOF marker (PDF::Reader::MalformedPDFError) with pdf-reader
関連ドキュメント:
- http://mechanize.rubyforge.org/Mechanize/File.html
- http://mechanize.rubyforge.org/Mechanize/Download.html
- http://mechanize.rubyforge.org/Mechanize/FileSaver.html
- https://github.com/yob/pdf-reader
EDIT:
私はどこかに私が取り払う方法を見つけ出すように見えることはできませんいくつかのHTMLに見えるものに続いてダウンロードしたファイルの内容の途中でEOFマーカーを発見しました。私は、PDFコンテンツを分離し、それを解析したいが、依然として問題にぶつかっている。ここでは、完全なスクリプトである私が使用しています: https://gist.github.com/s2t2/c6766846d024edd696586b2bc7fee0bf
はあなただけで、文書の最後にEOFを追加しようとしたことがありますか? –
どうすればいいですか? – s2t2
最良の方法は、保存されているコンテンツ( 'response.save(local_file)')を再考することですが、別のRubyリーダー(つまり、CombinePDFやpdftkベースのリーダー)でPDFを開いて、彼らはエラーを克服することができます...それは動的にそれを修正するよりもエラーがない方が良いです。 – Myst