MENU
目次

【RPA】Adobe Acrobat Readerの印刷速度が遅い場合の改善方法【UiPath】

【RPA】Adobe Acrobat Readerの印刷速度が遅い場合の改善方法

Adobe Acrobat Readerで大量のPDFを印刷する際、処理が遅くて困ったので、備忘録として残しておきます。

目次

Adobe Acrobat Readerで大量PDF印刷が遅いと何が問題か

1件あたりは小さな待ち時間でも、件数が増えるとキツイ

数十件の印刷なら、多少の遅さは許容範囲です。しかし数百件になると、1件あたり5〜10秒の差が数十分の差になります。印刷処理はその完了を待ってから後続のステップに進む構成になりやすいため、ここがボトルネックになると処理全体が止まります。

処理が遅いとライセンスを活かしきれない

UiPathのライセンスは、基本的には24時間稼働できます。同じ1ライセンスでも、処理が速いほど1日あたりに回せる件数を増やせます。ライセンス料は安くないので、ライセンス1つあたりの効率を上げていくことは地味に重要です。

Adobe Readerは閲覧用途には良いが、RPAでの大量印刷では重くなりやすい

Adobe Acrobat Readerは、人が画面上で操作することを前提に設計されています。手動操作では気にならない水準でも、バッチ処理で繰り返すと処理が遅いなという印象になります。

ということで、Adobe以外のPDF印刷アプリを探しました。

解決策|SumatraPDFを使え

SumatraPDFは、軽量なドキュメントビューアです。コマンドラインから直接印刷できるのがポイントです。

SumatraPDFとは何か

SumatraPDFはWindows向けの軽量ドキュメントビューアで、オープンソースとして公開されており、GitHubでGPLv3ベースのソースコードが確認できます。

インストーラーによる通常インストールに加え、exeをダウンロードするだけで使えるポータブル版もあります。配置方法を柔軟に選べる点も良いですね。

なぜRPAの印刷処理と相性が良いのか

SumatraPDFの最大の特徴は、コマンドラインから直接印刷できることです。プリンター名の指定、用紙サイズの設定、給紙トレイの制御、拡大縮小の指定まで、すべてコマンドライン引数で渡せます。

つまりUI操作が不要&軽量アプリなので、印刷がかなり早くなります。

SumatraPDFは安全なのか?

フリーソフトを業務に使う場合、セキュリティや信頼性の確認は必須です。

SumatraPDFには公式サイトがあり、GitHubでソースコードが公開されています。ライセンスはGPLv3で明示されており、Security項目も公式リポジトリで確認できます。つまり、配布元が不明な野良ツールとは性格が異なります。

SumatraPDFは信頼性の高いツールだと思いますが、社内のセキュリティポリシーを満たすかどうかは別です。使用前にちゃんと社内で確認を取ってくださいね。

SumatraPDFのインストール方法

通常インストールかポータブル版がありますが、私はインストール不要のポータブル版を使っています。

SumatraPDF公式サイトにアクセスします。
② 以下のDLリンクから、自身の環境にあったものをDLします。私は64-bitのポータブル版をDLしました。

③ ZipファイルがDLされるので解凍します。
④ 中に入っているexeファイルを任意の場所に配置します。RPAでexeファイルを起動して印刷します。

通常インストール版を使用する場合は、DLしたインストーラーを起動してインストールしてください。インストール後「SumatraPDF.exe」の配置先パスを確認しておきます。
通常は C:\Users\(ユーザー名)\AppData\Local\SumatraPDF\ に配置されるようです。

UiPathでSumatraPDFを使って印刷する実装方法

ここではUiPathで実装しますが、どのRPAでも基本同じ方法になるかと思います。

①「プロセスを開始」アクティビティを配置しましょう。
② ファイル名プロパティにインストールした「SumatraPDF-{バージョン}.exeのフルパス」を記入します。
③ 引数にプリンター名や各種印刷設定を必要に応じて記入します。

これで実装は完了です。簡単ですね。引数の部分だけ躓きやすいので、次の章で解説しておきます。

