/*
	Antenna House PDF Tool API V8.0
	C++ Interface sample program

	概要：テキスト検索して墨消し注釈（Redact注釈）を付ける

	Copyright 2025 Antenna House, Inc.
*/

#include <PdfTk.h>
#include <stdio.h>

using namespace PdfTk;

int main(int argc, char* argv[])
{
	if (argc < 4) {
		printf("usage: SearchTextAndRedact.exe in-pdf-file out-pdf-file keyword\n");
		return 1;
	}
	try
	{
		PtlParamInput input(argv[1]);
		PtlParamOutput output(argv[2]);
		PtlParamString keyword(argv[3]);

		PtlPDFDocument doc;

		// PDFファイルをロードします。
		doc.load(input);

		PtlColorDeviceRGB colorRed(1.0f, 0.0f, 0.0f);
		PtlColorDeviceRGB colorGreen(0.0f, 1.0f, 0.0f);
		PtlColorDeviceRGB colorBlue(0.0f, 0.0f, 1.0f);

		// 検索の為のパラメータ
		PtlParamSearchTextAndRedact paramSearchTextAndRedact;

		 // 検索設定
        paramSearchTextAndRedact.appendText(keyword);
        paramSearchTextAndRedact.setColor(colorRed);			//墨消し注釈　アウトラインの色。設定しない場合は赤色になります。
        paramSearchTextAndRedact.setInteriorColor(colorGreen);	//墨消し注釈　塗りつぶしの色。設定しない場合は無色になります。
        paramSearchTextAndRedact.setOpacity(0.5f);				//注釈の透明度。塗りつぶし色に適用されます。設定しない場合は「1.0f」（＝不透明）
        paramSearchTextAndRedact.setMaskColor(colorBlue);		//マスク（墨消し領域）の色　（→墨消しが適用された後の色）。設定しない場合は黒色になります。

		// 検索実行
		doc.searchTextAndDoProcess(paramSearchTextAndRedact);

		// ファイルに保存します。
		doc.save(output);

		printf("完了!\n");
	}
	catch (const PtlException &e)
	{
		fprintf(stderr, "Error code : %d\n %s\n", e.getErrorCode(), e.getErrorMessage().c_str());
		return 1;
	}	
	return 0;
}

