ブログ/アーカイブ・整理

保存したPDFが開けない|先頭と末尾の数文字で原因を分ける

・

あとで読もうと保存しておいたPDFを、いざ開こうとしたら「ファイルを開けません」と出る。もう一度ダブルクリックしても同じで、ほかのアプリで開いてもだめだった。

こうなったとき、多くの人は「ファイルが壊れた」と考えます。ですが手元で確かめてみると、開けないPDFには、壊れたものと、そもそもPDFではないものが混ざっています。この2つは対処がまったく違います。

私はArchiveSealというWebページ保存用のChrome拡張機能を開発していて、PDFの書き出しも作っています。この記事は、開けないPDFを手元の実測で分けて、そのうえで取り直せる形で残す方法をまとめたものです。

この記事では以下の3つを解説します。

  • 開けないPDFを、先頭と末尾の数文字で見分ける方法
  • 途中で切れたファイルは、直すより取り直すほうが早い理由
  • 次から「開けない」で困らないための残し方

開けないPDFは、3つに分かれます

「開けない」という症状は同じでも、ファイルの中で起きていることは3通りあります。

型ファイルの中取れる手
① 空っぽ0バイト。中身が何も入っていない取り直す
② 途中で切れているPDFの頭はあるが、終わりが欠けている取り直す
③ PDFではない名前だけ .pdf で、中身は別のもの(Webページなど)元の場所で開き直す

このほかに、ファイルには問題が無く開く側のアプリで止まっている場合と、パスワードを求められて先に進めない場合があります。前者は別のアプリで開けば分かり、後者は送ってくれた相手にパスワードを確かめる話です。どちらもファイルを作り直す必要はありません。

「開けない」の原因を探すより先に、そのファイルが本当にPDFなのかを確かめるほうが早く片づきます。

実測:先頭と末尾を見れば、どの型か分かります

手元で試してみました。ArchiveSealのPDF書き出しにも使っているPDFライブラリ(pdf-lib)で、正常なPDFと、わざと壊したファイルを用意し、同じライブラリで読み込めるかを見ています。

ファイル大きさ先頭末尾読み込み
正常なPDF(10ページ)13,215バイト%PDF-1.7%%EOF開けた
同じPDFを98%で切った12,950バイト%PDF-1.7途中の文字開けない
同じPDFを50%で切った6,607バイト%PDF-1.7途中の文字開けない
0バイトのファイル0バイトなしなし開けない(PDFの頭が無い)
名前だけ .pdf のWebページ123バイト<!DOCTYP</html>開けない(PDFの頭が無い)

分かることは2つです。

1つ目は、正常なPDFは %PDF- で始まり、%%EOF で終わっていたことです。先頭が %PDF- でないファイルは、ライブラリが「PDFの頭が見つからない」と言って最初の1文字目で止まりました。

2つ目は、最後の2%が欠けただけで開けなくなったことです。見た目にはほとんど全部そろっているファイルでも、終わりが欠けていれば読み込めません。

「ダウンロードはほぼ終わっていた」は当てになりません。最後まで届いていなければ、開けないことがあります。

切れていても開けることがある

逆の例もありました。3ページの小さなPDFを90%で切ったものは、同じライブラリで3ページとも開けました。欠けたのが、ファイルの末尾にある索引のような部分だけだったためです。

つまり、途中で切れたファイルが開けるかどうかは、どこで切れたかと、開くアプリの寛容さで変わります。あるアプリでは開けて、別のアプリでは開けないという食い違いは、この型で起きます。開けたとしても末尾が欠けたファイルなので、手元に置く1部としては頼れません。

自分のファイルで確かめる手順

同じことは、手元のファイルでも確かめられます。特別な道具は要りません。

  1. 大きさを見る。0バイトなら①です。数ページあるはずの資料なのに数キロバイトしか無いなら、②か③を疑います
  2. テキストエディタで開いて、1行目を見る。%PDF- で始まっていればPDFの頭はあります。<!DOCTYPE html や <html で始まっていれば③で、中身はWebページです
  3. いちばん最後の行を見る。%%EOF で終わっていなければ、②の可能性が高くなります

テキストエディタで開くと大半は読めない文字の羅列になりますが、それで正常です。見るのは最初と最後の数文字だけです。

PDFではないファイルは、元の場所で開き直します

③の型は、ファイルが壊れたのではありません。保存したときに、PDFの代わりに別のものを受け取っていたのです。

ダウンロードのリンクがログインの切れた状態で押されると、PDFの代わりにログイン画面やエラーのページが返ってくることがあります。それが .pdf という名前のまま保存されると、アプリは開こうとして失敗します。

この場合、ファイルをいくら触っても中にPDFはありません。元のページをもう一度開き、ログインし直してから取り直すのが唯一の手です。

空っぽ・途中で切れたファイルは、直すより取り直す

①と②は、中身が欠けています。欠けた部分は手元のどこにも無いので、ファイルを直して取り戻すことはできません。修復をうたう道具で開けるようになる場合もありますが、戻ってくるのは残っていた部分だけです。

そのため、いちばん確実なのは同じものをもう一度取ってくることです。

ここで困るのは、取り直せるかどうかが、保存したときにもう決まっていることです。

  • どこから取ってきたか(URL)を覚えていない
  • 元のページがもう消えている、または中身が変わっている
  • ログインが要る場所で、今はもう入れない

