UiPathのみでPDFファイルの結合と分割をしてみた
こんにちは。UiPathロボットの開発をしている青柳です。
今回はPDFファイルをUiPathのみで操作してみたので、どんなことができるかを紹介しようと思います。
ファイルの結合
■準備:ソフトのダウンロード
PDFを操作するには、「UiPath.PDF.Activities」というパッケージが必要ですので、
「パッケージ管理」の「すべてのパッケージ」から検索してダウンロードします。
■手順
今回は下記画像にように4つのPDFファイルを1つのファイルに結合し、結合フォルダに保存します。
それぞれのPDFファイルにはページ数が書かれています。
1.Array of String型の変数「マージファイルパスリスト」を作成し、代入で結合したいファイルのパスを格納します。
配列の各要素の順番がページ順となりますので、順番が決まっている場合は注意が必要です。
(※下記イメージはMain.xamlと同じフォルダに結合対象ファイルを置いているため、ファイル名のみを格納しています。)
2.「PDFファイルを結合」のアクティビティを配置し、プロパティから「ファイル一覧」に変数「マージファイルパスリスト」、
「出力ファイル名」に結合ファイルの保存先のファイルパスを入力します。
これで実行してみると、ご覧のように1つのファイルに結合されます。
ファイルの分割
今度は②で結合したファイルを1ページずつ別々のファイルに分割します。
「PDFのページ範囲を抽出」アクティビティを使用して、1ページずつ出力します。
■手順
1.「PDFのページ数を取得」アクティビティを配置し、分割したいファイルのパスを入力します。
また、このアクティビティはページ数を出力しますので、プロパティの「出力」にInt32型の変数「ページ数」を指定します。
2.「指定回数を繰り返し」アクティビティを配置し、「繰り返し回数」に変数「ページ数」を指定します。
3.「PDFのページ範囲を抽出」アクティビティを下記のように配置し、「ファイル名」に
分割したいファイルのパスを、「出力ファイル名」に分割した各ファイルのファイル名を指定します。
今回は出力ファイル名が各ループで変わるように
「”分割フォルダ\分割ファイル\” & CurrentItem.ToString & “.pdf”」と指定しています。
(「CurrentItem」は「指定回数を繰り返し」アクティビティが返してくれる現在のループ回数が格納される変数です。)
4.「PDFのページ範囲を抽出」アクティビティのプロパティから、範囲の欄に変数「CurrentItem.ToString」を指定します。
※この欄は1ページずつ抽出する場合は「”1”」や「”2”」のように抽出したいページ番号を文字列で指定します。
※複数ページをまとめて抽出する場合は例えば2ページ目から4ページ目までをまとめて抽出したい場合は
「”2-4”」のように抽出する最初のページ番号と最後のページ番号をハイフンで繋げて文字列として指定すると、
複数ページを1つのファイルに抽出することができます。
範囲の欄に変数「CurrentItem.ToString」を指定して実行するとご覧のように各ページが1ファイルずつに分割されます。
今回はUiPath.PDF.Activitiesの「PDFファイルを結合」、「PDFのページ数を取得」、
「PDFのページ範囲を抽出」アクティビティを使って、PDFファイルの結合と分割を行いました。
このパッケージには他にも便利なアクティビティがありますので、PDFファイルを処理する際は確認してみてください。
以上、最後までお読みいただきありがとうございます。