HomeRPAブログページその他【Tips】コマンドライン実行でPDFを印刷する

BizRobo!ブログ

 こんにちは。

 自称)BizRobo!エンジニアのもりりんです。

 今回は、「コマンドライン実行でPDFを印刷する」というテーマです。
 以前書いた「コマンドライン実行でPDFを印刷する」の記事が、結構見られているとのことでコマンドライン関連で書いてみようと思います。
 当分は、コマンドライン関連の記事をアップしていきます。

 PDF印刷については、公式ナレッジを含め情報が公開されていますが、どうしてそのコマンドになるのかは紹介していない記事が多いかと思います。
 今回は、Adobeの「Acrobat Reader」のコマンド部分を簡単に解説します。

 

 ではでは、はじめていきましょー。

 

 はじめに 


2022.06.30追記
一部サイトのURLがエラーになっておりました。
申し訳ございません。

 

Acrobat Readerを利用したPDF印刷に関しては、冒頭でも述べたように公式ナレッジにも記事が出ています。
 参考:DSでファイルを印刷する方法を知りたい
ですが、2022.06.22時点で公式からインストールできるものは「Acrobata Reader DC(2022.001.20142) 」のみになっているようです。

acrobat引用:Adobe Acrobat Reader ~ソフトウェアダウンロード~

 既にご利用中の場合、Acrobat Readerの利用バージョンによってはサポート切れになった可能性もありますので、ご利用の場合は一度ご確認ください。
 参考:https://www.adobe.com/jp/acrobat/information/endsupport.html

acrobatサポート期限
引用:Adobe Acrobat 2017 (永続版)のサポートは2022年6月6日に終了します

 また、Adobe Acrobat Reader DC(22.001.20117)以前を利用している方は、脆弱性の指摘もされているためバージョンアップしておきましょう。
 参考:Adobe AcrobatおよびReaderの脆弱性(APSB22-16)に関する注意喚起

 

 コマンド解説  


 では、公式ナレッジの印刷コマンドを確認していきましょう。

公式ナレッジ引用1引用:DSでファイルを印刷する方法を知りたい

  1行目  

コマンド1

 こちらは、簡単ですね。
 他アプリを実行するstartコマンドを利用して、目的のアプリを実行しているだけです。

 注意点は、「/t」オプションです。
 こちらはファイル名は必須ですが、プリンター名以降は任意となっており、省略した場合はデフォルトプリンターが利用されます。
 似たオプションに「/p」があります。
 こちらは、印刷ダイアログを表示します。

 

  2行目  

コマンド2 

 2行目は、あくまでも印刷指示は一方通行のため正常に指示が飛んだか把握できず、すぐに終了してもいいのかわからないためpingの疎通確認を利用し待機処理としています。
ナレッジでは16回分なので、約12~16秒程でしょうか。

 他ブログでは、10回を指定していることもあります。
 RPAで利用するようなPCは高メモリ/(HDDに比べ)SSDの高速I/Oが一般的のため16回分も待つ必要はないかと思います。

 

  3行目  

コマンド3

 最後は、タスクキルですね。
 Acrobat Reader特有の方法となります。
 他社製のPDFツールでは、タスクキルはほぼ不要です。

 Acrobata Readerは、「アプリそのもの」と「pdfを表示するタブ」の2段構成になっています。
 画面上でPDFを表示すると、①Acrobata Readerアプリが起動、②アプリ内にタブが作成されPDFが表示されます。

 Acrobata Readerは、上記の仕組みを実現するため①アプリそのものを管理するプロセス、②PDFを開くプロセスが分離される設計となっています。 

ビューワーの表示

 では、先ほどの1行目のコマンドを振り返ると、①アプリの起動②PDFの表示+印刷が実行されます。
 「/t」は印刷用オプションのため、印刷指示が終わると自動でPDFは閉じられる。すなわち、②のプロセスのみ終了します。

 そうなると、①のプロセスは起動したまま放置されることになります。
 起動したままでも影響は少ないかと思いますが、ロボットが起動したアプリを後片付けもせず放置しているってマナー的にはダメですよね。
 ということで、後片付けをするためのコマンドが3行目となります。