どれか1つでも当てはまると、手元の開けないファイルが唯一の1部になり、そこで行き止まりです。

開けないPDFで本当に困るのは、壊れたことではなく、取り直す先が残っていないことです。

取り直せる形で残す、3つの習慣

次から同じ場面で困らないために、保存するときにやっておくことは3つです。

1. 保存した直後に、1回だけ開く

取り直しがいちばん簡単なのは、保存した直後です。まだ元のページを開いていて、ログインも切れていません。開けることを確かめるのは数秒で済み、そのときに開けなければ、その場で取り直せます。

2. どこから取ったかを、ファイルと一緒に残す

ファイル名に日付と出どころを入れておくと、あとで取り直す先が分かります。探す側から見た名前の付け方は、保存したページの辿り方でも整理しました。

3. 消えそうなページは、PDF以外の形でも残しておく

元のページが消える見込みのあるもの(期間限定の告知、申し込み後の画面など)は、PDFのファイルだけに頼らず、ページそのものも残しておくと、ファイルが開けなくなっても取り直す先が手元に残ります。

PDFの作り方そのものはWebページをPDFで保存する方法に、方式ごとの違いとあわせてまとめています。

開けたのに、中身がおかしいとき

開くことはできたけれど、様子がおかしいという場合は、この記事の範囲の外です。症状ごとに別の記事にまとめています。

ArchiveSealでの扱い

Chrome拡張の ArchiveSeal は、開いているページの見た目を画像として残し、あわせて本文テキスト・URL・保存日時を取得して手元の管理画面に保存する方式です。保存したページは、管理画面から1枚の A4 PDF として書き出せます。書き出したPDFのヘッダーには、URLと日時が入ります。

管理画面に保存したページは、書き出したPDFファイルとは別に手元に残ります。書き出したファイルを消してしまったり、開けなくなったりしても、管理画面からもう一度書き出せます。元のページが消えたあとでも、保存した時点の状態から作り直せるということです。

基本の保存・グループ整理・画像PDF(A4縮小)の出力と、保存したページの本文の閲覧は無料で使えます。

Pro の機能は 10 日間無料で試せます。登録も決済情報の入力も不要で、期間が終わると自動的に Free に戻ります。

よくある質問

保存したPDFが開けないのはなぜですか?

原因は大きく3つに分かれます。中身が0バイトで何も入っていない、ダウンロードが途中で切れて終わりが欠けている、名前だけが .pdf で中身はWebページなど別のもの、の3つです。このほかに、開く側のアプリで止まっている場合と、パスワードを求められて先に進めない場合があります。まずファイルの大きさと、テキストエディタで開いたときの先頭と末尾の数文字を見ると、どれに当たるかが分かります。

PDFが壊れているかどうかは、どうやって確かめればよいですか?

テキストエディタでファイルを開き、1行目と最後の行を見てください。手元で確かめた正常なPDFは %PDF- で始まり、%%EOF で終わっていました。1行目が <!DOCTYPE html や <html で始まっていれば、中身はPDFではなくWebページです。%PDF- で始まっているのに最後が %%EOF で終わっていなければ、途中で切れている可能性が高くなります。

ほぼダウンロードできていれば、開けるのではないですか?

開けないことがあります。手元で10ページのPDFを最後の2%だけ欠けさせたところ、PDFライブラリで読み込めなくなりました。一方、3ページの小さなPDFを90%で切ったものは開けました。どこで切れたかと、開くアプリの寛容さで結果が変わるため、あるアプリでは開けて別のアプリでは開けない、という食い違いが起きます。開けたとしても末尾が欠けたファイルなので、手元に残す1部としては頼れません。

開けないPDFを修復することはできますか?

欠けた部分は手元のどこにも無いので、ファイルを直して中身を取り戻すことはできません。修復をうたう道具で開けるようになる場合もありますが、戻ってくるのは残っていた部分だけです。いちばん確実なのは、元の場所から同じものをもう一度取ってくることです。中身がWebページだった場合は、ログインし直してから取り直してください。

次から開けないPDFで困らないためには、どうすればよいですか?

保存した直後に1回だけ開いて確かめることです。直後なら元のページもまだ開いていて、ログインも切れていないので、その場で取り直せます。あわせて、ファイル名に日付と出どころを入れておくと、あとで取り直す先が分かります。元のページが消える見込みのあるものは、PDFのファイルだけに頼らず、ページそのものも残しておくと安心です。

まとめ

  • 開けないPDFは、①空っぽ ②途中で切れている ③PDFではないの3つに分かれる
  • 見分けるには、ファイルの大きさと、先頭が %PDF-・末尾が %%EOF かを見る
  • 実測では、最後の2%が欠けただけで開けなくなった。「ほぼ届いた」は当てにならない
  • ③はファイルの問題ではない。元の場所でログインし直して取り直す
  • ①と②は直せない。取り直すのが確実で、取り直せるかは保存したときに決まっている
  • 保存した直後に1回開く、出どころを残す、消えそうなページはページごと残す

開けないPDFに気づくのは、たいてい必要になったその日です。保存した直後の数秒で開いて確かめておけば、その日に行き止まりになることはなくなります。