C++를 사용하여 PDF에서 텍스트 찾기 및 바꾸기

PDF는 조직과 개인 간의 문서 공유에 널리 사용되는 널리 사용되는 형식입니다. 공유하기 전에 PDF 문서에서 일부 텍스트를 찾아 바꿔야 하는 시나리오가 있을 수 있습니다. 이 작업을 수동으로 수행할 수 있지만 시간이 더 오래 걸리고 효율성이 떨어집니다. 더 좋고 빠른 옵션은 프로그래밍 방식으로 수행하는 것입니다. 이 기사에서는 C++를 사용하여 PDF 파일에서 텍스트를 찾고 바꾸는 방법을 배웁니다.

PDF 파일에서 텍스트 찾기 및 바꾸기를 위한 C++ API

Aspose.PDF for C++는 PDF 파일 작업을 위한 C++ 라이브러리입니다. PDF 워크플로의 다양한 측면을 자동화하는 데 도움이 되는 다양한 기능을 제공합니다. 그러한 기능 중 하나는 PDF 파일에서 텍스트를 찾고 바꾸는 것입니다. NuGet을 통해 API를 설치하거나 다운로드 섹션에서 직접 다운로드할 수 있습니다.

PM> Install-Package Aspose.PDF.Cpp

C++를 사용하여 PDF에서 텍스트 찾기 및 바꾸기

Aspose.PDF for C++는 PDF 문서에서 텍스트 검색을 위한 TextFragmentAbsorber 클래스를 제공합니다. 찾고자 하는 텍스트로 이 클래스를 초기화하고 일치하는 모든 텍스트 조각을 검색하는 데 사용합니다. 모든 조각을 사용할 수 있게 되면 조각을 반복하고 텍스트를 바꿉니다. 다음은 C++를 사용하여 PDF 파일에서 텍스트를 찾고 바꾸는 단계입니다.

다음은 C++를 사용하여 전체 PDF 파일에서 텍스트를 찾고 바꾸는 샘플 코드입니다.

// PDF 파일 로드
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 1.pdf");

// 입력 검색 구문의 모든 인스턴스를 찾기 위해 TextAbsorber 객체 생성
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"Document");

// 모든 페이지에 대해 흡수 장치를 수락하십시오.
pdfDocument->get_Pages()->Accept(textFragmentAbsorber);

// 추출된 텍스트 조각 가져오기
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();

// 조각을 통해 루프
for (auto textFragment : textFragmentCollection)
{
	// 텍스트 및 기타 속성 업데이트
	textFragment->set_Text(u"UPDATED TEXT");
	textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
	textFragment->get_TextState()->set_FontSize(22);
}

// 결과 PDF 문서를 저장합니다.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument.pdf");

C++ 특정 PDF 페이지에서 텍스트 찾기 및 바꾸기

전체 문서가 아닌 특정 페이지의 텍스트만 찾아서 바꾸려는 상황이 있을 수 있습니다. 이를 위해 텍스트를 교체하려는 페이지의 TextFragmentAbsorber 개체를 수락합니다. 다음은 PDF 문서의 특정 페이지에서 텍스트를 찾아 바꾸는 단계입니다.

다음은 C++를 사용하여 특정 PDF 페이지의 텍스트를 찾고 바꾸는 샘플 코드입니다.

// PDF 파일 로드
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 1.pdf");

// 입력 검색 구문의 모든 인스턴스를 찾기 위해 TextAbsorber 객체 생성
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"Document");

// 문서의 두 번째 페이지에 대한 흡수 장치를 수락합니다.
pdfDocument->get_Pages()->idx_get(2)->Accept(textFragmentAbsorber);

// 추출된 텍스트 조각 가져오기
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();

// 조각을 통해 루프
for (auto textFragment : textFragmentCollection)
{
	// 텍스트 및 기타 속성 업데이트
	textFragment->set_Text(u"UPDATED TEXT");
	textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
	textFragment->get_TextState()->set_FontSize(22);
}

// 결과 PDF 문서를 저장합니다.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument2.pdf");

C++를 사용하여 PDF 페이지 영역의 텍스트 바꾸기

