holmesのメモ帳

始めなければ始まらない。頭の中で考えているだけなのは終わりにして手を動かして色々と作っていこう。

プログラムからPDFファイルを印刷する方法

ずいぶん前に作ってまだ客先で動いているVB6のプログラムに手を加えることになった。

当時Acrobat(製品版)が各端末に入っていたのでPDFファイルの印刷もshellを使って以下のように書いていた。
たぶんAcrobat7だったと思う。

Acrobat.exe /cjs /n /p /h [ファイル名]

やりたい事はPDFファイルの印刷だけど
画面にAcrobat(又はReader)を表示せず、印刷ダイヤログも表示せずプリンタへ直接印刷するという事。



新しい環境ではAdobeReaderXにするのでそれへの対応

ところがこれで結構はまった。

AdobeReaderXの実行ファイルは AcroRd32.exe なので以下のように変えてみたが動かない。

AcroRd32.exe /cjs /n /p /h [ファイル名]

どうやら使えなくなっている引数があるらしく
特に /csj は使えなかった。

で最新版の引数について調べてみてもあまり情報がない。

↓これは公式サイトの情報(最新情報かどうかは良くわからない)
Acrobat および Adobe Reader のコマンドラインオプション


これを見ると
AdobeReader を起動し、印刷ダイアログボックスを表示せずに PDF ファイルを印刷し、Adobe Reader を終了する
という事をやるには /t を使わないといけないみたい。

AcroRd32.exe /t path printername drivername portname

path : ファイルパス
printername : プリンタ名
drivername : プリンタドライバ名
portname : プリンタポート名

これをやるとなると複数拠点で動いているプリンタ名とかを個別に登録して設定していかないといけなくなり
そこまでの修正はお客も渋ってしまった。


なので他の方法を探す事に・・


AcroRd32.exe のオプションを色々な組み合わせで試してみるも
印刷されなかったりReaderが起動されたままになったりしてなかなか解決しない・・

さぁ困ったと思ったところで最後に試してみたのがこれ


PDF-XChange Viewer - 窓の杜ライブラリ


ヘルプを見るとこれで印刷できるっぽい

PDFXCview.exe /print [ファイル名]

各端末にパスを通すのも面倒なので実際にはフルパスで記述

C:\Program Files\Tracker Software\PDF Viewer\PDFXCview.exe /print [ファイル名]

これで問題なく動いた。


めでたしめでたし