DioDocsでPDFドキュメント内のテキストを置換、削除する

今回は「DioDocs(ディオドック)」で新しく追加されたReplaceTextメソッドとDeleteTextメソッドを使用してPDFドキュメント内のテキストを置換および削除する方法を紹介します。

こちらは2022年9月28日(水)にリリースされた「DioDocs V5J SP2」でDioDocs for PDFに追加されている機能です。

今まではFindTextメソッドを使用してPDFドキュメント内のテキストを検索することは可能でしたが、検索したテキストの置換や削除はできませんでした。お客様からたくさんのご要望をいただきまして、今回のバージョンアップからPDFドキュメント内のテキストを検索して、そのテキストを置換したり削除することができるようになりました。

PDFドキュメント内のテキストを置換する

テキストの置換にはReplaceTextメソッドを使用します。このメソッドのパラメータは以下です。

public void ReplaceText(
   FindTextParams findTextParams,
   System.string newText,
   OutputRange searchRange,
   Font font,
   System.Nullable<float> fontSize
)
パラメータ説明備考
findTextParams検索するテキストFindTextParamsデータ型としてセット。正規表現として解釈するかや、大文字小文字の区別をするかなどの設定が可能
newText置換するテキスト
searchRangeテキストを検索する範囲省略可
font置換するテキストのフォント省略可。省略時には置換前のフォントを適用
fontSize置換するテキストのフォントサイズ比省略可。省略または1を設定すると置換前と同じサイズを適用

たとえば、以下のPDFドキュメント内のテキスト(氏名「葡萄 太郎」、申請日「2022年9月28日」、内容「筆記用具」)を置換するケースを想定します。

PDFドキュメント内のテキストを置換する

この場合、以下のようなコードになります。

// PDFファイルを読み込む
var doc = new GcPdfDocument();
var fs = File.OpenRead("expense-report.pdf");
doc.Load(fs);

// PDFドキュメント内のテキストを置換
doc.ReplaceText(new FindTextParams("葡萄 太郎", false, false), "寺岡 次郎");
doc.ReplaceText(new FindTextParams("2022年9月28日", false, false), "2022-09-28");
doc.ReplaceText(new FindTextParams("筆記用具", false, false), "筆記用具(ボールペン)");

// PDFファイルに保存
doc.Save("result.pdf");

対象のテキストを置換したPDFドキュメントは以下になります。

PDFドキュメント内のテキストを置換する

PDFドキュメント内のテキストを削除する

テキストの削除にはDeleteTextメソッドを使用します。このメソッドのパラメータは以下です。

public void DeleteText( 
   FindTextParams findTextParams,
   DeleteTextMode mode,
   OutputRange searchRange
)
パラメータ説明備考
findTextParams検索するテキストFindTextParamsデータ型としてセット。正規表現として解釈するかや、大文字小文字の区別をするかなどの設定が可能
mode削除モードStandard:削除後にテキストを詰める
PreserveSpace:削除後にテキストを詰めずに空白のままにする
searchRangeテキストを検索する範囲省略可

たとえば、以下のPDFドキュメント内のテキスト(内容「昼食代(カツサンド)」の「(カツサンド)」)を削除するケースを想定します。

PDFドキュメント内のテキストを削除する

この場合、以下のようなコードになります。

// PDFファイルを読み込む
var doc = new GcPdfDocument();
var fs = File.OpenRead("expense-report.pdf");
doc.Load(fs);

// PDFドキュメント内のテキストを削除
FindTextParams ftp = new FindTextParams("(カツサンド)", false, false);
doc.DeleteText(ftp, DeleteTextMode.Standard, null);

// PDFファイルに保存
doc.Save("result.pdf");

対象のテキストを削除したPDFドキュメントは以下になります。

PDFドキュメント内のテキストを削除する

上記コードを実装しているサンプルはコチラです。


弊社Webサイトでは、製品の機能を気軽に試せるデモアプリケーションやトライアル版も公開していますので、こちらもご確認いただければと思います。

また、ご導入前の製品に関するご相談やご導入後の各種サービスに関するご質問など、お気軽にお問合せください。

\  この記事をシェアする  /