콘텐츠 작업
콘텐츠 작업
PDF 페이지는 콘텐츠 스트림에 저장된 연산자 시퀀스로 렌더링됩니다.
Aspose.PDF FOSS for .NET은 각 Page에서 이러한 연산자를 OperatorCollection을 통해 노출하고, 새로운 콘텐츠를 프로그래밍 방식으로 구성하기 위해 ContentStreamBuilder을 제공합니다.
콘텐츠 스트림 연산자 읽기
모든 Page은 Contents 속성을 가지고 있으며, 이는 OperatorCollection을 반환합니다. 각 연산자를 검사하려면 이를 반복하십시오.
using var doc = Document.Open(pdfBytes);
var page = doc.Pages[1];
foreach (var op in page.Contents)
{
Console.WriteLine(op.ToString());
}콘텐츠 스트림 구축
ContentStreamBuilder은 그래픽 상태 관리, 경로 구성, 텍스트 출력 및 색상 설정을 포함한 콘텐츠 스트림 연산자 시퀀스를 구성하기 위한 유창한 API를 제공합니다.
var builder = new ContentStreamBuilder();
builder.SaveState();
builder.SetFillColor(1.0, 0.0, 0.0); // Red fill
builder.SetMatrix(1, 0, 0, 1, 72, 700); // Translate
// ... add drawing or text operators
builder.RestoreState();그래픽 상태
GraphicsState는 연산자가 실행되는 동안 현재 변환 행렬, 텍스트 상태 및 색상 값을 추적합니다. 주요 연산:
var gs = new GraphicsState();
gs.Save();
gs.ConcatMatrix(new Matrix(1, 0, 0, 1, 100, 200));
gs.Restore();색 연산자
SetColor와 SetColorStroke는 각각 채우기 색상과 스트로크 색상을 설정합니다. 이들은 RGB, CMYK 또는 그레이스케일 구성 요소를 허용합니다.
// RGB fill color (blue)
var fill = new SetColor(0, 0, 1);
// RGB stroke color (red)
var stroke = new SetColorStroke(1, 0, 0);텍스트 연산자
ShowText는 그래픽 상태의 현재 글꼴 및 크기를 사용하여 현재 텍스트 위치에 텍스트 문자열을 렌더링합니다.
var textOp = new ShowText("Hello, PDF!");SetTextMatrix 텍스트 공간에 대한 변환 행렬을 정의하여 텍스트를 배치합니다.
확장 그래픽 상태
ExtGState은(는) 채우기 및 스트로크 알파(투명도)와 블렌드 모드와 같은 고급 렌더링 속성을 제어합니다.
팁 및 모범 사례
- 항상
SaveState/RestoreState(또는q/Q연산자)를 짝지어 그래픽 상태 스택이 손상되는 것을 방지하십시오. - 새 콘텐츠에는 연산자 객체를 수동으로 구성하는 대신
ContentStreamBuilder를 사용하십시오. - 수정하기 전에
OperatorCollection를 읽기 전용으로 검사하십시오 — 예상치 못한 연산자 시퀀스가 렌더링 문제를 일으킬 수 있습니다. - 색상 연산자는 현재 색상 공간(RGB, CMYK, 또는 grayscale)과 일치해야 합니다.
- 패턴 및 ICC 기반 색상 공간에는
SetAdvancedColor를 사용하십시오.
일반적인 문제
| Issue | Cause | Fix |
|---|---|---|
| 연산자를 추가한 후 텍스트가 보이지 않음 | 텍스트 상태에 폰트가 설정되지 않음 | SetFont 연산자를 ShowText 앞에 추가하십시오 |
| 색상이 잘못 표시됨 | 색상 공간 불일치 (RGB와 CMYK) | 활성 색상 공간에 맞는 연산자를 사용하십시오 |
| 그래픽 상태 스택 오버플로우 | Save / Restore 쌍이 균형이 맞지 않음 | 각 SaveState에 대응되는 RestoreState가 있는지 확인하십시오 |
| 콘텐츠가 잘못된 위치에 표시됨 | 행렬 변환이 없거나 잘못됨 | SetMatrix 또는 ConcatMatrix 값을 확인하십시오 |
자주 묻는 질문
PDF 콘텐츠 스트림이란 무엇입니까?
콘텐츠 스트림은 페이지를 렌더링하는 방법을 설명하는 연산자들의 시퀀스로—경로 그리기, 텍스트 배치, 색상 설정 및 그래픽 상태 관리.
기존 페이지에 새 콘텐츠를 추가할 수 있나요?
예. page.Contents에 접근하고 새 연산자를 추가하거나ContentStreamBuilder를 사용하여 시퀀스를 구성하고 추가합니다.
텍스트를 투명하게 만들려면 어떻게 해야 하나요?
ExtGState를 사용하여 채우기 알파(ca)를 0(완전 투명)에서 1(완전 불투명) 사이의 값으로 설정합니다.
API 참조 요약
| Class / Method | Description |
|---|---|
OperatorCollection | 페이지의 콘텐츠 스트림 연산자 시퀀스 |
ContentStreamBuilder | 연산자 시퀀스를 구성하기 위한 유창한 빌더 |
ContentStreamBuilder.SaveState | 현재 그래픽 상태를 스택에 푸시 |
ContentStreamBuilder.RestoreState | 스택에서 그래픽 상태를 팝 |
ContentStreamBuilder.SetFillColor | 현재 색상 공간에서 채우기 색상을 설정 |
ContentStreamBuilder.SetMatrix | 좌표 변환 적용 |
GraphicsState | 변환 행렬, 색상 및 텍스트 상태를 추적 |
SetColor | 비스트로크(채우기) 색상을 설정하는 연산자 |
SetColorStroke | 스트로크 색상을 설정하는 연산자 |
SetAdvancedColor | 패턴 / ICC 기반 색상 공간을 위한 연산자 |
ShowText | 텍스트 문자열을 렌더링하는 연산자 |
SetTextMatrix | 행렬을 통해 텍스트 위치를 지정하는 연산자 |
ExtGState | 확장 그래픽 상태(알파, 블렌드 모드) |