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

	概要：画像の描画

	Copyright 2015-2021 Antenna House, Inc.
*/

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

using namespace PdfTk;

void drawImage(PtlPage& page, const char* pathImage);

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

		PtlPDFDocument doc;

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

		// ページコンテナの取得
		PtlPages& pages = doc.getPages();

		if (pages.isEmpty()){
			printf("ページコンテナが空\n");
			return 1;
		}

		// 先頭ページの取得
		PtlPage page = pages.get(0);

		// 画像の描画
		drawImage(page, argv[3]);

		// ファイルに保存します。
		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 drawImage(PtlPage& page, const char* pathImage)
{
	// 挿入する画像
	PtlParamInput insertImage(pathImage);

	// ページコンテントの取得
	PtlContent& content = page.getContent();

	// ページサイズ
	PtlSize pageSize = page.getSize();

	// 描画矩形
	PtlRect rect(10.0f, 10.0f, pageSize.getWidth()-10.0f, pageSize.getHeight()-10.0f);

	// 画像の描画に使うパラメータクラス
	PtlParamDrawImage paramDrawImage;

	// 入力画像ストリームの設定
	paramDrawImage.setImageStream(insertImage);

	// マルチTiffのページ番号の設定（Tiffファイルにのみ有効） 
	paramDrawImage.setImagePageNumber(0);

	// 画像の描画
	content.drawImage(rect, PtlContent::ALIGN_TOP_LEFT, paramDrawImage);
}
