system
大貫 晃一

2017.7.20システム開発 

システムエンジニア

大貫 晃一

Edge でPDFが開けない!

こんにちは、システムエンジニアの大貫です。

 

今回開発している案件で、ハマったので、情報共有のため、ブログに残したいと思います。

 

PDFをphpで開く際に、以下のようなコードを書くかと思います。

<?php
header(‘Content-Type: application/pdf’);
header(‘Content-Length: ‘ . filesize($strPdfFileName));
header(‘Content-Disposition: inline; filename=’ . $strPdfFileName);
header(‘Cache-Control: public’);
header(‘Pragma: public’);
readfile($strPdfFilePass);
?>

 

検証のタイミングで発覚したのですが、IEやFirefox、Chromeでは問題なくPDFビューワーが開き、正常にPDFが開けるのに・・・

Edgeで開こうとすると、白い画面が開き、一瞬読み込みが始まったようなステータスバーが出て動きが止まってしまう。。。

しかも、その間、別のタブで、別のページを開こうとしても、読み込み中のまま返ってこなくなってしまいました。

また、「Content-Type: application/pdf」の形式ではなく、直接サーバ上にファイルを置き、Edgeで「http://xxxxx/xxx.pdf」のように直接開くと、問題なく開けました。

・・・とすると、何か記述が足りないのかと思い、色々なサイトを調べたり、ヘッダー情報を確認したり、コードを修正してみるものの

・・・原因が分かりませんでした。。。

 

そんな中、10分以上過ぎた頃・・・
さっきまで固まっていたEdgeにPDFが正しく表示されておりました!

 

動きが止まってしまういうよりは、裏側で、PDFを一生懸命読み込んでいたみたいです。

 

ちなみにそのPDFファイルは、1000ページ10MBくらいのファイルだったのですが、10分位読み込みにかかったので、試しに10KBのPDFをダウンロードしてみたところ、
一瞬で表示されました!

 

このことから、記述には問題がなく、「Content-Type: application/pdf」の形式では開くのに時間が掛るような不具合がEdgeにあるのでは?

と思い調べてみると・・・

明確なドキュメントは発見できなかったのですが、EdgeのPDFビューワーに問題があり、「Content-Type: application/pdf」で
開けないといった旨の記事を見つけました。

 

お客様から許可をいただき、Edge場合は、「PDFビューワーで表示」ではなく「PDFをダウンロードする」という仕様に変更させていただき

無事対応できました。

<?php
// MS Edgeの場合
header(‘Content-Type: application/force-download’);
header(‘Content-Length: ‘ . filesize($strPdfFileName));
header(‘Content-Disposition: attachment; filename=’ . $strPdfFileName);
readfile($strPdfFilePass);
?>

 

何かの参考になれば・・・。

 

▼参考サイト
https://connect.microsoft.com/IE/Feedback/Details/1621308

現役ウェブ解析士が教えるWebサイトの読み解き方 イメージ
システム開発サービスはこちら
ページTOPへ