- PR -

PDF

1
投稿者投稿内容
未記入
会議室デビュー日: 2004/03/17
投稿数: 3
投稿日時: 2004-03-18 00:06
現在翼システムのライブラリを使用し、Stream出力によりクライアント側へPDF出力を行っているのですが、その際クライアント(ブラウザのPDFプラグイン)でPDFを保存しようとした時のファイル名を設定する方法はありますか。

環境は以下です。
OS:HPUX11i
Java:1.3.1_10
APサーバ:NEC社WebOTX5.2
WEBサーバ:SunOneWebサーバ6.0
PDF製品:翼社SVF for Web/PDFJavaEdition

実装方法は以下です。
あるjspからwindow.openでPDF出力用のサーブレットを呼んで、PDFを別ブラウザに表示させています。

サーブレットでは。
response.setContentType("application/pdf")
ByteArrayOutputStream baos = new ByteArrayOutputStream();
intRet = getVrw32().VrSetSpoolFileStream(baos);
のように実装しています。

ここで、ファイル名を設定させる為に
response.setContentType("application/pdf; name=\""+ this.pdfSaveName +"\"");
response.addHeader("Content-Disposition","inline; filename=\""+ this.pdfSaveName +"\"");
response..addHeader("Content-Description","\""+ this.pdfSaveName +"\"");
と試してみたのですがうまく行きません。

よろしくお願いします。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-03-18 02:15
これは翼に依存する問題ですか(たぶん関係ないと思いますが)?でないのであれば質問をもっと一般化したほうが回答しやすくなりますよ。
翼に依存する問題なら翼に聞きましょう。

[ メッセージ編集済み 編集者: インギ 編集日時 2004-03-18 02:22 ]
taku
ぬし
会議室デビュー日: 2002/11/12
投稿数: 918
お住まい・勤務地: 墨田区→中野区
投稿日時: 2004-03-18 09:37
引用:

未記入さんの書き込み (2004-03-18 00:06) より:
ここで、ファイル名を設定させる為に
response.setContentType("application/pdf; name=""+ this.pdfSaveName +""");
response.addHeader("Content-Disposition","inline; filename=""+ this.pdfSaveName +""");
response..addHeader("Content-Description","""+ this.pdfSaveName +""");
と試してみたのですがうまく行きません。


 確かに間違ってますね。
この手のって、ここの掲示板でも何度も投稿されているような気がします。

引用:

これは翼に依存する問題ですか(たぶん関係ないと思いますが)?でないのであれば質問をもっと一般化したほうが回答しやすくなりますよ。
翼に依存する問題なら翼に聞きましょう。


 提示された部分を見る限り、翼固有の問題ではないと思います。
佐々木
大ベテラン
会議室デビュー日: 2003/03/30
投稿数: 121
投稿日時: 2004-03-18 11:37
ご質問の「ファイル名」というのは以下のどちらでしょう。

(1) PDFをブラウザ上で表示するのではなく、ブラウザが「ファイルの保存」ダイアログを表示してローカルディスクへ保存する時のファイル名。
(2) PDFをブラウザ上で表示(AcrobatReader起動)して、AcrobatReaderから「保存」アイコンをクリックした場合のファイル名。

仮に(2)だとするとサーブレット側では制御できないと思います。少なくとも私はやり方を知りません。

以下は (1) だとしての話です。
引用:

ここで、ファイル名を設定させる為に
response.setContentType("application/pdf; name=""+ this.pdfSaveName +""");
response.addHeader("Content-Disposition","inline; filename=""+ this.pdfSaveName +""");
response..addHeader("Content-Description","""+ this.pdfSaveName +""");
と試してみたのですがうまく行きません。



Content-Type は application/pdf だけで良いです。name パラメータは不要です。

Content-Disposition は attachment になっていないと「ファイルの保存」ダイアログが出ずに AcrobatReader が起動してしまうでしょう。なにせ Content-Type が application/pdf になっているから、ブラウザはこれが PDF であることがわかるわけで、この場合 Content-Disposition が inline になっていたら AcrobatReader を起動して表示しようとするのが自然な動きです。Content-Type が application/octet-stream であれば、inline でも「ファイルの保存」ダイアログが出るでしょう。

Content-Description は特に関係ありません。無くても平気です。
未記入
会議室デビュー日: 2004/03/17
投稿数: 3
投稿日時: 2004-03-18 20:04
引用:

インギさんの書き込み (2004-03-18 02:15) より:
これは翼に依存する問題ですか(たぶん関係ないと思いますが)?でないのであれば質問をもっと一般化したほうが回答しやすくなりますよ。
翼に依存する問題なら翼に聞きましょう。

[ メッセージ編集済み 編集者: インギ 編集日時 2004-03-18 02:22 ]



翼に問い合わせましたが
「弊社ではStream出力で作成されるPDF
に対してのファイル名をしていする関数の方は用意させて頂いておりません。」
との回答でした。
未記入
会議室デビュー日: 2004/03/17
投稿数: 3
投稿日時: 2004-03-18 20:06
引用:

サさんの書き込み (2004-03-18 11:37) より:
ご質問の「ファイル名」というのは以下のどちらでしょう。

(1) PDFをブラウザ上で表示するのではなく、ブラウザが「ファイルの保存」ダイアログを表示してローカルディスクへ保存する時のファイル名。
(2) PDFをブラウザ上で表示(AcrobatReader起動)して、AcrobatReaderから「保存」アイコンをクリックした場合のファイル名。

仮に(2)だとするとサーブレット側では制御できないと思います。少なくとも私はやり方を知りません。

以下は (1) だとしての話です。
引用:

ここで、ファイル名を設定させる為に
response.setContentType("application/pdf; name=""+ this.pdfSaveName +""");
response.addHeader("Content-Disposition","inline; filename=""+ this.pdfSaveName +""");
response..addHeader("Content-Description","""+ this.pdfSaveName +""");
と試してみたのですがうまく行きません。



Content-Type は application/pdf だけで良いです。name パラメータは不要です。

Content-Disposition は attachment になっていないと「ファイルの保存」ダイアログが出ずに AcrobatReader が起動してしまうでしょう。なにせ Content-Type が application/pdf になっているから、ブラウザはこれが PDF であることがわかるわけで、この場合 Content-Disposition が inline になっていたら AcrobatReader を起動して表示しようとするのが自然な動きです。Content-Type が application/octet-stream であれば、inline でも「ファイルの保存」ダイアログが出るでしょう。

Content-Description は特に関係ありません。無くても平気です。




(2)のファイル名になります。
サーレブットでは制御ができないのですね?
1

スキルアップ/キャリアアップ(JOB@IT)