PDF

 先日、PHPでPDFを生成するTCPDFを使ったときにパソコンでは問題なくPDFが表示できるのに、スマートフォンだと表示できない現象が発生しました。下記にその対処方法を明記しておきます。

 TCPDFでPDFを表示しようとすると

TCPDF ERROR: Some data has already been output, can’t send PDF file

などと表示され、PDFが表示できない場合があります。その対策として、「ob_end_clean()」を「$pdf->Output()」の前に入れると出力用バッファがクリアされて表示できるようになるという情報があります。

風の谷便り: PHPでPDFを出力したいんだけど(解決!)

 しかし、どういう訳だかパソコンのブラウザでは特に問題なく表示できるのに、スマートフォンのブラウザでは上手く表示できない現象が発生しました。今回この現象が発生したのはAndroid端末(iPhone系は未確認)で標準ブラウザでもGoogle Chromeでもダメでした。

 その後、いろいろ試した結果、表示させようとしているページの拡張子に「*.pdf」を付けたら正常に表示されました!私の環境だけなのかわかりませんが、今回はこれで成功しました。

 今回表示できなかったシステムはPHPのフレームワーク「CakePHP」を使っていたのですが、ここで表示しようとしているページは

http://hoge.com/users/pdf/abcd

といった感じのURLになります。CakePHPを利用すると上記のように拡張子無しでURLが生成されます。このURLを

http://hoge.com/users/pdf/abcd.pdf

と、いう感じに末尾に「*.pdf」を付けたら正常に表示されました。スマホのブラウザがなぜこのようなしようなのかなどは調べていませんが、同じような原因で悩んでいる人がいましたら、参考にしてみてください。結構悩んでしまいました(^^ゞ

アマゾンのサーバでエラーが起こっているかもしれません。
一度ページを再読み込みしてみてください。