핵심 PDF 문서 관리는 거의 모든 PDF 워크플로우에서 나타나는 작업을 포함합니다: 문서를 열거나 생성하고, 페이지와 해당 콘텐츠에 접근하며, 주석을 읽고 쓰고, 텍스트를 추출하고, 인터랙티브 액션을 처리합니다. Aspose.PDF FOSS for .NET은 .NET 8+ API를 제공하며, Document 및 Page 유형을 중심으로 하는 일관된 객체 모델을 통해 이러한 모든 작업을 처리합니다.
문서 수명 주기: 생성, 열기, 저장
모든 워크플로는 새 문서를 만들거나 기존 문서를 로드하는 것으로 시작합니다. Document.Create()은 새롭고 빈 Document 인스턴스를 반환합니다. Document.Open(data)은 byte[] 또는 Stream을 받아 PDF 구조를 구문 분석합니다:
using var doc = Document.Create();
doc.Pages.Add();
var page = doc.Pages[1];
var action = PdfAction.CreateUri("https://aspose.com");
page.Annotations.AddLinkAnnotation(new Rectangle(50, 700, 200, 720), action);
using var ms = new MemoryStream();
doc.Save(ms);
ms.Position = 0;
using var doc2 = Document.Open(ms.ToArray());
var annot = (LinkAnnotation)doc2.Pages[1].Annotations[1];
Console.WriteLine(annot.Uri); // https://aspose.com
이 스니펫은 최소 PDF를 열고, 1페이지에 링크 주석을 추가한 다음 MemoryStream에 저장하며, 다시 로드한 후 주석이 보존되는지 확인합니다. Document.Save(Stream) 오버로드는 전체 업데이트된 구조를 기록하고; Document.ToArray() 은 바이트를 직접 반환합니다.
페이지 액세스 및 페이지 컬렉션
페이지는 1 기반 정수 인덱스를 사용하여 Pages 속성을 통해 액세스합니다: doc.Pages[1]는 첫 번째 페이지를 반환하고, doc.Pages[doc.Pages.Count]는 마지막 페이지를 반환합니다. 각 Page 객체는 다음을 노출합니다:
Annotations— 해당 페이지에 대한AnnotationCollection이며,AddLinkAnnotation및 유형별 기존 주석 열거를 지원합니다.- Content stream operators —
Operators컬렉션을 통한 페이지 그리기 명령에 대한 저수준 액세스.
1 기반 인덱스는 API 전반에 걸쳐 일관됩니다: 주석 조회, GoTo 작업 대상 페이지 인덱스, 그리고 모든 다른 페이지 참조가 동일한 규칙을 사용합니다.
TextFragmentAbsorber를 사용한 텍스트 추출
TextFragmentAbsorber는 PDF 페이지에서 텍스트를 읽기 위한 표준 진입점입니다. 인수 없는 생성자를 사용하여 모든 조각을 추출하거나, 검색 구문을 전달하여 일치하는 텍스트만 필터링하십시오:
using var doc = Document.Open("path/to/document.pdf");
var absorber = new TextFragmentAbsorber("Hello");
absorber.Visit(doc.Pages[1]);
foreach (var fragment in absorber.TextFragments)
{
Console.WriteLine($"Found: {fragment.Text} size={fragment.FontSize}");
}
단일 페이지를 처리하려면 absorber.Visit(page)을 호출하십시오. 결과 TextFragments 컬렉션에는 TextFragment 개체가 포함되어 있으며, 각 개체는 Text(문자열 내용)과 FontSize(렌더링된 포인트 크기)를 노출합니다. 두 번째 오버로드 TextFragmentAbsorber(searchPhrase, isRegex)은 패턴 기반 검색을 위한 정규식 플래그를 허용합니다.
대화형 작업
PdfAction은 모든 표준 PDF 작업 유형에 대한 팩터리 클래스입니다. 네 개의 정적 팩터리 메서드가 가장 일반적인 경우를 다룹니다:
PdfAction.CreateUri(uri)— 사용자의 브라우저에서 URL을 엽니다.PdfAction.CreateGoTo(pageIndex, fitType)— 문서 내 특정 페이지로 이동합니다.PdfAction.CreateJavaScript(script)— PDF 뷰어에서 JavaScript 문자열을 실행합니다.PdfAction.CreateLaunch(filePath)— 외부 파일이나 애플리케이션을 실행합니다.
동작은 주석을 통해 페이지에 연결됩니다. AnnotationCollection.AddLinkAnnotation(rectangle, action)는 지정된 사각형 영역 위에 LinkAnnotation를 배치하고 해당 동작을 연결합니다.
using var doc = Document.Create();
doc.Pages.Add();
var page = doc.Pages[1];
var action = PdfAction.CreateUri("https://example.org");
var annot = page.Annotations.AddLinkAnnotation(new Rectangle(10, 10, 100, 30), action);
Console.WriteLine(page.Annotations.Count); // 1
Console.WriteLine(annot.AnnotationType); // Link
AnnotationType.Link은 주석이 링크 유형으로 생성되었음을 확인합니다. Rectangle 생성자는 PDF 사용자 공간 단위의 left, bottom, right, top 좌표를 받습니다.
문서 메타데이터 및 라이선스
Document 클래스는 IsLicensed(FOSS 빌드에서는 true을 반환함), JavaScript(문서 수준 스크립트를 위한 JavaScriptCollection), 및 DocumentActions을 노출하여 BeforeClosing 및 BeforeSaving와 같은 라이프사이클 이벤트를 처리합니다.
FOSS 패키지는 NuGet을 통해 설치됩니다:
dotnet add package Aspose.Pdf.Foss --version 0.1.0-alpha
라이선스 키가 필요하지 않습니다. MIT license는 라이선스 고지를 유지하는 것을 제외하고 상업용 애플리케이션에서의 사용에 대한 귀속 요구 사항이 없습니다.