pdf プレビュー表示をしようとしているファイルは、閲覧できない?原因と対処法を徹底解説

PDFをプレビューする際に「閲覧できない?」という症状に直面すると、作業フローが大幅に遅くなることがあります。
この記事では、PDFプレビューが表示されない原因を網羅的に洗い出し、それぞれに対する具体的な対処法をまとめました。
「PDFが表示されない問題はどう解決すればいいのか?」という疑問を持つ初心者からプロまで、すぐに実行できるチェックリストを準備しています。


PDFプレビューが表示されない主な原因

1. ファイル自体に破損やエラーがある

  • PDFが正しく完成していない
  • 内部構造が破損している
  • バージョンが古い

2. アクセス権限(パーミッション)の不備

  • 読み取り権限がない
  • Webサーバーでの許可設定が不十分

3. Webブラウザの設定・拡張機能の影響

  • PDFビューワー拡張が無効化
  • JavaScriptがブロック
  • CORS(クロスオリジンリクエスト)の設定不備

4. URL・ファイル名に問題がある

  • 特殊文字(空白・日本語等)が含まれている
  • 相対パスのミス

5. キャッシュや一時ファイルの競合

  • 古いキャッシュが残っている
  • ブラウザの一時ファイルが破損

6. ネットワーク・サーバー側の障害

  • HTTPステータスコードが404/500
  • サーバーが落ちている

原因別対処法

1. PDFファイル自体を修復する

手順 内容 ツール
1️⃣ 別ツールで開く Adobe Acrobat, Foxit Reader, SumatraPDF など
2️⃣ PDF修復機能を利用 Adobe Acrobat Pro の「ファイル」>「開く」>「修復」
3️⃣ 再保存 同じタイトルで再保存するとバイナリが正直化
4️⃣ オンライン修復サービス ILovePDF, Smallpdf など

ポイント
PDFが「開けない」や「壊れた」場合はファイル自体が問題。デスクトップビューアで問題なく開けるか確認し、できない場合は修復→再保存を検討。

2. アクセス権限を確認・修正

  1. サーバー側(Linux)
    chmod 644 /var/www/html/sample.pdf
    chown www-data:www-data /var/www/html/sample.pdf
    
  2. Windows(IIS)
    • 右クリック → プロパティ → セキュリティ → 読み取り権限を付与
  3. オブジェクトストレージ
    • S3のバケットポリシー → GetObject アクセスを許可

ポイント
Webサーバーがファイルにアクセスできないと、HTTP 403 が返るので「ブラウザが404ではなく403を返す」か確認。

3. ブラウザ設定とCORS対策

施策 実際の設定
PDF.jsを使う <embed src="./pdfjs/web/viewer.html?file=sample.pdf">
CORSヘッダー設定 Access-Control-Allow-Origin: * (推奨は自ドメイン)
PDFビューワー拡張を有効化 Chrome拡張で「PDF Viewer」は有効にする
JavaScript有効化 ブラウザの設定でJSを有効に

ポイント
サーバー側で Access-Control-Allow-Origin を設定しないと、外部からのリクエストがブロックされる。ローカル開発時は localhost:PORT を許可する。

4. URL・ファイル名クリーンアップ

  1. エンコード
    • URLエンコードを行う (sample file.pdfsample%20file.pdf)
  2. 日本語名の扱い
    • 可能なら英数字のみで命名
  3. 相対パス確認
    • <a href="./files/sample.pdf">
    • ルートパスなら /files/sample.pdf

ポイント
ブラウザは「%」でエンコードされていないと正しく解釈できない。

5. キャッシュのクリアと再試行

方法 実際の操作
Hard Reload Chrome: Ctrl+Shift+R or Ctrl+F5
Clear Browser Cache 設定 → プライバシーとセキュリティ → 「閲覧履歴データを消去」
Application Cache DevTools → Application → Clear Storage
Service Worker解除 DevTools → Application → Service Workers → Unregister

ポイント
古いキャッシュが残っていると、閲覧できない状態がキャッシュと混同されることがある。

6. ネットワークとサーバー状態を点検

ツール 使い方
curl curl -I http://example.com/sample.pdf → ヘッダー確認
wget wget -S http://example.com/sample.pdf
ブラウザコンソール ネットワークタブでステータスコードを確認
ログ Apache/var/log/apache2/error.log、Nginx/var/log/nginx/error.log

ポイント
ステータスコードが 404/500 になっていないか確認。サーバーの再起動、設定変更後も再チェック。


よくある質問(FAQ)

Q1. PDF自体は開けるけど、ブラウザのプレビューではエラーになる。
A1. ブラウザのPDFビューワーが無効化されているか、CORSヘッダーが設定されていない可能性があります。PDF.jsを利用してみてください。

Q2. 画像が埋め込まれたPDFでプレビューが止まる。
A2. 画像のサイズが大きく、読み込み時間が長い場合があります。画像を圧縮して再生成し、Cache-Control: max-age=604800 を付与してキャッシュを有効化すると改善します。

Q3. Windows 10 の Edge で「ページが存在しません」と表示される。
A3. Edge の「WebサイトにPDFが組み込めない」問題は、PDFのバッファサイズ制限。設定ファイルで -enable-webgpu を無効化し、--disable-extensions オプションを付与して起動する方法があります。


まとめ

  1. まずはPDFファイルが正常か確認。
    • 別アプリで開く → 修復ツールを使用
  2. サーバー側のアクセス権限をチェック。
    • chmod / chown などで読み取り権限付与
  3. ブラウザの設定・CORSヘッダーを整える。
    • Access-Control-Allow-Origin: * を挿入
  4. URL/ファイル名をクリーンに。
    • encodeURI() でエンコード
  5. キャッシュをクリアして再試行。
  6. ネットワークとサーバー状態をログで確認。

これらを順に検証していくことで、多くの場合 PDF プレビューが表示されない問題を解決できます。
万が一、対処しても解決しない場合は「PDFのサイズ自体が大きすぎる」「サーバーのI/Oが落ちている」など、より根本的な原因を探る必要があります。ご自身の環境に合わせて、上記リストから該当箇所を重点的に確認してみてください。

Happy PDF viewing!

コメント