- PR -

iTextでの印刷について

1
投稿者投稿内容
ゆっきー
ベテラン
会議室デビュー日: 2006/04/21
投稿数: 65
投稿日時: 2007-02-06 09:53
asp.netでWEBアプリケーションの開発を行っています。
以下ページを参考にして、iTextを使って動的にPDFを作成するところまではできたのですが、ユーザーの要望で
1.ダウンロードダイアログを表示しないで、直接PDFを開いたり印刷したりできないか
2.PDFを開いた画面で保存機能を使わせないようにできないか
を実現したいのですが、実装方法が分かりません。
IEのセキュリティレベルを下げずにPDFを直接表示する方法・Adobe Readerのツールバーをカスタマイズして表示する方法をご教授ください。

参照ページ
http://www.atmarkit.co.jp/fdotnet/dotnettips/309aspgenpdf1/aspgenpdf1.html

PDF作成ページのソース
' コンテンツ・タイプの設定
Response.ContentType = "application/pdf"
Response.AddHeader("content-disposition", "attachment; filename=result.pdf")

' 新規PDF文書の生成
Dim doc As New Document(PageSize.A4) 'A4縦

' 出力先としてバイナリ・ストリームを設定
PdfWriter.getInstance(doc, Response.OutputStream)

' 出力を開始
doc.open()

' フォントを設定したうえで、入力値に基づいて文字列を文書に追加
Dim font As New Font(BaseFont.createFont("HeiseiMin-W3", "UniJIS-UCS2-H", BaseFont.NOT_EMBEDDED), 12, font.NORMAL)
doc.add(New Paragraph("テストです", font))

' 出力の終了
doc.close()
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-02-06 11:05
サーバ側ではどうにもならないと思いますよ。

クライアント側環境がWindows XPの話だと仮定してですが、
エクスプローラー(IEではない方)の
「ツール」→「フォルダオプション」→「ファイルの種類」
で該当拡張子に対して
「詳細設定」にて「ダウンロード後に開く確認をする」
のチェックをはずすとIE上で開くようになりますが、
要するにクライアント側の設定によるという話。

PDFの保存機能の制御についてはよくわかりませんが、
ブラウザで開いている時点でクライアント側のマシンに
ダウンロードされているわけで、セキュリティ的な視点で言う
「保存させない」ことは不可能でしょう。
「保存がしにくい」という作りにしたところでどれほどの意味があるのか。

参照はできるが改ざんができないようにすればよいというのであれば、
電子署名でも付ければいいのでしょうけども。
nekoyama
ベテラン
会議室デビュー日: 2005/03/12
投稿数: 71
投稿日時: 2007-02-06 11:43
引用:

ゆっきーさんの書き込み (2007-02-06 09:53) より:
asp.netでWEBアプリケーションの開発を行っています。
以下ページを参考にして、iTextを使って動的にPDFを作成するところまではできたのですが、ユーザーの要望で
1.ダウンロードダイアログを表示しないで、直接PDFを開いたり印刷したりできないか


根本的に、サーバ側、クライアント側の処理を理解できていないように思います。
HTTPの仕組みを先に理解したほうが良くないですか?
レスポンスヘッダにContentTypeとか記述しているんですから。。

それと、PDFのプロパティとして、印刷可否の制御はできます。
(JAVA版では)iTextでもサポートしています。

引用:

2.PDFを開いた画面で保存機能を使わせないようにできないか


nagiseさんも書いていますが、クライアント側マシンにダウンロードされている時点で、
一時的にせよ、恒常的にせよ保存されているわけで、すでに保存されているものを「保存させない」ことは不可能でしょう。

引用:

Adobe Readerのツールバーをカスタマイズして表示する方法をご教授ください。


ツールバーのいくつかのカスタマイズは、(JAVA版では)iTextでサポートされていたはずです。

それと、asp.netとか、見たところVBのコードみたいですが、ここはJAVA板ですよ。

ゆっきー
ベテラン
会議室デビュー日: 2006/04/21
投稿数: 65
投稿日時: 2007-02-06 14:51
nagiseさん、未記入さん回答ありがとうございます。

JAVAの会議室にVBのコードで書き込みしてしまってすみません。今後気をつけます。

開いた時点で、クライアント側にもキャッシュされているのは分かっていたのですが、ユーザーから明示的に保存ボタンが出て保存できるのはよろしくないと言われてしまったもので・・・。IEの仕様なので、やっぱり標準の設定では回避できないですね。
暗号化・パスワードをつけるなど、セキュリティを付加してPDFを作成することにします。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-02-06 15:00
引用:

未記入さんの書き込み (2007-02-06 11:43) より:
それと、asp.netとか、見たところVBのコードみたいですが、ここはJAVA板ですよ。



嗚呼、気づかなかったorz
Webシステムの情報がJavaと.NETで分散されているのが嫌だなぁ。
HTTPレベルの問題を投稿してくる人が多いんですよね。
そうすると言語関係なしなんで情報共有できるはずなんですけども。
1

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