- - PR -
C#(.NET)でのPDFコマンド印刷について
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-06-21 00:42
こんにちは。
C#(VS2008)でWebフォーム開発をしています。 PDFファイルをコマンド印刷したく、VB.NETでは過去ログなどを調べて以下の プログラミングで確認できました。 ========================================================================= Dim pro As New Process() Dim procID As Integer Dim filepath As String = "C:\TokyoMetoroNetwork.pdf" procID = Shell("C:\Program Files\Adobe\Reader 8.0\Reader\AcroRd32.exe" & " /n /t " & filepath) pro = Process.GetProcessById(procID) pro.WaitForExit(3000) pro.Kill() ========================================================================= ここで使用しているProcess()とShell()はC#でやるにはどのようにしたら 良いのでしょうか?ご教示下さい。 Processは「System.Diagnostics」をusingすればよさそうですが Shellは「Microsoft.VisalBasic.Ineraction.Shell()」が見つかりません。 宜しくお願いいたします。 | ||||||||
|
投稿日時: 2008-06-21 06:23
どちらも Process クラスを使用してできますよ。 Shell メソッドも Microsoft.VisualBasic.Interaction にありますけど。 それより大丈夫でしょうか。 Web ということは、Web サーバーでこれを実行するわけですよね。 当然 PDF はクライアントには出力されませんし、サーバーでのプリンタの設定 やらユーザーの権限やら複雑に絡んでくると思うのですが。 そもそもクライアントに PDF を出力しようとしてこういった処理を書いたので あれば、筋違いだと思いますよ。 _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 | ||||||||
|
投稿日時: 2008-06-21 10:52
ぽぴ王子さん、回答ありがとうございます!
仰るとおり、WebServerに1つPrinterDriverをインストールして、 通常出力として1箇所に出力する予定です。 ネットワークプリンターはDriverをインストールするとして、 ユーザー権限とおっしゃるのはNTFSアクセス権限の 「IUSER_マシン名」や「Network Service」のIISに関係するところのことでしょうか。 プリンターに対しても上記の権限が関係してくるのであれば ご教示いただけないでしょうか? サーバーはWindows2003Serverです。 宜しくお願い致します。 | ||||||||
|
投稿日時: 2008-06-21 11:38
こんにちわ。引き続きお願いします。
System.Diagnosticsを使ってプロセスを起動使用と思ったんですが、 VB.NETだとビルとエラーはなかったのですが、C#でVB.NETと同様に Microsoft.VisualBasicのDLLを取り込んで 「Microsoft.VisualBasic.Interaction.Shell()」を使用するとエラーと なってしまいます。 オブジェクトブラウザーではShellの第2引数以降は省略可能とあるのですが、 C#でVBのShellメソッドに変わるものは何かわからず困っているので お願いします。 ※そもそもC#でMicrosoft.VisualBasicを取り込むこと自体が無謀ですよね? | ||||||||
|
投稿日時: 2008-06-21 22:49
省略可能な Optional 引数の部分には System.Reflection.Missing.Value を指定してください。 別にわざわざ Shell メソッドを使う必要はありません。
既に回答があるとおり、.NET Framework 的には System.Diagnostics.Process.Start メソッドがそれに当たります。 # Web アプリケーションではあまり使わないと思いますけど。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2008-06-23 12:39
じゃんぬねっとさん回答ありがとう御座います!
Process.startメソッドでPDFの起動ができました。 しかしながら印刷されずにPDFのウィンドウが閉じてしまいます。 以下の記述でおかしなところがありますでしょうか。 ご教示下さい。 ===================================================================== Process printProcess = new Process(); string filePath = null; try { filePath = "C:\\test\\990000010_0_12.pdf"; printProcess = System.Diagnostics.Process.Start( filePath, Definition.ADOBE_PATH + " /n /t "); printProcess.WaitForExit(3000); printProcess.Kill(); } catch { throw; } finally { if (!printProcess.HasExited) { printProcess.Kill(); printProcess.Dispose(); } } ===================================================================== | ||||||||
|
投稿日時: 2008-06-23 12:42
あ、すみません。
途中の「Process.Start(filePath, Definition.ADOBE_PATH + " /n /t");」 にある"Definition.ADOBE_PATH"はacrobatReaderのexeフルパスです。 宜しくお願いします。 | ||||||||
|
投稿日時: 2008-06-23 16:58
こんにちは。
調べてみてやり方を以下のように変えてもやはり指定したPDFファイルが 起動するだけで印刷まで実行されません。 PCにインストールしているプリンターはネットワーク共有プリンターに 「通常使うプリンターに指定」をしています。 試しにコマンドプロンプトからコマンドを発行したら問題なく印刷されました。 すみませんが、どなたかご教示下さい。 ========================================================================== printProcess.StartInfo.FileName = filePath; printProcess.StartInfo.Verb = "printto"; printProcess.StartInfo.Arguments = ADOBE_PATH + " /n /t "; printProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; printProcess.StartInfo.CreateNoWindow = true; printProcess.Start(); printProcess.WaitForExit(); ========================================================================== |