コマンド結果

 しかし、Acrobata Readerの後片付けも一癖あります。

 Acrobata Readerアプリのプロセスには、プロセスID(Windows上で動くプロセスを一意で識別する管理番号)が付与されていません。
 Widnowsでは、プロセスIDのことをウィンドウハンドルと呼びます。

 本来はアプリ起動後もウィンドウハンドルを指定することで、プロセスを操作することが可能です。
 参考:Windowハンドルの取得

 しかし、Acrobata Readerは管理プロセスの起動時にウィンドウハンドル(管理番号)を割り当てていません。
 起動したプロセスを特定できない場合は、起動元のアプリケーション(exe)を指定してプロセスを削除します。

 説明画像にも注意点を記載していますが、起動元のアプリケーション(exe)から実行されている全プロセスを問答無用で強制終了されます。

 改めて、3行目のコマンドを確認しておきましょう。

コマンド3 

 長かったですが、3行目でなぜこの処理を実施しているのか理由が分かったかと思います。
 もし分からないという方は、(vbsによる自動化を目的としていますが)要点がまとめられているので、以下の記事もぜひ参考にしてください。
 参考:Adobe Acrobat Reader DCで自動印刷

 

 おまけ 


 コマンドプロンプトでの紹介でしたが、startを使わない方法はあるのか?と疑問になりませんでしたか?

考える猫.png

 

 

 

 もちろん、あります。
 起動したいアプリケーションが配置されているフォルダにフォーカスを変更(cdコマンド)し、該当アプリケーション(exe)を起動するだけです。 

 こちらの操作は、PowerShellでも同様の操作になります。
 ※私の環境では「AcroRd32.exe」ではなく「Acrobat.exe」になっています。

別コマンドstartコマンドを利用しない方法

 PowerShellで実行する場合は、startコマンドの代わりに「Start-Proccess」を利用します。
 「Start-Proccess」では、実行するアプリケーションを「-FilePath」、アプリケーションに渡すパラメータを「-ArgumentList」として指定します。
 ※「-ArgumentList」は、パラメータをカンマ区切りで指定することに注意しましょう。

pwコマンドPowerShellを利用する場合

 なお、BizRobo!のコマンドライン実行でPoweShellコマンドを利用する場合は、「powershell ~」から始めるようにしてください。
 過去にZipを展開する記事でも紹介していますので、見ていただけると幸いです。
 過去記事:【Tips】ZIPファイルをコマンドライン実行で展開する

 

 最後に 


 今回は、以前ユーザ様に問い合わせいただいたことを思い出したり、標準機能で自動印刷したいという要望を個人的に無償奉仕したことがきっかけで、思いつくままに書いてみました。
 個人奉仕の件は、vbsやbatを駆使しデータ加工も入っていたため、お金もらってもよくね?って感じの出来栄えになりました。
 いずれ、RPAを使わなくてもWindows標準でここまでできる!って記事を書いてみたいなと思います。

 さて、今回のPDFですが、RPA関連の記事では使い方のみ記載されていること多く、どうしてこうなるのか?の疑問を解決できる記事はプログラミングに準じた内容が分かる人向けでした。
 意外にコードよりも文章で書いてくれていますが、初心者向けではないため仕方がないことですが知識がある前提での説明のため最初の方で挫折することも多いかと思います。
 私も何回も見直して調べました....(ウィンドウハンドルという名前を知りました。)

 ともあれ、今回書いた記事が少しでもWindowsの仕組みの理解やBizRobo!での活用に役立てていただければと思います。

 今回も最後まで読んでいただきありがとうございました。
 また、次回をお楽しみに。

お手紙ねこさん

 

 

 

 

<RPAの導入につきまして>

 本Blogは、お役に立ちましたでしょうか?

 RPAは、一般的な業務システムとは異なり、PoCを実施し、導入・運用開始で終わりでははありません。
 導入時点からようやくスタートです。
 業務効率化、人員最適化等の目標に応じた計画策定や人員配置、自動化ロボットの開発・運用といったPDCAサイクルが必要です。
 弊社では、貴社の課題に適した自動化プランのご提案や開発者育成研修も実施し、貴社と並走したサポートをご提供いたします。

 お気軽にお問い合わせください。
 BizRobo!や弊社サポートについて詳しくはこちら >>> サービス紹介 - BizRobo! (自動化ツール)

 

大阪本社
〒541-0056
大阪市中央区久太郎町2-2-7 山口興産堺筋ビル3階  アクセスマップ
TEL:06-6266-0440   FAX:06-6266-0450