開かないPDFは全損のように感じられますが、たいていはそうではありません。圧倒的多数のケースで、ページの中身はファイルの中に無傷のまま読める状態で残っています。壊れているのは、各ページがどこから始まるのかをビューアに伝える、ごく小さな内部帳簿の部分です。ファイルを修復するとは、その帳簿を作り直すことであって、文書を作り直すことではありません。
本ガイドでは、実際に何が壊れているのか、復旧できるファイルと本当に失われたファイルをどう見分けるのか、そして何もインストールせずにブラウザでPDFを修復する方法を説明します。
壊れたPDFの中で実際に壊れているもの
PDFは、プレーンなファイルのように連続した文字の流れではありません。番号の付いたオブジェクト——フォント、画像、ページ記述、メタデータ——の集まりであり、その後ろ、ファイルのいちばん末尾に相互参照テーブル、すなわち xref と呼ばれる索引表が置かれています。xrefは各オブジェクトの正確なバイト位置を記録しています。ビューアはPDFを開くとまず末尾へ飛び、xrefを読み、それを頼りに1ページ目を見つけます。
この設計は高速ですが、はっきりした弱点があります。索引が末尾にあり、しかも前方を指しているのです。何かがオブジェクトの位置をずらしたり、ファイルの末尾部分が届かなかったりすると、xref内のすべての位置情報が一斉に狂います。ビューアは48,213バイト目に1ページ目を探しに行き、そこでページではない何かを見つけて諦めます。ページそのものはどこも壊れていないにもかかわらず、です。
- 相互参照テーブルの破損。索引は存在するのに、その位置情報が実態と合わなくなっています。PDF破損の形としては群を抜いて多く、ほぼ確実に修復できます。
- 途中で切れたファイル。アップロード、ダウンロード、コピーのいずれかが早く止まり、ファイルの最後の部分——xrefを含む——が届いていません。ファイルが途切れた位置までは復旧できます。
- 破損したオブジェクトストリーム。個々のオブジェクトが変化しています。多くは、ファイルへの書き込みを誤ったプログラムが原因です。ページ単位で修復可能ですが、損傷したページは書式を失うことがあります。
- 埋め込みフォントの破損。文字は存在するのに、参照先のフォントが読めないため、ページが白紙や四角の羅列として表示されます。標準フォントに置き換えることで、たいていは解決します。
- 不正なヘッダー。ファイルが
%PDF-で始まっていません。多くの場合、そもそもPDFではないか、前に何かが付け足されたことを意味します。
よくあるエラーメッセージの読み解き方
ビューアが表示するメッセージは、何が起きたのかを知る手がかりとしてそれなりに信頼できます。頻出するのは次のものです。
| エラーメッセージ | たいていの意味 | 復旧できるか |
|---|---|---|
| 「このドキュメントを開くときにエラーが発生しました。ファイルが破損しており、修復できませんでした。」 | Adobe自身の修復処理が、壊れたxrefの前で失敗した | たいていは可能。別のツールを使う |
| 「PDFドキュメントを読み込めませんでした。」 | Chromeがヘッダーまたはxrefを解析できなかった | たいていは可能 |
| 「ファイルはサポートされていない形式であるか、破損しています。」 | %PDF- ヘッダーが不正または欠落 | 場合による——本当にPDFか確認を |
| 「dictオブジェクトが必要です。」/「オブジェクト番号が不正です。」 | オブジェクトストリームの破損 | 部分的に——無傷のページは復旧する |
| 開くが、すべてのページが白紙 | 埋め込みフォントの破損または欠落 | たいていは可能 |
| 開くが、途中で終わってしまう | 途中で切れたファイル | 切れた位置までのみ |
| 「この文書は保護されています。」 | これは破損ではありません。暗号化されているだけです | 修復で扱う問題ではない |
この最後の行は、見た目以上に重要です。修復ツールに持ち込まれるファイルのうち相当な割合は、そもそも破損していません。パスワードで保護されているだけで、ビューアのメッセージが分かりにくいのです。パスワードが分かっているなら、修復を試みるのではなく PDF保護 でそのファイルの暗号化を管理してください。
復旧できるものとできないもの
ここでは楽観よりも、正直な見通しを持つことのほうが役に立ちます。あるファイルに時間を注ぐのをやめて原本を探しに行くべき時点が分かるからです。
- ほぼ確実に復旧できる:壊れたxrefテーブル、ビューアが開くのを拒むだけで他は完全なファイル、書き込みの途中で落ちたプログラムが保存したPDF、そしてフォントの問題で白紙に見えるファイル。
- 部分的に復旧できる:途中で切れたファイル。ファイルが終わっているバイト位置までのすべてが手に入り、その先は何もありません。80%まで進んだダウンロードなら、通常はページの約80%が無傷で得られます。
- 復旧できることはまれ:オブジェクトストリームそのものが無関係なデータで上書きされたファイル。故障しかけたディスクや寿命が近いメモリーカードなどが原因です。索引は作り直せますが、指し示す先の中身が本当に失われています。
- そもそも修復の問題ではない:暗号化されたファイル、もともとPDFではなかったファイル(Word文書に
.pdfの拡張子が付いている場合など)、そして0バイトのファイル。0バイトのファイルの中には、復旧すべきものが何も存在しません。
修復の前に試すべき三つのこと
どれも1分とかからず、そしてどれも「破損ではない」種類の問題を実際に解決します。
- 別のビューアで開いてみる。不正な形式のファイルにどこまで寛容かは、ビューアによって大きく異なります。Adobe Acrobatがきっぱり拒否するPDFでも、軽微な構造上の問題を黙って回避するChromeやFirefoxでは開くことがよくあります。ブラウザで開けたなら、そこからPDFとして印刷し直せば、きれいな複製が手に入ります。
- もう一度ダウンロードする。ネットワーク経由で届いたファイルなら、いちばん単純な説明は転送の失敗です。再度ダウンロードし、ファイル自体を疑う前に、サイズを配布元と比べてください。
- 本当にPDFかどうか確かめる。任意のプレーンテキストエディタで開き、最初の行を見ます。本物のPDFは
%PDF-1.4などで始まります。PKと表示されるならそれは拡張子を間違えたZIPかOfficeファイルですし、<!DOCTYPE html>と表示されるなら、文書ではなくエラーページをダウンロードしてしまっています。
三つの手順でPDFを修復する
ファイルが本当に破損している場合、PdfDocShiftでの修復は三つの手順で済みます。インストールも登録も不要で、アップロードされたファイルはすべて2時間後にサーバーから完全に削除されます。
PDF修復ツールを開く
pdfdocshift.com/repair-pdf にアクセスし、破損したファイルをアップロード領域にドロップするか、クリックして選択します。ファイルはそのままの状態でアップロードしてください。事前に名前を変えたり、保存し直したり、開いて書き出したりしてはいけません。いずれの操作も、復旧できたはずの構造を上書きしてしまう恐れがあります。
修復処理を走らせる
ツールは既存の索引を信用せず、ファイル全体を走査して有効なPDFオブジェクトを探し、見つかったものからページツリーを組み直し、相互参照テーブルを作り直し、読み取れない埋め込みフォントを標準フォントに置き換えます。多くのファイルは数秒で完了しますが、非常に大きいものや損傷の激しいものはさらに時間がかかります。
ダウンロードして検証する
修復されたファイルをダウンロードし、1ページ目だけでなくきちんと確認してください。ページ数が想定と一致することを確かめ、そのうえで中ほどの1ページと最終ページを抜き取り検査します。ページが欠けている場合、そのファイルは途中で切れていたのであり、手元にあるものが残存したすべてです。
スキャン文書や画像の多いPDFの修復
スキャン文書はテキスト文書とは壊れ方が異なり、別の事例として扱う価値があります。スキャンされたPDFは大きな画像の入れ物であり、ファイルに占める画像データの割合がはるかに大きくなります。つまり、途中で切れると失われるのは壊れた索引ではなくページそのものであり、不完全なファイルは画像の途中で終わって、最後のページが描きかけのまま残ることがよくあります。
ここから二つのことが言えます。第一に、スキャンされたPDFは他の操作をする前に修復してください。破損したスキャンに圧縮や変換をかけると、損傷が恒久的に固定されがちです。第二に、修復後のファイルは開くのに文字を選択できなくなっている場合、テキストレイヤーが失われています。その場合は修復済みファイルを OCR PDF に通せば、画像を読み取って検索可能なテキストレイヤーが新たに書き込まれ、再構築できます。
救い出したスキャンがその後で扱いにくい大きさになっている場合——壊れた圧縮構造を再利用できないため、修復が原本より大きなファイルを生むことがあります——PDF圧縮 がページ自体に手を触れずにサイズを戻してくれます。
PDFが壊れる原因とその防ぎ方
現実に起きるPDFの破損は、ほぼすべてが少数の原因に行き着き、その大半は避けられます。
- 中断された転送。途中で切れたダウンロード、コピーの最中に切断されたネットワーク共有、書き込みが終わる前に抜かれたUSBメモリ。リムーバブルメディアは必ず正しく取り出し、大きな転送の後はファイルサイズを確認してください。
- クラウド上のファイルを同期中に編集する。Dropbox、OneDrive、Google ドライブがまさにアップロード中のPDFに上書き保存するのは、半分が古く半分が新しいファイルを作る確実な方法です。同期が終わってからファイルを開いてください。
- 保存中にアプリが落ちる。予期せず終了したプログラムが書き出したPDFは、中身はあるのに有効な索引がないのが典型で、まさに修復が効く古典的なケースです。
- 古いサーバー経由でPDFをインライン添付として送る。一部の旧式メールシステムは今でもバイナリ添付にテキストモードの符号化を適用し、転送中にファイルを壊してしまいます。信頼できないシステムを相手にするときは、送信前にファイルを圧縮しておきましょう。
- 劣化したストレージ。不良セクタや寿命の近いメモリーカードは、静かにファイルを壊します。同じドライブ上で複数のファイルが壊れているなら、問題はドライブそのものです。他のことをする前に、まず全部を別の場所へ退避させてください。
よくある質問
いいえ。ただし、ほとんどは修復できます。PDFが開かない原因として群を抜いて多い相互参照テーブルの破損は、ページの中身が無傷で索引を作り直すだけで済むため、ほぼ確実に修復できます。途中で切れたファイルは、切れた位置までは復旧します。ディスク障害で実際の中身が上書きされてしまったファイルは通常復旧できず、0バイトのファイルはどんなツールでも復旧できません。
変わらないはずです。修復が作り直すのはファイルの構造上の索引とページツリーであり、ページの中身はそのまま引き継がれます。唯一の例外は埋め込みフォントです。読み取れないフォントがある場合、修復は標準フォントで置き換えるため、ページ上の文字間隔やレイアウトがわずかに変わることがあります。文言そのものには影響しません。
ブラウザは不正な形式のPDFに対して、Acrobatよりはるかに寛容です。ChromeとFirefoxは、壊れた相互参照テーブルを黙って迂回し、ファイルを走査してページを探します。一方Acrobatは構造を検証し、通らないファイルを拒否します。これは有用な手がかりです。ブラウザで開けるなら中身は無傷であり、修復はほぼ確実に成功します。
たいていはページの損傷ではなくフォントの問題です。ページの中身は存在するものの、ビューアが復号できない埋め込みフォントを参照しているため、何も描画されないのです。標準フォントに置き換える修復処理を行えば、通常は見える文字が戻ります。それでもページが白紙のままなら、その文書には本当に空白ページが含まれているのかもしれません。「空白ページの削除」で、中身のあるページが何ページあるかを確かめてみてください。
アップロードを転送中に暗号化し、ファイルを速やかに削除するツールであれば安全です。PdfDocShiftはすべてのアップロードに256ビットSSLを用い、2時間後に各ファイルをサーバーから完全に削除します。とくに機微な資料については、まずファイルを修復し、共有する前に256ビットAES暗号化を適用する「PDF保護」ツールでパスワードを付けてください。
戻りません。修復と復号はまったく別の処理です。修復ツールが作り直すのは破損したファイルの構造であり、暗号化を解除することも復元することもありません。PDFがエラーメッセージではなくパスワードの入力を求めて開くなら、そのファイルは破損しておらず、保護されているだけです。パスワードが必要になります。