- - PR -
C#(.NET)でのPDFコマンド印刷について
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-06-23 17:23
度々すいません。
印刷、できました。。。納得できてないのですが。 前回のコーディング内容で↓の部分を省略したら印刷できました。 =============================================================== printProcess.StartInfo.Arguments = ADOBE_PATH + " /n /t "; =============================================================== どういうことでしょう? .StartInfo.Verb = "printto";の設定で指定されたファイルは何でも印刷 してしまい、実行ファイルの指定はいらないということでしょうか。 過去ログにもある、「プリンターを指定して印刷」の場合 =============================================================== printProcess.StartInfo.Arguments = ADOBE_PATH + " /n /t " + プリンター名; =============================================================== が必要になると思うのですが、これを指定するとPDF起動のみで印刷が行われません。 出力するプリンターが1つなので結果オーライですが、 気持ちがすっきりしません。。。 | ||||
|
投稿日時: 2008-06-23 18:17
しばらく見ていなかったので流れを確認できていませんでしたが
最初はサーバで作成した PDF ファイルをクライアント側から印刷 させたいのかと思っていましたが、どうも違うようですね。 誤解していました。すいません。
これを見る限りでは、Arguments プロパティと FileName プロパティ の内容が逆のような気がします。 ProcessStartInfo の説明によれば、FileName プロパティは > 起動するアプリケーションまたはドキュメントを取得または設定します。 とありますし、Arguments プロパティは > アプリケーションを起動するときに使用するコマンド ライン引数のセットを取得または設定します。 とあります。 このコードでは、FileName プロパティに「コマンドライン引数」を 渡し、Arguments プロパティに「起動するアプリケーション」を指定 しているような気がします。 Arguments プロパティの指定を削除すると印刷できるのは、FileName プロパティの > 起動するアプリケーションまたはドキュメントを取得または設定します。 の部分で、アプリケーションではなくドキュメントを設定していること になるからでしょう。 つまり、PDF ファイル名(と Verb プロパティ)を設定して起動させること によって、.pdf の拡張子に関連づけられたプログラム(この場合は Adobe Reader ) が起動し、Verb プロパティの内容によって印刷する処理を行っているのだと 思われます。 _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 | ||||
|
投稿日時: 2008-06-23 20:36
ぽぴ王子さん 回答ありがとう御座います。
>つまり、PDF ファイル名(と Verb プロパティ)を設定して起動させること によって、.pdf の拡張子に関連づけられたプログラム(この場合は Adobe Reader ) が起動し、Verb プロパティの内容によって印刷する処理を行っているのだと 思われます。 なるほど!納得です。ファイルが関連付けされていますからね。 しかし、FileNameとArgumentsの部分は私もMSDNなど読んで ご指摘の通りと解釈しているのですが、プログラムを逆に設定すると 「指定されたファイルは関連付けれた起動ファイルがありません」のような エラーが発生してしまうのです。 なぞです。(おそらく私の指定の仕方が悪いとおもうのですが。。。) printProcess.StartInfo.FileName = ←ここにADBEのフルパスを設定 printProcess.StartInfo.Verb = "printto"; printProcess.StartInfo.Arguments = " /n /t " + 印刷対象のファイルパス; この状態でエラーが。。。 | ||||
|
投稿日時: 2008-06-23 23:02
私も調べてみました。 結論から言うと Verb プロパティに設定している「printto」がダメです。 手持ちの環境では Adobe Reader 8.1 がインストールされていますが、これには printto というアクションは存在しません。 存在しないアクションを設定しているのでエラーになります。 アクション設定の確認方法はこちらを参照してください。 http://www.atmarkit.co.jp/fwin2k/win2ktips/482ftype/ftype.html あと、Adobe Reader のオプションはこちらを参照するといいと思います。 http://scripting.cocolog-nifty.com/blog/2007/07/adobe_reader_81_e41e.html 加えて、ファイル名はダブルクォーテーションで囲んだ方がいいですね。 _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 | ||||
|
投稿日時: 2008-06-24 10:41
ぽぴ王子さん こんにちわ。
できました! ご指摘のファイルに対するアクションを調べて試してみました。 【結果】 @ファイルに新規でアクション「printto」を追加して、 プログラムのVerbプロパティに「printto」を指定してもNG! 「指定されたファイルは関連付けれた起動ファイルがありません」エラー A既存で登録されているアクション「open」を プログラムでVerbプロパティに「open」を指定したらOK! ※プリンター指定もできました(以下Program) ====================================================================== Process printProcess = new Process(); string filePath = null; filePath = "C:\\990000010_0_12.pdf"; printProcess.StartInfo.FileName = "AcrobatReader.exeのフルパス"; printProcess.StartInfo.Verb = "open"; printProcess.StartInfo.Arguments = " /n /t " + filePath + " \\\\Network01\\HP LaserJet 8150 PCL"; printProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; printProcess.StartInfo.CreateNoWindow = true; printProcess.Start(); printProcess.WaitForExit(1500); ====================================================================== ありがとうございました! |