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. アクセス権限を確認・修正
- サーバー側(Linux)
chmod 644 /var/www/html/sample.pdf chown www-data:www-data /var/www/html/sample.pdf - Windows(IIS)
- 右クリック → プロパティ → セキュリティ → 読み取り権限を付与
- オブジェクトストレージ
- S3のバケットポリシー →
GetObjectアクセスを許可
- S3のバケットポリシー →
ポイント
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・ファイル名クリーンアップ
- エンコード
- URLエンコードを行う (
sample file.pdf→sample%20file.pdf)
- URLエンコードを行う (
- 日本語名の扱い
- 可能なら英数字のみで命名
- 相対パス確認
<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 オプションを付与して起動する方法があります。
まとめ
- まずはPDFファイルが正常か確認。
- 別アプリで開く → 修復ツールを使用
- サーバー側のアクセス権限をチェック。
chmod/chownなどで読み取り権限付与
- ブラウザの設定・CORSヘッダーを整える。
Access-Control-Allow-Origin: *を挿入
- URL/ファイル名をクリーンに。
encodeURI()でエンコード
- キャッシュをクリアして再試行。
- ネットワークとサーバー状態をログで確認。
これらを順に検証していくことで、多くの場合 PDF プレビューが表示されない問題を解決できます。
万が一、対処しても解決しない場合は「PDFのサイズ自体が大きすぎる」「サーバーのI/Oが落ちている」など、より根本的な原因を探る必要があります。ご自身の環境に合わせて、上記リストから該当箇所を重点的に確認してみてください。
Happy PDF viewing!


コメント