[PowerShell]PDFファイル内の文字列を検索し存否を判定するツール
概要
こちらの記事で文字だけを表示するスクリプトを使い、
PowerShellのはじめ方を紹介しましたが、より実践に近いサンプルコード(サンプルプログラム)を作成しました。
今回作成したPowerShellスクリプトはテキストが埋め込まれているPDFファイル[2]を読み込み、あらかじめ設定した検索文字列により処理結果の正常/異常を判定するという内容です。
PowerShellの始め方(スタートアップ)としても、ご参考頂ければと思います。
この記事のターゲット
- PowerShellユーザーの方
- PowerShellでPDFファイル内の文字列を検索し判定したい方
- 初心者でPowerShellスクリプト作成の参考にしたい方
サンプルプログラムの紹介
サンプルプログラムのシナリオは、とあるプログラムからアウトプットされたPDFファイルを対象に文字列を検索、
文字列の有無により処理結果が正常終了したか/異常終了したかを判定するという、シナリオを想定したツール。
サンプルプログラム
仕様
プログラム起動用:batファイルとプログラムの本体:ps1ファイル、個別の設定ファイル:setup.iniファイル、
の3つで構成されたプログラム。
なお、対象のPDFファイル名や検索文字列については、設定ファイルにより変更可能とする。
フローチャート
処理全体
下記のプログラム本体と同様。
プログラム本体
ファイル名:Main.ps1
画面仕様
バッチファイル(batファイル)を使いPowerShellスクリプトを実行する。
このPowerShellでは.NET Frameworkのフォーム(以下、dotNETフォームと称する)を呼び出して使用しており、
dotNETフォームを使ったポップアップウィンドウで操作する。
他にコマンドプロンプトが一時停止(PUASE)状態の確認画面の際に「Enterキー」を押し、処理続行させる操作方法も含まれる。
機能仕様
- 初期設定
- 設定ファイル読み込み
- 対象PDFファイル名
- 対象検索文字列
- 設定ファイル読み込み
- 対象PDFファイルの存在チェック
設定ファイルより取得した対象のPDFファイル名がバッチの起動場所と同じ階層にあるかチェックする。
ない場合は、処理中断。 - 指定文字列の検索
設定ファイルより取得した対象検索文字列の有無をチェックする。
ない場合は、異常終了と判断。
入出力ファイル
入力ファイル
- iniファイル
出力ファイル
なし
GitHub Repository
フォルダー構成
PowerShell_SearchForPdffileStrings
│ LICENSE
│ README.md
│ SearchForPdffileStrings.bat ・・・起動用バッチファイル
│ ProcessingResult.pdf ・・・対象PDFファイル(Success)
│
├─sample-data ・・・テスト用のPDFサンプルファイル
│ ProcessingResult_Failure.docx
│ ProcessingResult_Failure.pdf
│ ProcessingResult_Success.docx
│ ProcessingResult_Success.pdf
│
└─source
├─icon ・・・アイコンデータ
│ shell32-296.ico
│
├─lib ・・・ライブラリ(iTextSharp 5.5.13のDLL)
│ itextsharp.dll
│
├─powershell
│ Main.ps1 ・・・プログラム本体
│ setup.ini ・・・設定ファイル
│
└─tmp ・・・PDFファイル内テキストデータの一時書き出し用
pdf_textdata.txt
参考記事
各iTestSharpのバージョンで動作確認した結果
バージョン | 動作有無 | 備考 |
---|---|---|
5.5.10 | ○ | |
5.5.11 | ○ | |
5.5.12 | ○ | |
5.5.13 | ○ | サンプルプログラムで使用 |
5.5.13.1 | ○ | |
5.5.13.2 | × | 原因不明だが動作しなかった。不具合? |
5.5.13.3 | × | 原因不明だが動作しなかった。不具合? |
流用したサンプルプログラム
プログラム作成時に参考にした記事
-
iTextSharp 5.5.13のダウンロード
https://www.nuget.org/packages/iTextSharp/5.5.13 -
nupkgファイルからデータを取り出す方法
https://zenn.dev/haretokidoki/articles/d3ca9fe55ab0c5 -
テキスト埋め込みのあるPDFファイルをテキストファイルで出力する方法
http://35huyu.seesaa.net/article/446050464.html -
iTextSharpの情報がまとまっているサイト
https://codezine.jp/article/detail/462
https://qiita.com/AWtnb/items/215f77d97b7ea069a06a -
iTextSharpのライセンス関連の記事
https://nokoshitamono.blogspot.com/2015/09/gplagpl.html
https://caddiary.com/?p=4426
https://qiita.com/toshi71/items/bc05d6e15edd645c8f46 -
OSSライセンスに関する記事
https://www.tohoho-web.com/ex/license.html
https://future-architect.github.io/articles/20200821/
https://coliss.com/articles/build-websites/operation/work/choose-a-license-by-github.html -
GitHubでライセンスを追加する方法
-
iTextSharp以外のPDFが編集可能なライブラリ「pdfsharp」(未検証)
https://plaza.rakuten.co.jp/satocchia/diary/202110220000/?scid=we_blg_pc_lastctgy_3_title
https://zenn.dev/awtnb/articles/e54718efcd1b5b#pdfsharp
関連記事
Discussion