문서 관리

문서 관리

Document은 .NET용 Aspose.PDF FOSS의 루트 객체이며,
전체 PDF 파일을 나타내고 페이지, 메타데이터, 양식 필드 및 모든
다른 PDF 구조에 접근할 수 있습니다. 기존 파일은 Document.Open으로 열고 새
파일은 Document 생성자를 사용하여 만들 수 있습니다.


문서 열기 및 만들기

// Open from a byte array
using var doc = Document.Open(File.ReadAllBytes("input.pdf"));

// Open from a file path
using var doc2 = new Document("input.pdf");

// Create a new empty document
using var newDoc = new Document();
newDoc.Pages.Add();
newDoc.Save("new.pdf");

페이지 작업

PageCollection은(는) 문서의 페이지를 관리합니다. 1부터 시작하는 인덱스로 페이지에 접근하고, 새 페이지를 추가하거나 기존 페이지를 제거할 수 있습니다.

using var doc = Document.Open(pdfBytes);

// Access first page
var page = doc.Pages[1];

// Add a blank page
var newPage = doc.Pages.Add();

// Get page count
int count = doc.Pages.Count;

페이지 기하학

각 페이지는 여러 개의 경계 상자를 정의합니다. Page의 설정자 메서드를 사용하여 이를 조정하십시오.

var page = doc.Pages[1];
page.SetMediaBox(new Rectangle(0, 0, 612, 792));
page.SetCropBox(new Rectangle(36, 36, 576, 756));
page.SetRotation(90);

문서 저장

파일 경로, 스트림 또는 바이트 배열에 저장합니다.

// Save to file
doc.Save("output.pdf");

// Save to stream
using var ms = new MemoryStream();
doc.Save(ms);

파일 첨부

FileSpecification는 PDF의 임베디드 파일 첨부를 나타냅니다.

var spec = new FileSpecification("data.csv", "Embedded data file");
doc.EmbeddedFiles.Add(spec);

이미지 스탬프

ImageStamp 지정된 위치에 페이지에 래스터 이미지를 오버레이합니다.

var stamp = new ImageStamp("logo.png");
stamp.Put(doc.Pages[1]);
doc.Save("stamped.pdf");

연산자 컬렉션

OperatorCollection는 각 페이지에서 원시 콘텐츠 스트림 연산자를 보유합니다. 저수준 콘텐츠 검사 또는 조작에 사용하십시오.

var ops = doc.Pages[1].Contents;
foreach (var op in ops)
{
    // Inspect each operator
}

팁 및 모범 사례

  • 파일 핸들을 즉시 해제하려면 Documentusing 문으로 감싸세요.
  • 파일 잠금 문제를 피하기 위해 인메모리 워크플로에 Document.Open(byte[])를 사용하세요.
  • 올바른 좌표 공간을 보장하려면 콘텐츠를 추가하기 전에 페이지 박스(MediaBox, CropBox)를 수정하세요.
  • 모든 수정이 끝난 후에 Save를 한 번만 호출하세요 — 반복 저장은 느리지만 안전합니다.
  • 전체 페이지에 걸쳐 주석을 일괄 처리하려면 PageCollection.Accept(AnnotationSelector)를 사용하세요.

일반적인 문제

IssueCauseFix
Document.Open이(가) 유효한 PDF에서 예외 발생파일이 비밀번호로 암호화됨생성자에 password 매개변수를 제공
구성을 한 후 페이지 수가 0임Document()이 비어 있음doc.Pages.Add()을 호출하여 빈 페이지를 추가
저장된 파일이 예상보다 큼이미지 또는 글꼴이 여러 번 포함됨최적화를 사용 (Conversion and Optimization 가이드 참조)
Pages[0]이(가) 인덱스 오류를 발생페이지 번호는 0이 아니라 1부터 시작첫 페이지에 Pages[1] 사용

자주 묻는 질문

두 개의 PDF 문서를 병합하려면 어떻게 해야 하나요?

Facades API의 PdfFileEditor.Concatenate를 사용하거나, PageCollection를 사용하여 한 문서에서 다른 문서로 페이지를 수동으로 복사하십시오.

URL 또는 스트림에서 PDF를 열 수 있나요?

예. URL 내용을 먼저 byte[]에 읽은 다음, Document.Open(byte[])에 전달하십시오.

페이지를 삭제하려면 어떻게 해야 하나요?

doc.Pages.Delete(pageNumber)를 호출하고, pageNumber은 1 기반입니다.

Document는 스레드 안전합니까?

아니요. 각 스레드는 자체 Document 인스턴스를 사용해야 합니다.


API 참조 요약

Class / MethodDescription
Document루트 PDF 객체; 페이지, 메타데이터 및 양식 필드를 보유함
Document.Open바이트 배열에서 PDF를 열기 위한 정적 팩터리
Document.Save문서를 파일 또는 스트림에 직렬화
Page콘텐츠, 주석 및 기하학이 포함된 단일 PDF 페이지
Page.SetMediaBox페이지 미디어 박스 정의
Page.SetCropBox보이는 잘라내기 영역 정의
Page.SetRotation페이지를 0, 90, 180, 또는 270도 회전
PageCollection문서 내 페이지의 순서가 지정된 컬렉션
PageCollection.Add빈 페이지 추가
OperatorCollection페이지에 대한 원시 콘텐츠 스트림 연산자
FileSpecification임베디드 파일 첨부 설명자
ImageStamp페이지용 이미지 오버레이 스탬프
XFormCollection문서 내 재사용 가능한 폼 XObject

참조

 한국어