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ファイルを処理する際は確認してみてください。

以上、最後までお読みいただきありがとうございます。