전체 페이지를 검색하는 대신 텍스트를 바꿀 페이지 영역을 지정할 수 있습니다. 이를 위해 API는 Rectangle 클래스를 제공합니다. 다음은 PDF 페이지의 특정 부분에서 텍스트를 찾고 바꾸는 단계입니다.

다음은 특정 PDF 페이지 영역에서 텍스트를 찾고 바꾸는 샘플 코드입니다.

// PDF 파일 로드
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 1.pdf");

// 입력 검색 구문의 모든 인스턴스를 찾기 위해 TextAbsorber 객체 생성
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"Document");

// 페이지 경계 내에서 텍스트 검색
textFragmentAbsorber->get_TextSearchOptions()->set_LimitToPageBounds(true);

// TextSearchOptions에 대한 페이지 영역 지정
textFragmentAbsorber->get_TextSearchOptions()->set_Rectangle(MakeObject<Rectangle>(100, 100, 800, 700));

// 문서의 첫 페이지에 대한 흡수 장치를 수락합니다.
pdfDocument->get_Pages()->idx_get(1)->Accept(textFragmentAbsorber);

// 추출된 텍스트 조각 가져오기
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();

// 조각을 통해 루프
for (auto textFragment : textFragmentCollection)
{
	// 텍스트 및 기타 속성 업데이트
	textFragment->set_Text(u"UPDATED TEXT");
	textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
	textFragment->get_TextState()->set_FontSize(22);
}

// 결과 PDF 문서를 저장합니다.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument.pdf");

정규 표현식을 사용하여 PDF 파일에서 텍스트 찾기 및 바꾸기

C++용 Aspose.PDF는 정규식을 사용하여 텍스트를 검색하는 기능도 제공합니다. 정규식을 사용하면 이메일 주소나 전화번호 등과 같은 텍스트를 찾을 수 있습니다. 이를 위해서는 검색 문자열 대신 정규식을 지정하고 TextSearchOptions 클래스를 사용하여 정규식을 사용하고 있음을 나타내야 합니다. 검색을 위한 표현입니다. 다음은 정규식을 사용하여 PDF 파일에서 텍스트를 찾고 바꾸는 단계입니다.

다음은 정규식을 사용하여 PDF 파일에서 텍스트를 찾고 바꾸는 샘플 코드입니다.

// PDF 파일 로드
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 2.pdf");

// 입력 검색 구문의 모든 인스턴스를 찾기 위해 TextAbsorber 객체 생성
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"\\d{4} - \\d{4}"); // Like 1999-2000

// 정규식 사용을 활성화하도록 텍스트 검색 옵션 설정
auto textSearchOptions = MakeObject<TextSearchOptions>(true);
textFragmentAbsorber->set_TextSearchOptions(textSearchOptions);

// 문서의 모든 페이지에 대해 흡수 장치를 수락합니다.
pdfDocument->get_Pages()->Accept(textFragmentAbsorber);

// 추출된 텍스트 조각 가져오기
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();

// 조각을 통해 루프
for (auto textFragment : textFragmentCollection)
{
	// 텍스트 및 기타 속성 업데이트
	textFragment->set_Text(u"UPDATED TEXT");
	textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
	textFragment->get_TextState()->set_FontSize(22);
}

// 결과 PDF 문서를 저장합니다.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument.pdf");

무료 라이선스 받기

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

결론

이 기사에서는 C++를 사용하여 PDF 파일에서 텍스트를 찾고 바꾸는 방법을 배웠습니다. 전체 PDF 문서, 특정 PDF 페이지 또는 페이지의 특정 영역에서 텍스트를 바꾸는 방법을 살펴보았습니다. 또한 정규식을 사용하여 텍스트를 검색하고 바꾸는 방법을 배웠습니다. C++용 Aspose.PDF는 PDF 문서 작업을 케이크 조각으로 만드는 많은 추가 기능이 있는 강력한 API입니다. 공식문서를 통해 API를 자세히 살펴볼 수 있다. 문의사항이 있으시면 포럼으로 연락주시기 바랍니다.

또한보십시오