PDF 파일은 인터넷을 통해 문서를 교환하기 위한 표준 형식입니다. 인보이스 및 제품 가이드와 같은 문서는 일반적으로 PDF 형식으로 공유됩니다. 추가로 추출 및 처리해야 하는 표 형식 데이터가 포함된 여러 송장이 있는 상황이 있을 수 있습니다. 이 데이터를 프로그래밍 방식으로 추출하는 것이 더 효율적입니다. 이를 위해 이 기사에서는 C++를 사용하여 PDF 테이블에서 데이터를 추출하는 방법을 설명합니다.

PDF 파일의 테이블에서 데이터 추출을 위한 C++ API

Aspose.PDF for C++는 PDF 파일을 만들고 읽고 업데이트할 수 있는 C++ 라이브러리입니다. 또한 API는 PDF 파일의 테이블에서 데이터 추출을 지원합니다. NuGet을 통해 API를 설치하거나 다운로드 섹션에서 직접 다운로드할 수 있습니다.

PM> Install-Package Aspose.PDF.Cpp

C++를 사용하여 PDF 테이블에서 데이터 추출

다음은 PDF 테이블에서 데이터를 추출하는 단계입니다.

다음 샘플 코드는 C++를 사용하여 PDF 테이블에서 데이터를 추출하는 방법을 보여줍니다.

// PDF 문서 로드
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Table_input3.pdf");

// 문서의 페이지를 반복합니다.
for (auto page : pdfDocument->get_Pages())
{
	// TableAbsorber 클래스의 인스턴스 만들기
	auto absorber = MakeObject<TableAbsorber>();
	absorber->Visit(page);

	// 테이블을 통해 반복
	for (auto table : absorber->get_TableList())
	{
		Console::WriteLine(u"Table");

		// 행 반복
		for (auto row : table->get_RowList())
		{
			// 셀 반복
			for (auto cell : row->get_CellList())
			{
				// 텍스트 조각을 통해 반복
				for (auto fragment : cell->get_TextFragments())
				{
					String string = u"";

					// 텍스트 세그먼트를 통해 반복
					for (auto seg : fragment->get_Segments())
					{
						// 텍스트 가져오기
						string = String::Concat(string, seg->get_Text());
					}

					// 텍스트 인쇄
					Console::WriteLine(string);
				}
			}
			Console::WriteLine();
		}
	}
}

PDF 페이지의 특정 영역에 있는 테이블에서 데이터 추출

PDF 페이지의 특정 영역에 있는 테이블에서 데이터를 추출하려면 다음 단계를 따르십시오.

다음 샘플 코드는 C++를 사용하여 PDF 페이지의 특정 영역에 있는 테이블에서 데이터를 추출하는 방법을 보여줍니다.

// PDF 문서 로드
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Table_input4.pdf");

// 문서의 첫 페이지 가져오기
auto page = pdfDocument->get_Pages()->idx_get(1);

// 페이지의 주석을 통해 반복
for (auto annotation : page->get_Annotations())
{
	// 주석 유형 확인
	if (annotation->get_AnnotationType() == Annotations::AnnotationType::Square)
	{
		System::SharedPtr<SquareAnnotation> squareAnnotation = DynamicCast<SquareAnnotation>(annotation);

		// TableAbsorber 클래스의 인스턴스 만들기
		auto absorber = MakeObject<TableAbsorber>();
		absorber->Visit(page);

		// 테이블을 통해 반복
		for (auto table : absorber->get_TableList())
		{
			// 테이블이 지역에 있는지 확인
			if ((squareAnnotation->get_Rect()->get_LLX() < table->get_Rectangle()->get_LLX()) &&
				(squareAnnotation->get_Rect()->get_LLY() < table->get_Rectangle()->get_LLY()) &&
				(squareAnnotation->get_Rect()->get_URX() > table->get_Rectangle()->get_URX()) &&
				(squareAnnotation->get_Rect()->get_URY() > table->get_Rectangle()->get_URY())
				)
			{
				// 행 반복
				for (auto row : table->get_RowList())
				{
					// 셀 반복
					for (auto cell : row->get_CellList())
					{
						// 텍스트 조각을 통해 반복
						for (auto fragment : cell->get_TextFragments())
						{
							String string = u"";

							// 텍스트 세그먼트를 통해 반복
							for (auto seg : fragment->get_Segments())
							{
								// 텍스트 가져오기
								string = String::Concat(string, seg->get_Text());
							}

							// 텍스트 인쇄
							Console::WriteLine(string);
						}
					}
					Console::WriteLine();
				}
			}
		}
		break;
	}
}

무료 라이선스 받기

평가 제한 없이 API를 사용해 보려면 무료 임시 라이선스를 요청할 수 있습니다.

결론

이 기사에서는 C++를 사용하여 PDF 테이블에서 데이터를 추출하는 방법을 배웠습니다. 또한 PDF 페이지의 특정 영역에 있는 테이블에서 데이터를 추출하는 방법을 배웠습니다. Aspose.PDF for C++ API는 PDF 파일 작업을 위한 많은 추가 기능을 제공합니다. API에 대한 자세한 내용은 공식 문서에서 확인할 수 있습니다. 질문이 있는 경우 무료 지원 포럼을 통해 언제든지 문의하십시오.

또한보십시오