前提
Windows
Acrobat Reader DC 32 bit
プリンターはサーバー上にあるネットワークプリンター
コマンドライン
この場合、印刷のコマンドラインは、
"%programfiles(x86)%\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" /h /t "\\Server\name\folder\hoge.PDF" "XXXX Printer"
という形になる。もちろん、オプションはこれ以外もある。
Adobe Reader 8.1の起動オプション(その2)2007年7月 1日 (日)
オプション | 意味 | 備考 |
---|---|---|
/n | New Instance | 新規プロセス |
/s | Suppress Splash Window | 起動ウィンドウ抑止 |
/o | ? | 不明 |
/h | Hide Window | 最小化ウィンドウ(印刷設定画面非表示) |
/t | PrintTo | 指定プリンタへ印刷 (6.0:プリンタ必須;7.0:プリンタ省略可) |
/p | デフォルトプリンタへ印刷 | |
/l | Cool | 非表示 7.0で追加 |
/u | Url Protocol | 不明 acrobat:で使われる? 7.0で追加 |
/a引数 | Arguments | オープンパラメタ(page=nなど) 7.0で追加 |
/eo | ? | 不明 CreateObjectで/o /eo /lが使われる。 7.0で追加 |
/b | Browser ? | IE表示で/o /eo /l /b /w hwmdが使われる。8.1で追加 |
/w hwnd | Window handle | IEのhwndを10進数で指定 |
使用例、コマンドラインでPDFファイルを印刷する。
START ACRORD32.EXE /p ファイル... 印刷設定画面表示
START ACRORD32.EXE /p /h ファイル... 印刷設定画面非表示
START ACRORD32.EXE /n /t "ファイル" 印刷設定画面非表示 (7.0~)
START ACRORD32.EXE /n /t "ファイル" "プリンタ名" 印刷設定画面非表示
>いずれの場合も印刷後、アプリが残るので、別途終了(CTRL+Q)が必要です。
>/n /tは、印刷後にほかになければ開いたまま残ります。
>8.0以前では、/nがなくても、新規に起こして、印刷後にほかにあれば消えました。
>8.1では、/tオプションのデフォルト動作が/nから変更されたようです。
>/pの複数ファイル指定が、8.1では可能です。以前は駄目だったような。
となっている。
[コマンドラインでPDFファイルを印刷する。(その2) 2007/07/03](http://scripting.cocolog-nifty.com/blog/2007/07/pdf_7cfb.html)
>Adobe Reader 6.0 ~ 8.1 用
DCでは未確認だが、8.1まではVBSでもできた。
しかし現在はバージョン名や言語はフォルダ名にはない。
また、Startではなくてもexeに指定する形で動く。
現在のDCも8.1と挙動は同じだと思われる。
# 使いみち
なお、この形ではAcrobat Readerが終了しないので、連続して使えるというものではない。
しかし、該当するフォルダのhoge.PDFを開いている場合、その開いているファイルの印刷指示を出すことができる。
このため、例えば、カラープリンターと白黒プリンターが別な場合、いちいち印刷設定窓を開かず、2つ指示を出すことができる。
また同じプリンターを設定を変えて登録している場合には、設定を変えて印刷することが可能と思われる。
あまり早くはないが、多数のPDFファイルを確実にファイルを印刷するような場合、右クリックで印刷するよりはいい。
右クリックは最大で10ファイル程度をまとめて印刷できるが、これより多いと、途中で印刷されないものが出てくる。
# Pritnter名の取得
## Micrsofot Office(ex.Excel)
ところで、サーバー上にあるプリンターをExcelのVBAで出すと
\\server\testPrinterName on 9999:
とon のあとにポート番号が付く。
実際にExcelの印刷のマクロは、このポート番号をつけた状態で指定することで、プリンターが切り替わる。
ところが、Acrobat Reader DCのコマンドラインの時はこれをそのまま使うとエラーになる。
それではbat用のネットワークプリンターの名前はどうするかというと、ポート番号を削ってもいいが、一応VBSで
出力する。
[VBScript を使用してプリンタ名の一覧を取得する SQLの窓](https://winofsql.jp/lightbox/vbscript-printer-list-20190220-951.html)
PrinterListを出すVBSを使うと、
testPrinterName (server 上)
という表示になる。
こちらで指定すると印刷ができる。
On 以下は必要な時と不要な時があるということになる。