- - PR -
VB.netでプリンタを指定してPDFを印刷したい
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-02-18 20:15
件名の通りなのですが、VB.NETにてプリンタ指定でPDFを印刷したいです。
プリンタを指定せずに印刷するのは過去ログを見てできました。 以下、そのソースです↓ Dim proc As New Process proc.StartInfo.FileName = filePath proc.StartInfo.Verb = "Print" proc.StartInfo.CreateNoWindow = True proc.Start() proc.WaitForExit(20000) 'プロセスが終了していなかったら終了する If proc.HasExited = False Then proc.Kill() End If 'proc解放 If Not proc Is Nothing Then proc.Dispose() End If ですがこれでは通常使うプリンタで印刷されてしまいます。 今度は指定したプリンタで印刷をしたいのです。 見た限りではproc.StartInfoにプリンタ指定メソッドなども 無さそうなので困り果てています。 どうかよろしくお願いします。 | ||||
|
投稿日時: 2004-02-20 10:04
proc.StartInfoは、通常アプリケーションを実行するときのパラメータを設定するためのプロパティですので、ProcessクラスやProcessStartInfoクラスを見てもプリンターに関するメソッドやプロパティというものはありません。
.PDFファイルを起動パラメータに渡して何が行われるかというと、FileNameに指定されたファイルがアプリケーションで無かった場合、そのファイルが何かのアプリケーションに関連付けが行われているかOSがチェックしにいきます。 .PDFに関連付けられているアプリケーションを知る場合は次のようになります。 1.レジストリエディタ(regedit.exe)を起動します。 2.HKEY_LOCAL_MACHINE\SOFTWARE\Classesを開きます。 3. .pdf の項目を探します。 4. (規定)の項目をチェックします。(自分の環境ではAcroExch.Document) 5.今度は同じ場所でAcroExch.Documentを探します。 6.AcroExch.Document\Shellに書かれているPrintを見てください。 このPrintがStartInfo.Verbに指定している動詞です。 では実際この動詞が何をおこなっているかというと、Shell\Print\Commandの中に書かれています。 自分の環境では次のようになっています。(あ、6に上げてない。。。) "C:\Program Files\Adobe\Acrobat 5.0\Reader\AcroRd32.exe" /p /h "%1" つまり.pdfの拡張子が付いたファイルを起動すると、実際にはAcroRd32.exeが呼ばれていることになります。 では指定プリンターに直接出力するにはどうすればよいかというと、AcroRd32.exeにはプリンターを指定する引数があります。次の場所にあるAcrobatSDKのドキュメントの最後のページ書かれています。 http://support.adobe.co.jp/faq/faq/qadoc.sv?3821+001 ただしここに記述されているように、これらコマンドは正式にサポートされていないため注意が必要です。(自分もプリンター直指定は試したことがありませんので、やってみてください) また自分のアプリケーションから起動するために、現状のようにファイル名を渡すのではなく、AcroRd32.exeを起動する必要があるので、レジストリからアプリケーションのパスを取得する必要もでてくるかもしれません。 | ||||
|
投稿日時: 2004-02-20 11:48
AcrobatReaderが終了せずに残ってしまったような気がする。。。 |
1