はじめに
仕事をする上でPDFファイルを使う機会は多いのではないでしょうか。
本記事では、PDFファイルを開き、本文をコピーし、データアイテムに出力するまでの流れを
自動化してみたいと思います。
前提条件
- Blue Prism ver6.8
- Adobe Acrobat Reader DC ver2022.002.20212 (64bit)
PDFファイルを開く
PDFファイルを開く方法はいくつかありますが、
ここでは一番簡単な「Start Process」アクションを使った方法をご紹介します。
Start Process
データアイテム「PDFファイルパス」
データ型 | 初期値 |
---|---|
テキスト | (開きたいPDFファイルの完全パス) |
アクションステージ「PDFファイルを開く」
ビジネスオブジェクト:Utility-Environment
アクション:Start Process
入力 | 値 |
---|---|
Application | データアイテム「PDFファイルパス」 |
※Argumentsは空でOK
PDFファイルの操作
オブジェクトを新規作成します。
開いたPDFファイルにアタッチをしないとテキストを読みとることが出来ないためです。
ここでは「アタッチ」と「テキストを読み取る」アクションを作っていきます。
アプリケーションモデラー
アプリケーションモデラーを設定します。
下に載っていない項目は、デフォルトのまま「次へ」で進めてください。
*補足1
ウィンドウタイトルが指しているのは、以下画像の箇所です。
対象アプリケーションを起動している時、どの画面でも必ず表示されている文字を見つけて、
その文字の前後にワイルドカード(*)を置いて、これをウィンドウタイトルとします。
*Adobe*
*補足2
Windwosプロセス名は、タスクマネージャーの詳細タブから確認出来ます。
プロセス名は画像赤枠で囲った部分です。拡張子は含めないでください!
※PDFファイルは1つしか開いていないのですが、上記画像見ますと、タスクが2つ実行されています。
これはAdobeの仕様で、ファイルを開くと、デフォルトで「保護モード」がオンになります。
簡単にまとめますと、
1.保護モードがオンだと、Adobeのタスクが自動で2つ生成される(設定でオフにはできる)
2.人間にはAdobeが1つだけ起動しているように見えますが、Blue Prismは2つ起動していると認識するため、どちらでもいいので一方のタスク(プロセス)にアタッチ(紐づけ)する必要がある
ということです。
要素スパイ
アプリケーションモデラ―が設定出来たら、次は要素スパイです。
スパイモードはAA(Active Accessibility)モードを使います。
スパイする要素は1つのみで、以下画像の範囲(赤枠)をスパイします。
AAモードで要素をスパイした後、デフォルトで取得した属性一覧のうち、
次の条件に当てはまるものはチェックをオフにするのが推奨されています。
- 値が空白
- 親(Parent)属性のもの ※
- 可視(Visible)
- 有効(Enabled)
- 要素カウント
- URL
※親属性の中には要素一致に必要なものが含まれていることもあるので、1つずつハイライトしながらチェックしてください。
不要な属性のチェックを外すと以下のようになります(多少の差異はあるかもしれません)。
アクション
スパイが完了したら、次の2つのアクションページを作成します。
-
判断ステージ「アタッチ済み?」のプロパティ
式フィールドに、データアイテム「アタッチ結果」を貼り付けるだけでOK
氏名 | データ型 | 値 |
---|---|---|
ウィンドウタイトル | テキスト | "*Adobe*" |
プロセス名 | テキスト | "Acrobat" |
氏名 | データ型 | 値① | 値② |
---|---|---|---|
テキスト | テキスト | "^a" | "^c" |
実行
今作ったオブジェクトを、冒頭で作成したプロセスから呼び出してみて、一連の流れを実行してみます。
冒頭作りかけのフロー図に、作ったオブジェクトのアクションをそれぞれ呼び出したものを配置しました。
↓アクション「テキスト読取」からの返り値をプロセスで受け取れるようにしています。
PDF終了アクションを作り忘れたのでPDFが開きっぱなしになっていますが…
PDFの本文を全選択した名残(テキストに青色が被さっている)が残っていますね。
また、データアイテムを見ると、テキスト自体は読み取れていました。
終わりに
PDFファイルを読み取りたいときは、以下がポイントです。
・Start ProcessでPDFファイルを開く
・PDF操作オブジェクトを作成する
ご覧くださりありがとうございました。
Comments
Let's comment your feelings that are more than good