SumatraPDFをRPAで実行するための引数

引数のテンプレート

RPAで実行する際の引数のテンプレートは、以下の通りです。

Plaintext
"-print-to ""{プリンター名}"" -print-settings ""{印刷設定}"" -silent ""{PDFのフルパス}"""
  • プリンターは番号ではなく名前で指定します。
  • PDFのパスは絶対パスで渡してください。
  • 引数内でダブルクォーテーションが必要な箇所は、UiPath側でエスケープ処理が必要になります。

例えば、PDFをA4で用紙サイズに合わせて印刷する場合、以下のようになります。

Plaintext
"-print-to ""PRINTER_NAME"" -print-settings ""fit,paper=A4"" -silent ""C:\tmp\invoice_001.pdf"""

引数による印刷設定コマンド

最後に代表的な印刷設定コマンドを紹介します。

ページサイズに合わせて印刷する

コマンド:fit
用紙サイズに合わせて自動で拡大縮小します。PDFが小さくても大きくても、用紙に収まるよう調整されます。

Plaintext
"-print-to ""PRINTER_NAME"" -print-settings ""fit,paper=A4"" -silent ""C:\tmp\invoice_001.pdf"""

縮小だけ許可する

コマンド:shrink
用紙より大きいPDFのみ縮小します。元のサイズが用紙より小さい場合は拡大しません。

Plaintext
"-print-to ""PRINTER_NAME"" -print-settings ""shrink,paper=A4"" -silent ""C:\tmp\invoice_001.pdf"""

原寸のまま印刷する

コマンド:noscale
PDFの原寸を維持します。用紙サイズとPDFサイズが一致していることが前提になります。

Plaintext
"-print-to ""PRINTER_NAME"" -print-settings ""noscale,paper=A4"" -silent ""C:\tmp\invoice_001.pdf"""

用紙サイズを固定する

コマンド:paper=用紙サイズ
印刷する用紙サイズを文字列で指定します。A4やA3など。

Plaintext
"-print-to ""PRINTER_NAME"" -print-settings ""fit,paper=A3"" -silent ""C:\tmp\drawing_001.pdf"""

給紙トレイを指定する

コマンド:bin=トレイ番号/トレイ名
使用するトレイをトレイ番号で制御します。複数トレイがあるプリンターで有効です。
ただしこの機能はプリンタードライバーの対応状況に依存する部分もあり、すべての環境で期待通りに動くとは限りません。

Plaintext
■トレイ番号で指定する例
"-print-to ""PRINTER_NAME"" -print-settings ""fit,paper=A4,bin=2"" -silent ""C:\tmp\invoice_001.pdf"""

■トレイ名で指定する例
"-print-to ""PRINTER_NAME"" -print-settings ""fit,paper=A4,bin=Tray2"" -silent ""C:\tmp\invoice_001.pdf"""

ダイアログを抑制する

コマンド:-silent
印刷中のエラーポップアップを抑制します。バッチ処理では必須に近いオプションです。

ただし、エラーが抑制された状態で処理が進むと、失敗していても気づきにくくなります。印刷完了の検証ロジックや、エラーログの仕組みを別途用意することをおすすめします。

SumatraPDF マニュアルページ

まとめ

大量PDF印刷では、印刷ソフトの選定が全体処理時間に直結します。

Adobe Acrobat Readerは、閲覧や手動操作を前提にした設計です。RPAで大量バッチ印刷を回す用途では、SumatraPDFのような軽量ツールが有力な代替候補になります。

Ueda
フリーランスエンジニア
RPAエンジニアです。
UipathやVBAを使用した開発を得意としています。優れた可読性と効率的な設計を併せ持つRPA開発を心がけています。
RPA初心者向けの教育経験多数あり。RPAの導入支援、受託開発、内製化サポートも承ります。

Wordpressを用いたHP制作のお仕事も経験があります。

ペットのチワプーと暮らしてます。
  • URLをコピーしました!

コメント

コメントする

目次