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

	概要：テキスト抽出（末尾に改行コード挿入）

	Copyright 2018-2025 Antenna House, Inc.
*/

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

using namespace PdfTk;

void extractTextInsertReturn(PtlPage& page);

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

		PtlPDFDocument doc;

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

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

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

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

		// テキスト抽出
		extractTextInsertReturn(page);

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

void extractTextInsertReturn(PtlPage& page)
{
	// ページサイズ
	PtlSize pageSize = page.getSize();

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

	// テキスト抽出パラメータ
	PtlParamExtractText paramExtractText;

	// 抽出するテキストのタイプを設定（改行はTEXT_SORTの場合のみ有効
	paramExtractText.setTextType(PtlParamExtractText::TEXT_TYPE::TEXT_SORT);

	//改行の挿入を設定
	paramExtractText.setInsertReturn(true);

	// テキスト抽出
	PtlParamString text = content.extractText(paramExtractText);

	printf(text.c_str());
}