
특정 텍스트를 PDF 문서에서 검색하는 것은 문서 관리 시스템, 법률 검토 도구, 인보이스 프로세서 및 기타 기업 애플리케이션에서 흔한 작업입니다. 키워드를 찾거나 특정 값을 추출하거나 민감한 정보를 삭제하려고 하든, PDF 검색을 자동화하면 많은 시간과 노력을 절약할 수 있습니다.
이 블로그 포스트에서는 C#을 사용하여 PDF 파일에서 텍스트를 프로그래밍적으로 검색하는 방법을 배웁니다. 우리는 실용적인 C# 코드 예제를 통해 주요 기능을 단계별로 안내할 것입니다.
이 기사는 다음 주제를 다룹니다:
- C# PDF 문서 검색 라이브러리
- C#를 사용하여 PDF에서 텍스트 검색하기
- 대소문자를 구분하지 않는 전체 단어 검색 PDF에서
- PDF에서 정규 표현식으로 검색하기
- 텍스트 검색 및 추출 위치 세부정보
- 찾은 텍스트 강조 또는 교체
- 모든 페이지 또는 특정 페이지에서 검색
- 민감한 정보 검색 및 수정
- 무료 리소스
C# 라이브러리로 PDF 문서 검색하기
Aspose.PDF for .NET는 C#을 사용하여 PDF 파일에서 텍스트를 검색하는 과정을 간소화합니다. 이 라이브러리를 통해 정확한 단어를 찾고, 정규 표현식을 사용하여 패턴을 일치시키며, 일치하는 텍스트를 강조 표시하거나 교체할 수 있습니다. 단 몇 줄의 코드로 가능합니다. 이 강력한 라이브러리는 PDF 문서를 조작하는 데 강력한 기능을 제공합니다. 개발자들이 검색 기능을 쉽게 구현할 수 있도록 돕습니다. Aspose.PDF를 사용하면 PDF에서 빠르게 단어를 찾을 수 있어 소프트웨어 개발자들에게 매우 유용한 도구입니다.
PDF 텍스트 검색을 시작하기 전에 개발 환경을 설정해야 합니다. Aspose.PDF for .NET을 사용하기 시작하려면 다음 단계를 따르세요:
1. Aspose.PDF for .NET 설치하기.
다음에서 다운로드하십시오: releases 또는 NuGet를 통해 설치하십시오. Visual Studio에서 .NET 프로젝트를 열고 NuGet 패키지 관리자 콘솔에서 다음 명령을 실행하십시오:
PM> Install-Package Aspose.PDF
이 명령은 Aspose.PDF 라이브러리를 프로젝트에 추가하여 강력한 PDF 처리 기능에 접근 할 수 있게 합니다.
2. 필요한 네임스페이스 가져오기
C# 파일의 맨 위에 다음과 같은 using 지시문을 추가하십시오:
using Aspose.Pdf;
using Aspose.Pdf.Text;
이제 Aspose.PDF의 API를 사용하여 PDF 파일 내에서 텍스트 검색을 시작할 준비가 되었습니다.
C#를 사용하여 PDF에서 텍스트 검색
Aspose.PDF for .NET을 사용하면 PDF에서 특정 단어나 구문을 쉽게 검색하고, 모든 인스턴스를 찾아 강조 표시하거나 세부 정보를 추출하는 등의 작업을 수행할 수 있습니다.
기본 텍스트 검색을 수행하려면 다음 단계를 따르세요:
- 대상 PDF 파일을 Document 클래스 사용하여 불러옵니다.
- TextFragmentAbsorber를 생성하여 검색 키워드를 정의합니다.
- 모든 페이지에서 Accept() 메서드를 사용하여 흡수기를 실행하십시오.
- 모든 일치하는 텍스트 조각을 가져옵니다.
- 찾은 매치 수를 출력하십시오.
- 루프를 통해 각 일치를 페이지 번호와 함께 표시하세요.
다음 코드 예제는 이러한 단계를 구현합니다.
// PDF 파일을 로드하십시오.
Document pdfDocument = new Document("sample.pdf");
// 검색 키워드로 텍스트 흡수기를 만드세요.
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("invoice");
// 모든 페이지에 흡수기를 적용하십시오.
pdfDocument.Pages.Accept(textFragmentAbsorber);
// 일치하는 텍스트 조각을 가져옵니다.
TextFragmentCollection textFragments = textFragmentAbsorber.TextFragments;
// Print how many times the keyword was found
Console.WriteLine($"Found {textFragments.Count} instance(s) of the keyword.");
// 각 찾은 텍스트를 반복하고 출력합니다.
foreach (TextFragment fragment in textFragments)
{
Console.WriteLine($"Text: {fragment.Text} | Page: {fragment.Page.Number}");
}
Output Example
Found 3 instance(s) of the keyword.
Text: invoice | Page: 1
Text: invoice | Page: 2
Text: invoice | Page: 3
이 예제는 PDF의 모든 페이지에서 작동하는 간단한 키워드 검색을 보여줍니다. 일치하는 텍스트와 그 페이지 번호를 확인할 수 있습니다.
PDF 검색에 사용되는 주요 클래스 이해하기
코드에서 발생하고 있는 일을 더 잘 이해하기 위해, 여기에 관련된 주요 클래스와 메서드에 대한 간단한 분석이 있습니다:
문서
: 전체 PDF 파일을 나타냅니다. 페이지, 콘텐츠 및 구조에 대한 접근을 제공합니다.TextFragmentAbsorber
: PDF 내에서 주어진 문자열 또는 패턴의 모든 발생을 찾습니다. 대소문자를 구분하지 않거나 정규 표현식 기반 검색과 같은 기능도 활성화할 수 있습니다.Accept()
: 각 페이지에 흡수기를 적용합니다. 문서를 스캔하고 일치하는 조각을 수집합니다.TextFragments
: 흡수기가 반환한 모든 일치하는 텍스트 조각의 모음.TextFragment
: 각 개별 일치 항목은 내용, 위치 및 페이지 번호와 같은 세부정보를 포함합니다.
C#를 사용한 대소문자 구분 없는 전체 단어 검색
PDF 콘텐츠를 검색할 때, 시스템이 일치를 찾는 방법을 조절하여 정확한 결과를 보장해야 합니다. 때때로, 대문자와 소문자를 무시하고 싶거나(“Invoice” 대 “invoice”), 전체 단어만 일치시키고 싶을 수도 있습니다 - 다른 단어 내의 부분 일치는 제외하는 것입니다.
Aspose.PDF for .NET는 두 가지 모두를 수행할 수 있는 도구를 제공합니다.
대소문자 구분 없는 검색
기본적으로 검색은 대소문자를 구분합니다. 문자 대소문자를 무시하려면 TextSearchOptions
를 사용하고 IgnoreCase
를 활성화하세요:
// PDF 파일을 로드하세요.
Document pdfDocument = new Document("sample.pdf");
// 텍스트 흡수기를 대소문자를 구분하지 않는 정규 표현식으로 만드세요.
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("(?i)INVOICE");
// 텍스트 검색 옵션을 설정하여 정규 표현식 사용을 활성화합니다.
TextSearchOptions textSearchOptions = new TextSearchOptions(true);
textFragmentAbsorber.TextSearchOptions = textSearchOptions;
// 모든 페이지에 흡수제를 적용하세요
pdfDocument.Pages.Accept(textFragmentAbsorber);
// 매칭된 텍스트 조각을 검색하십시오.
TextFragmentCollection textFragments = textFragmentAbsorber.TextFragments;
// Output the number of matches found
Console.WriteLine($"Found {textFragments.Count} instance(s) of the keyword.");
// 루프를 돌며 발견된 각 텍스트 조각을 표시합니다.
foreach (TextFragment fragment in textFragments)
{
Console.WriteLine($"Text: {fragment.Text} | Page: {fragment.Page.Number}");
}
이것은 "Invoice", "invoice", "INVOICE" 및 기타 변형을 찾습니다.
전체 단어만 일치시키기
부분 일치를 방지할 수도 있습니다. 예를 들어, car
를 검색하면 care
나 scar
와 일치하지 않아야 합니다.
// PDF 파일을 불러오세요.
Document pdfDocument = new Document("sample.pdf");
// 텍스트 흡수기를 만들기 위한 정규 표현식 패턴을 전체 단어 일치를 위해 사용할 수 있습니다.
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber(@"\bcar\b");
// 정규 표현식 사용을 가능하게 하려면 텍스트 검색 옵션을 설정하세요.
TextSearchOptions textSearchOptions = new TextSearchOptions(true);
textFragmentAbsorber.TextSearchOptions = textSearchOptions;
// 모든 페이지에 흡수제를 적용하세요.
pdfDocument.Pages.Accept(textFragmentAbsorber);
// 일치하는 텍스트 조각을 검색하십시오.
TextFragmentCollection textFragments = textFragmentAbsorber.TextFragments;
// 찾은 경기 수를 출력하십시오.
Console.WriteLine($"Found {textFragments.Count} instance(s) of the keyword.");
// 루프를 통해 발견된 각 텍스트 조각을 표시합니다.
foreach (TextFragment fragment in textFragments)
{
Console.WriteLine($"Text: {fragment.Text} | Page: {fragment.Page.Number}");
}
이것은 “차"라는 단어의 독립적인 인스턴스만 일치하도록 보장합니다.
PDF에서 정규 표현식을 사용한 검색
특정 경우에는 특정 단어뿐만 아니라 날짜, 이메일 주소 또는 참조 번호와 같은 패턴을 찾아야 합니다. 그럴 때 정규 표현식(regular expressions, regex)이 필요합니다.
Aspose.PDF for .NET는 PDF 문서의 모든 부분에서 고급 텍스트 검색을 위해 정규 표현식(regex)을 사용할 수 있게 해줍니다.
예시: PDF에서 모든 날짜 찾기
모든 날짜를 dd/mm/yyyy
형식으로 찾고 싶다고 가정해 보겠습니다:
// PDF를 로드하고 텍스트를 검색합니다.
Document pdfDocument = new Document("sample.pdf");
// 검색 옵션에서 정규식 활성화
TextSearchOptions searchOptions = new TextSearchOptions(true)
{
IsRegularExpressionUsed = true
};
// 날짜 패턴으로 흡수기를 생성하세요.
TextFragmentAbsorber absorber = new TextFragmentAbsorber(@"\d{2}/\d{2}/\d{4}", searchOptions);
// 페이지에 흡수제를 적용하십시오.
pdfDocument.Pages.Accept(absorber);
// 루프하고 발견된 패턴을 출력하십시오.
foreach (TextFragment fragment in absorber.TextFragments)
{
Console.WriteLine($"Found date: {fragment.Text} on Page {fragment.Page.Number}");
}
다른 유용한 패턴:
- Emails:
\b[A-Za-z0-9.%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b
- Phone Numbers:
\d{3}[-.\s]??\d{3}[-.\s]??\d{4}
- Invoice Numbers:
INV-\d+
Regex는 정적 텍스트를 넘어 검색 능력을 확장하여 비구조적 문서에서 구조화된 데이터를 추출하는 데 도움을 줍니다.
텍스트 검색 및 위치 세부 정보 추출
때때로, 텍스트를 찾는 것만으로는 충분하지 않습니다—PDF에서 그것이 정확히 어디에 나타나는지 알아야 할 수도 있습니다. Aspose.PDF는 모든 일치 항목의 페이지 번호, 좌표 및 형식 세부 정보를 추출할 수 있게 해줍니다.
이 기능은 인덱스를 구축하거나, 문서에 태그를 달거나, 클릭 가능한 링크를 만드는 데 특히 유용합니다.
예시: 각 매치의 위치 가져오기
// PDF를 로드하고 텍스트를 검색합니다.
Document pdfDocument = new Document("sample.pdf");
TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
pdfDocument.Pages.Accept(absorber);
// 일치하는 조각을 받으세요.
TextFragmentCollection fragments = absorber.TextFragments;
// 각 매치에 대한 위치와 텍스트를 인쇄합니다.
foreach (TextFragment fragment in fragments)
{
Console.WriteLine($"Text: {fragment.Text}");
Console.WriteLine($"Page: {fragment.Page.Number}");
Console.WriteLine($"Position - X: {fragment.Position.XIndent}, Y: {fragment.Position.YIndent}");
Console.WriteLine($"Font: {fragment.TextState.Font.FontName}, Size: {fragment.TextState.FontSize}");
Console.WriteLine("------------");
}
샘플 출력
Text: invoice
Page: 1
Position - X: 33.482, Y: 708.246
Font: Helvetica, Size: 12
------------
Text: invoice
Page: 2
Position - X: 33.482, Y: 708.246
Font: Helvetica, Size: 12
------------
Text: invoice
Page: 3
Position - X: 33.482, Y: 708.246
Font: Helvetica, Size: 12
------------
이제 “invoice"라는 단어가 어디에서 나타나는지, 그리고 어떻게 스타일이 지정되어 있는지를 정확히 알게 되었습니다. 이러한 세부 수준은 주석, 툴팁 또는 동적 하이라이트와 같은 고급 처리를 위한 기회를 열어줍니다.
찾은 텍스트 강조 또는 교체
특정 텍스트를 PDF에서 찾은 후, 이를 강조 표시하거나 심지어 새로운 내용으로 교체하여 한 단계 더 나아갈 수 있습니다. Aspose.PDF for .NET은 TextFragment
객체를 사용하여 일치하는 텍스트를 쉽게 스타일링하거나 수정할 수 있도록 해줍니다.
PDF에서 텍스트 검색 및 강조 표시
텍스트의 배경과 글꼴 색상을 변경하여 시각적으로 강조할 수 있습니다.
TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
pdfDocument.Pages.Accept(absorber);
foreach (TextFragment fragment in absorber.TextFragments)
{
// Highlight by changing text appearance
fragment.TextState.BackgroundColor = Color.Yellow;
fragment.TextState.ForegroundColor = Color.Red;
fragment.TextState.FontStyle = FontStyles.Bold;
}
이것은 검토, 수정 또는 주석이 달린 보고서를 생성하는 데 유용합니다.
텍스트 찾기 및 바꾸기
문서에서 텍스트를 수정하거나 업데이트해야 합니까? 그냥 직접 교체하세요:
foreach (TextFragment fragment in absorber.TextFragments)
{
fragment.Text = "REDACTED";
}
새로운 형식을 적용하면서 교체할 수도 있습니다:
fragment.TextState.FontSize = 12;
fragment.TextState.Font = FontRepository.FindFont("Arial");
fragment.TextState.ForegroundColor = Color.Black;
프로그램matically 텍스트를 강조하고 교체하는 것은 템플릿 정리, 오래된 콘텐츠 업데이트 또는 개인 데이터 검열과 같은 많은 문서 처리 작업을 자동화할 수 있게 해줍니다.
모든 페이지 또는 특정 페이지에서 검색
기본적으로, Aspose.PDF는 PDF의 모든 페이지를 검색합니다. 하지만 때때로 특정 페이지나 페이지 범위로 검색을 제한하고 싶을 수 있습니다. 특히 큰 파일로 작업하거나 콘텐츠가 예측 가능한 경우에 그렇습니다.
Aspose.PDF는 두 가지 모두 쉽게 할 수 있도록 만들어 줍니다.
모든 페이지 검색 (기본값)
페이지를 지정하지 않으면 흡수기가 자동으로 모든 페이지를 검색합니다.
TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
pdfDocument.Pages.Accept(absorber); // Searches all pages
특정 페이지에서 검색하기
당신은 또한 직접적으로 특정 페이지를 타겟팅하여 단일 페이지를 검색할 수 있습니다:
TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
// Search only on page 2
pdfDocument.Pages[2].Accept(absorber);
페이지 범위 검색
사용자가 지정한 범위(예: 2페이지에서 4페이지까지)를 검색하려면, 범위를 반복하기만 하면 됩니다:
TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
// Loop through selected pages
for (int i = 2; i <= 4; i++)
{
pdfDocument.Pages[i].Accept(absorber);
}
이 접근 방식은 성능과 정확성에 대한 완전한 제어를 제공하며, 특히 스캔하거나 분할된 문서에 유용합니다.
고급 사용 사례: 민감한 정보 검색 및 삭제
법률, 인사 또는 재무 문서에서는 이름, ID 또는 계좌 번호와 같은 민감한 콘텐츠를 공유하기 전에 숨기는 것이 일반적입니다. Aspose.PDF for .NET은 검색 기능과 수정 기능을 결합하여 이를 쉽게 만듭니다.
용어를 검색한 후 RedactionAnnotation
을 사용하여 검은색 오버레이를 적용할 수 있습니다.
// PDF를 로드하고 텍스트를 검색하세요.
Document pdfDocument = new Document("sample.pdf");
// \"존 도\"를 검색하세요.
TextFragmentAbsorber absorber = new TextFragmentAbsorber("John Doe");
pdfDocument.Pages.Accept(absorber);
// 발견된 조각을 반복하면서 삭제합니다.
foreach (TextFragment fragment in absorber.TextFragments)
{
// 위치와 치수 가져오기
Aspose.Pdf.Rectangle rect = new Aspose.Pdf.Rectangle(
fragment.Position.XIndent,
fragment.Position.YIndent,
fragment.Position.XIndent + fragment.Rectangle.Width,
fragment.Position.YIndent + fragment.Rectangle.Height
);
// Create a redaction annotation
RedactionAnnotation redaction = new RedactionAnnotation(fragment.Page, rect)
{
FillColor = Color.Black,
Color = Color.Black
};
// Add and apply redaction
fragment.Page.Annotations.Add(redaction);
redaction.Redact();
}
// 수정된 문서를 저장하세요.
pdfDocument.Save("SearchAndRedact.pdf");
What Happens
- 대상 텍스트 ("John Doe")가 발견되어 검은 상자로 덮여 있습니다.
- 이것은 단순히 시각적인 것이 아니라, PDF 레이어에서 내용을 제거하여 파일에서 복구할 수 없게 만듭니다.
무료 라이센스 받기
이제 Aspose.PDF for .NET을 사용하여 PDF에서 텍스트를 검색, 추출, 강조 표시 및 삭제하는 방법을 배웠으므로 그 지식을 실제로 적용할 때입니다.
직접 시도해 보세요: 무료 임시 라이센스를 다운로드하고 나만의 스마트 PDF 도구를 구축하기 시작하세요.
PDF에서 검색: 무료 리소스
PDF에서 텍스트 검색뿐만 아니라 더 멀리 나아가고 싶으신가요? 이러한 무료 개발자 친화적인 리소스를 통해 Aspose.PDF for .NET의 전체 기능을 탐색해 보세요:
개발자 안내서 PDF 파일을 프로그래밍 방식으로 생성, 수정, 변환 및 보호하는 방법을 배우십시오. Aspose.PDF for .NET Documentation
무료 온라인 도구 브라우저에서 직접 PDF 파일을 변환, 병합, 분할 및 편집하세요. Aspose Free PDF Tools
API 참조 Aspose.PDF for .NET에서 사용할 수 있는 클래스, 속성 및 메서드에 대해 자세히 알아보아 개발을 가속화하십시오. Aspose.PDF API Reference
지원 포럼 질문을 하거나 문제를 보고하고 Aspose 전문가에게 직접 답변을 받아보세요. Aspose Support Forum
이 리소스는 무료로 제공되며 PDF 개발 여정을 최대한 활용하는 데 도움이 됩니다.
결론
PDF 파일에서 텍스트를 검색하는 것은 데이터 추출, 콘텐츠 감사 또는 파일을 삭제할 준비를 하든 많은 문서 기반 애플리케이션에서 중요한 기능입니다. Aspose.PDF for .NET을 사용하면 키워드 검색을 쉽게 수행하고, 정규 표현식을 사용하며, 결과를 강조 표시하고, 심지어 민감한 정보를 정밀하게 삭제할 수 있습니다. Aspose.PDF는 복잡한 PDF 작업을 간소화하는 개발자 친화적인 API를 제공하여 시간 절약은 물론 강력한 자동화를 가능하게 합니다.
질문이 있거나 추가 지원이 필요하시면 무료 지원 포럼 에 언제든지 문의해 주시기 바랍니다.