PDF는 조직과 개인 간의 문서 공유에 널리 사용되는 널리 사용되는 형식입니다. 공유하기 전에 PDF 문서에서 일부 텍스트를 찾아 바꿔야 하는 시나리오가 있을 수 있습니다. 이 작업을 수동으로 수행할 수 있지만 시간이 더 오래 걸리고 효율성이 떨어집니다. 더 좋고 빠른 옵션은 프로그래밍 방식으로 수행하는 것입니다. 이 기사에서는 C++를 사용하여 PDF 파일에서 텍스트를 찾고 바꾸는 방법을 배웁니다.
- PDF 파일에서 텍스트 찾기 및 바꾸기를 위한 C++ API
- C++를 사용하여 PDF에서 텍스트 찾기 및 바꾸기
- C++ 특정 PDF 페이지에서 텍스트 찾기 및 바꾸기
- C++를 사용하여 PDF 페이지 영역의 텍스트 바꾸기
- 정규 표현식을 사용하여 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 파일에서 텍스트를 찾고 바꾸는 단계입니다.
- Document 클래스를 사용하여 PDF 파일을 로드합니다.
- TextFragmentAbsorber 클래스의 인스턴스를 생성하고 PDF 파일에서 찾고자 하는 텍스트로 초기화합니다.
- [Document->getPages()->Accept(System::SharedPtr)를 사용하여 페이지에 대해 TextFragmentAbsorber를 수락합니다.Text::TextFragmentAbsorber 방문자)]10 메서드입니다.
- TextFragmentAbsorber->getTextFragments() 메서드를 사용하여 모든 텍스트 항목을 검색합니다.
- TextFragmentCollection을 반복하고 TextFragment->setText (System::String value) 메서드를 사용하여 텍스트를 업데이트합니다.
- Document->Save (System::String outputFileName) 메서드를 사용하여 업데이트된 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 문서의 특정 페이지에서 텍스트를 찾아 바꾸는 단계입니다.
- Document 클래스를 사용하여 PDF 파일을 로드합니다.
- TextFragmentAbsorber 클래스의 인스턴스를 생성하고 PDF 파일에서 찾고자 하는 텍스트로 초기화합니다.
- Document->getPages()->idxget(int32t index)->Accept(System::SharedPtrText::TextFragmentAbsorber 방문자) 방법입니다.
- TextFragmentAbsorber->getTextFragments() 메서드를 사용하여 모든 텍스트 항목을 검색합니다.
- TextFragmentCollection을 반복하고 TextFragment->setText (System::String value) 메서드를 사용하여 텍스트를 업데이트합니다.
- Document->Save (System::String outputFileName) 메서드를 사용하여 업데이트된 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 페이지의 특정 부분에서 텍스트를 찾고 바꾸는 단계입니다.
- Document 클래스를 사용하여 PDF 파일을 로드합니다.
- TextFragmentAbsorber 클래스의 인스턴스를 생성하고 PDF 파일에서 찾고 바꿀 텍스트로 초기화합니다.
- TextFragmentAbsorber->getTextSearchOptions()->setRectangle (System::SharedPtr< Aspose::Pdf::Rectangle> 값) 메서드를 사용하여 검색할 페이지 영역을 설정합니다.
- Document->getPages()->idxget(int32t index)->Accept(System::SharedPtrText::TextFragmentAbsorber 방문자) 메서드입니다.
- TextFragmentAbsorber->getTextFragments() 메서드를 사용하여 모든 텍스트 항목을 검색합니다.
- TextFragmentCollection을 반복하고 TextFragment->setText (System::String value) 메서드를 사용하여 텍스트를 업데이트합니다.
- Document->Save (System::String outputFileName) 메서드를 사용하여 업데이트된 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 파일에서 텍스트를 찾고 바꾸는 단계입니다.
- Document 클래스를 사용하여 PDF 파일을 로드합니다.
- TextFragmentAbsorber 클래스의 인스턴스를 만들고 사용하려는 정규식으로 초기화합니다.
- TextSearchOptions 클래스를 초기화하고 해당 생성자에 true를 전달합니다. 정규식을 사용하여 검색하고 있음을 나타냅니다.
- TextFragmentAbsorber->setTextSearchOptions(System::SharedPtrAspose::Pdf::Text::TextSearchOptions 값) 메서드입니다.
- Document->getPages()->Accept(System::SharedPtrText::TextFragmentAbsorber 방문자) 메서드입니다.
- TextFragmentAbsorber->getTextFragments() 메서드를 사용하여 모든 텍스트 항목을 검색합니다.
- TextFragmentCollection을 반복하고 TextFragment->setText (System::String value) 메서드를 사용하여 텍스트를 업데이트합니다.
- Document->Save (System::String outputFileName) 메서드를 사용하여 업데이트된 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를 자세히 살펴볼 수 있다. 문의사항이 있으시면 포럼으로 연락주시기 바랍니다.