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

	概要：テキスト透かしの挿入

	Copyright 2013-2021 Antenna House, Inc.
*/

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

using namespace PdfTk;

void appendWatermark(PtlPDFDocument& doc);

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

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

		// 透かしの設定
		appendWatermark(doc);

		// ファイルに保存します。
		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;
}

void appendWatermark(PtlPDFDocument& doc)
{
	PtlParamWaterMarkText watermarktext;

	//透かしの名前の設定
	watermarktext.setName("透かしの名前");

	//透かしを配置する矩形の設定
	watermarktext.setRect(PtlRect(10.0f, 10.0f, 150.0f, 150.0f));

	//透かしの配置の設定 ALIGN_BOTTOM_LEFT = 7 /* 左下 */
	watermarktext.setAlign(PtlParamWaterMark::ALIGN_BOTTOM_LEFT);

	//透かしのZオーダーの設定 ZORDER_FRONT /* 前面 */
	watermarktext.setZorder(PtlParamWaterMark::ZORDER_FRONT);

	//透かしを入れるページの範囲の設定 PAGE_RANGE_ALL = 0 /* 全ページ */
	watermarktext.setPageRange(PtlParamWaterMark::PAGE_RANGE_ALL);

	//透かしの不透明度の設定
	watermarktext.setOpacity(1.0f);

	//透かしをタイリングして配置するかどうかの設定
	watermarktext.setTiling(false);

	//透かしに指定する文字列の設定
	PtlParamString strbuf("PDFToolAPI TextWatermark");
	watermarktext.setString(strbuf);

	//透かしに指定するフォントの設定
	watermarktext.setFont(PtlParamFont("Times New Roman", 180.0f, PtlParamFont::WEIGHT_NORMAL, false, true));

	//透かしの文字に指定する色の設定
	watermarktext.setTextColor(PtlColorDeviceRGB(1.0f, 0.0f, 0.0f));

	//透かしの文字の縁取りに指定する色の設定
	watermarktext.setOutlineColor(PtlColorDeviceRGB(0.0f, 1.0f, 0.0f));

	//透かしのテキストを対角線上に配置する設定
	watermarktext.setWriteDiagonal(false);

	//透かしのテキストを任意の角度で配置する設定
	watermarktext.setTextAngle(15.0f);

	//透かしの設定
	doc.appendWaterMark(watermarktext);

}
