· 

Visualforceで生成したPDFが、エラーとなる

Visualforceで生成したPDFが、Google Chromeで表示されない

Visualforceで生成したPDFをApexクラスでAttachmentにinsertしたPDFファイルをChrome表示すると、

「PDF ドキュメントを読み込めませんでした。」のエラーメッセージが表示されてしまう。

 

他のブラウザでは問題なく表示されるし、保存してローカルで表示することもできた。

 

Chromeで開くことができるPDFファイルも存在していたため、

エラーとなる添付ファイルと何が違うのか、Attachmentの各項目をSELECTして比較してみたところ、

Contenttypeが異なっていることが分かった。

 

開くことができないファイルのContenttypeは「pdf」。

それに対し、開くことができるファイルは「application/pdf」となっていた。

 

Apexでのinsert処理の中に、この項目をセットしている箇所があったので、

 

Attachment att = new Attachment( Contenttype = 'application/pdf' );

 

のように修正したところ、Chromeでも問題なく表示することができた。

 

Attachmentにあるファイルを「/servlet/servlet.FileDownload?file=」で表示するときのレスポンスには

Contenttypeが含まれているっぽい。