質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

1回答

7303閲覧

ASP.netでPDFを表示すると「ファイルの最初に%PDF-がありません」とエラーが発生する

shinich

総合スコア2

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2021/04/05 02:49

編集2021/04/05 07:29

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/04/05 03:34

ASP.NET とは関係ないようです。エラーメッセージでググるとかしてみましたか?
shinich

2021/04/05 03:47

エラーメッセージで検索するとAcrobatのアドオンに関するものしかありません。 記載しているように他のソフトで検証しても同様のエラーが発生しており、ソフトの問題ではありません。また、全てのPDFで発生するわけでもありません。
shinich

2021/04/05 04:02

また、当然ですが質問する前に検索はしております。
退会済みユーザー

退会済みユーザー

2021/04/05 04:14

何にしても ASP.NET の問題ではありません。
shinich

2021/04/05 04:16

その根拠は何でしょうか? またどのカテゴリに質問すればよいのでしょうか?
shinich

2021/04/05 04:23

どの部分を修正して欲しいのかがわからないのですが。修正箇所を教えていただけますか?
退会済みユーザー

退会済みユーザー

2021/04/05 04:25

> 通常は問題なく表示されるのですが、特定のPDFを表示した際 が根拠です。ASP.NET がやっているのは deCompData に取得してきたバイト列を HTTP ストリームに書き込んでいるだけです。質問のコードは変ですが(特に以下の部分)、特定の PDF だけ問題ということなのでそれは関係なさそうです。 Response.AppendHeader("Content-Transfer-Encoding", "base64"); Response.Flush(); Response.End();
退会済みユーザー

退会済みユーザー

2021/04/05 04:29

> どの部分を修正して欲しいのかがわからないのですが。修正箇所を教えていただけますか? ググって調べた結果、どういう対応をしたかを書きましょう。
shinich

2021/04/05 04:41

すいません。ここで質問させてくさい。 対象となるXXX.PDFはFileUploadのHttpPostedFileを取得してバイナリデータをSQLServerのimageに格納しています。 またXXX.pdfはローカル環境ではAcrobat Readerなどで正常に表示されております。 SQLServerから取得したデータをコードの手法でIEに表示した際にエラーが発生するので、ストリームへの書き方に何らかの問題があるのではと疑った次第です。 ちなみにコードの変な部分は通常ではどのように記述するのでしょうか?
退会済みユーザー

退会済みユーザー

2021/04/05 04:48

> またXXX.pdfはローカル環境ではAcrobat Readerなどで正常に表示されております。 自分がググって調べた限りでは IE で開いた時の問題という話でした。上のコメントにも書きましたが、ググって調べた結果、どういう対応をしたかを書きましょう。 > ちなみにコードの変な部分は通常ではどのように記述するのでしょうか? 別に新たにスレッドを立てて質問してください。
退会済みユーザー

退会済みユーザー

2021/04/05 06:43

エラーメッセージでググってヒットした記事のどれとどれをやったのですか? > 上記の検証結果からPDFリーダーの問題ではなく生成されたPDFに問題があるとあたりをつけました。 SQL Server に格納されているファイルが怪しいと思うのですが、それをなんとか確認できませんか? 大元のそこのところがはっきりしないとその先の話は意味がないかも。
shinich

2021/04/05 07:27

失礼。記述もれしていました。 テキストエディタで開くと元ファイルには%PDF-は入っています。
退会済みユーザー

退会済みユーザー

2021/04/05 07:36

ダウンロードする元ファイルは SQL Server に入っているんでしょ? どうやって調べたのですか?
shinich

2021/04/05 07:47

アップロード前のファイルをテキストエディタで開いて確認しました。 >元々の PDF ファイルに %PDF- がないとか? SQLServerのデータ(ダウンロード)を指しているのであれば検証不能です。
退会済みユーザー

退会済みユーザー

2021/04/05 08:34 編集

アップロードして SQL Server に格納するまでに %PDF- だけが欠落するというのは考えにくいですが、ファイルが壊れるということはあるかもしれません。質問者さんが書いている「特定のPDF」の「SQLから取得したバイナリデータが破損」している可能性があるのでしたら、そこは質問者さんの方できちんと押さえてもらえないと・・・ あと、IE ということですので、IE のインターネット一時ファイルの関係で、エラーメッセージでググってヒットした記事に書いてある、 IEのメニュー[ツール]→[インタネットオプション(O)]→「全般」→「インタネット一時ファイル」の「設定」に、「保存しているページの新しいバージョンの確認」には「自動的に確認する」を選択して設定 という話があるのかなぁ・・・ということが想像できるぐらいです。
shinich

2021/04/06 02:10 編集

SQLSweverに格納する段階で破損するのか?SQLServerから取得してブラウザに表示する過程で破損するのか?切り分けが困難であるため、同じような症状で苦戦してい方と有益な情報が共有したくてスレッドを立ち上げたのです。
退会済みユーザー

退会済みユーザー

2021/04/07 12:47

運営の人、事前に何も通告なしに勝手に人の書き込みを削除するというのがここのやり方なの?
shinich

2021/04/12 04:46

運営の対しての不満はこのスレッドには関係のない話です。 直接、運営に問い合わせていただけますようお願いします。
guest

回答1

0

投稿者様

私もSurferOnWwwさんが言われてるようにASP.NETとは関係ないと思います。

また、当然ですが質問する前に検索はしております。

「ファイルの最初に%PDF-がありません」で検索すると

https://www.google.com/search?q=%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E6%9C%80%E5%88%9D%E3%81%AB%EF%BC%85PDF-%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93&rlz=1C1CHBD_jaJP902JP902&oq=%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E6%9C%80%E5%88%9D%E3%81%AB%EF%BC%85PDF-%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93&aqs=chrome..69i57j69i61&sourceid=chrome&ie=UTF-8

いくつか対応策が出てくるのですがそちらは試されたのですか?
試されてるなら試した内容も示してほしいと思います。

https://ac-faq.industrial.panasonic.com/jp/faq_detail.html?id=3322

https://www.riskmonster.com/RiskMonster/pdfInfo.do

投稿2021/04/05 04:47

dekaaki

総合スコア292

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shinich

2021/04/05 05:03

試したことに追記しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問