Asp.netでPDFが表示できない
ASP.netでFileUploadを使いHttpPostedFileを取得してバイナリデータをSQLServerのimageに格納しています。
格納されたPDF情報を取得してASP.netでブラウザ表示する際に、通常は問題なく表示されるのですが、
特定のPDFを表示した際に「ファイルの最初に%PDF-がありません」とエラーが発生するケースがあり
SQLから取得したバイナリデータが破損しているのか、PDF生成方法に問題があるのか
原因がわかりません。
※対象となっているPDFはSQLServerへのアップロード前は問題なく表示されることを確認しております。
発生している問題・エラーメッセージ
・IEでPDFを表示しようとすると「ファイルの最初に%PDF-がありません」と出力されPDFが開かない
エラーメッセージ
「ファイルの最初に%PDF-がありません」
該当のソースコード
asp.net C#```asp.net C#
ソースコード
//PDFの登録
//UpFile = FileUpload
HttpPostedFile hph = UpFile.PostedFile;
byte[] compData = null;
byte[] img = new byte[hph.ContentLength]; hph.InputStream.Read(img, 0, hph.ContentLength); compData = img;
//compDataをSQLのテーブル.image型へ格納
//PDFの取得
DataRow dr = SQLServerから取得。
byte[] deCompData = (byte[])dr["data"];
Response.ContentType = "application/pdf"; Response.AppendHeader("Content-Disposition", "inline"); Response.AppendHeader("Content-Transfer-Encoding", "base64"); Response.BinaryWrite(deCompData); Response.Flush(); Response.End();
試したこと
https://helpx.adobe.com/jp/acrobat/kb/cq07071635.html
この記事を参考に検証しました。
・一時ファイルの削除 → 効果なし
・IEのアドオンを無効にしてPDFファイルをダウンロードしてAcrobatReaderでファイルを開いても同様のエラーが発生する。
・Acrobat Readerをアンインストールして別のリーダー(PDF-XChange Editor)を使用してダウンロード後のファイルを開いても表示されない。
(エラーメッセージは出力されずに白い画面になる)
・Acrobat Readerを再インストール → 結果変わらず
追記
・PDFファイルをテキストエディタで開くと先頭に「%PDF-」は入っており、元PDFの問題ではないよう思えます。
・上記の検証結果からPDFリーダーの問題ではなく生成されたPDFに問題があるとあたりをつけました。
補足情報(FW/ツールのバージョンなど)
ブラウザ:Internet Explorer 11
アドオン:Adobe PDF Reader
ソフト:Adobe Acrobat Reader DC
Webサーバー:IIS 8