- - PR -
[ASP.NET] サーバ側のプリンタでサーバ内のWordファイルを印刷したい
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-09-15 18:55
初めて投稿いたします。
よろしくお願致します。 サーバー側にあるWordファイルを サーバーにインストールされているAcrobatのプリンター (印刷する事でPDFを作るプリンターで、 デフォルトで印刷されるように設定されています) で印刷し、PDFに変換したいのですが、上手くいきません。 App_Code直下にprintPdf.vbを配置し、下記クラスを用意しました。
このクラスをWeb画面のボタンイベントで インスタンスを作成し、実行しました。 結果はローカルのASP.NET開発サーバーでは上手くいきました。 ですが、Webサーバへ配置し、 ネットワーク越しに実行すると長い間実行状態になり、 止まってしまいます(スプールもされていません)。 どのようにすれば印刷できるようになるかわかりません。 権限も調べて見ましたが、違うようです。 元々、サーバ側のリソースを使う事はできないのかも知れませんが・・。 拙い文章ですが、お教えいただけると幸いです。 よろしくお願いいたします。 | ||||||||||||
|
投稿日時: 2006-09-15 19:49
たったの 1 秒で Process を強制的に Kill してしまって良いのでしょうか。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2006-09-16 07:17
ご返答有難う御座います。 私の認識が間違っていると思いますが、 プリンターにキューを送った場合、その時点でOS側に処理が渡ってしまい、プログラム側 とは非同期になると思っていたのでProcessをKillするまで1秒で充分だと思っていました。 実際にソースを変更できるのが週明けになってしまいます。 申し訳ありません。 | ||||||||||||
|
投稿日時: 2006-09-16 11:47
ローカルで試されていますか? この引数では、Microsoft Excel でも Open Office でも印刷されないと思いますよ。 細かいところですが、
のわりに戻り値がないのも、ちょっと気になりました。
タイムアウトとして利用するにしては、かなり厳しい値だと思います。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2006-09-19 11:01
遅くなりまして申し訳ありません。
早速ですが、試した結果報告を兼ねて返信いたします。
ローカルではASP.NET開発用サーバ (Visual Studio2005の標準機能のローカル開発用サーバ) を使って試しました。引数もそのままです。 Verbに"print"を渡しています。 結果は成功し、PDFファイルが作成されました。
確かにありません。修正しました。 Try〜Catchで例外をハンドリングするようにします。 ご指摘ありがとうございます。 また、タイムアウトですが、10秒に設定致しました。 様子を見ながら調節するように致します。 (本当はこういうコーディングはいけないのかもしれませんね・・。) 現在の状況はやはりサーバー側で実行させるとスプールもされません。 恥ずかしながらどのように引数を渡せば印刷されるようになるのかも わかっていません。調べてはいますが、少し時間がかかりそうです。 | ||||||||||||
|
投稿日時: 2006-09-19 11:33
との事なので、どのユーザに定義されたプリンタを使用しているか という問題な気がします。 | ||||||||||||
|
投稿日時: 2006-09-19 14:32
情報ありがとうございます。 サーバ側のプリンタのセキュリティにはEveryoneに 印刷できる権限が付与されています。 調べたところ、旧ASPのCreateObjectで Excel.Application等を使う為にはローカル偽装をしなければ ならないとありました。 もしかすると、OfficeやAcrobatがインストールされているだけの状態 では実行できないのかもしれません。 まったく明後日の方向に調べ物が進んでるような気もしていますが・・・。 現在もやはり出力するに至っていません。 頭がコンガラガッテいます・・。 | ||||||||||||
|
投稿日時: 2006-09-21 19:25
問題解決しておりませんが、実装方法を変えて多少進展しましたので
ご報告として書き込みいたします。 Wordを印刷する際、Processを使用せず、New Word.Applicationで オブジェクトを作成して行う事としました。 (非推奨であるうえに、WordのオブジェクトはExcelほど 行儀がよくないようです) IISの実行ユーザを適切な権限で偽装し、 Wordオブジェクトを参照設定にWord Object Libraryを追加し、 オブジェクトからPrintOutメソッドを実行し印刷が出力されました。 ただ、通常のプリンターからは印刷されるものの、 PDFへの変換印刷はできていません。 何かPDF用に特殊な処理があるのかもしれません。 また、サーバ側にプロセスが残る現象(印刷待ちの状態でQuitが 走るとサーバでダイアログが表示される為、制御処理が必要)等の 問題もあります。 アドバイスを下さった じゃんぬねっと様 かるあ様 ありがとうございました! |