ComposeNextLayout
페이지 레이아웃, 페이지 매김, 폼 XObject
설명
내추럴 크기 캔버스에서 상태를 가진 동적 조각 하나를 컴포지션하고 오버플로, 정렬, 페이지 매김, 흐름 공간 정책을 적용한 뒤 최종 배치 변환을 보고합니다
구문
Function TPDFlibDynamicComponentSession.ComposeNextLayout(
Page: Integer; SlotLeft, SlotTop, SlotWidth, SlotHeight: Double;
Const Options: TPDFlibDynamicLayoutOptions;
Out Placement: TPDFlibDynamicPagePlacement): Integer;
매개변수
Page | 기존 1 기반 대상 페이지 번호 |
|---|---|
SlotLeft, SlotTop | 현재 문서 단위의 왼쪽 위 대상 슬롯 위치 |
SlotWidth, SlotHeight | 유한한 양수 대상 슬롯 크기 |
Options.ContentWidth, Options.ContentHeight | AvailableWidth와 AvailableHeight를 통해 컴포넌트에 전달되는 유한한 양수 내추럴 캔버스 |
Options.OverflowPolicy | dopReject, dopClip 또는 dopScaleDown |
Options.HorizontalAlignment | dhaLeft, dhaCenter 또는 dhaRight |
Options.VerticalAlignment | dvaTop, dvaCenter 또는 dvaBottom |
Options.PaginationPolicy | 일반 분할, 일회성 keep-together 폴백 또는 엄격한 완전 배치 |
Options.MinimumSlotHeight | 컴포넌트 클론과 컴포지션이 시작되기 전에 필요한 음수가 아닌 슬롯 높이 |
Options.MinimumFollowingHeight | 최종 확정된 조각 뒤에 다음 컴포넌트를 위해 확보되는 음수가 아닌 높이 |
배치 결과
PageNumber, CompositionIndex | 커밋된 페이지와 1 기반 성공 컴포지션 번호 |
|---|---|
SourceWidth, SourceHeight | 배치 전에 컴포넌트가 반환한 내추럴 사용 사각형 |
Left, Top, Width, Height | 대상 클리핑 전의 최종 변환된 사용 사각형 |
SlotLeft, SlotTop, SlotWidth, SlotHeight | 원래 대상 영역 |
Transform | 컴포넌트 로컬 좌표에서 최종 위에서 아래 방향 문서 좌표로 가는 논리적 어파인 행렬 |
WasClipped | 클리핑이 변환된 사용 사각형의 일부를 가릴 때 True |
WasScaled | 비례 배율이 1 미만일 때 True |
비고
dopReject는 자연 사용 사각형이 슬롯 치수 중 하나를 넘을 때 대상 페이지와 커밋된 컴포넌트 상태를 보존합니다
dopClip은 자연 스케일을 유지하고 Form XObject 호출 주위에 균형 잡힌 그래픽 상태 클리핑 범위를 사용합니다
dopScaleDown은 Min(1, SlotWidth / SourceWidth, SlotHeight / SourceHeight)을 선택하고 컴포넌트 가로세로 비를 유지합니다
스케일링은 이미 들어가는 콘텐츠를 확대하지 않습니다
Form XObject 캔버스는 ContentWidth와 ContentHeight를 따르고, 정렬은 로컬 좌표 0에 고정된 컴포넌트 보고 사용 사각형을 사용합니다
임시 캡처 핸들이 해제되기 전에 페이지 콘텐츠 스트림이 배치된 Form XObject 참조를 소유합니다
MinimumSlotHeight보다 짧은 슬롯은 컴포넌트를 클론하지 않고, 콜백을 호출하지 않고, 임시 페이지를 만들지 않고 재시도를 반환합니다
MinimumFollowingHeight는 중간 프래그먼트를 제약하지 않으며 HasMoreContent가 false일 때만 검사됩니다
흐름 공간 재시도는 빈 배치를 반환하고, 이전에 커밋된 프래그먼트를 모두 보존하며, 이유와 필요한 높이를 LastRetryReason과 LastRequiredSlotHeight로 노출합니다
예제
Options := TPDFlibDynamicComponentSession.CreateLayoutOptions(
640, 360, dopScaleDown, dhaLeft, dvaTop, dppAllowSplit, 72, 24);
Status := Session.ComposeNextLayout(
PageNumber, 36, 72, 540, 240, Options, Placement);
if Status <> PDF_DYNAMIC_COMPONENT_ERROR then
begin
FinalScale := Placement.Transform.M11;
FinalLeft := Placement.Left;
FinalTop := Placement.Top;
end;
반환 값
PDF_DYNAMIC_COMPONENT_ERROR | 입력, 콜백, 기하 구조, 오버플로 또는 배치 검증이 실패하여 상태가 커밋되지 않았습니다 |
|---|---|
PDF_DYNAMIC_COMPONENT_MORE | 프래그먼트가 커밋되었으며 남은 콘텐츠가 더 있습니다 |
PDF_DYNAMIC_COMPONENT_COMPLETE | 프래그먼트가 세션을 완료했거나 세션이 이미 완료 상태였습니다 |
PDF_DYNAMIC_COMPONENT_RETRY | 페이지 매김 또는 플로우 공간 정책이 커밋되지 않은 시행을 다른 슬롯으로 연기했습니다 |
참고 항목
TPDFlibDynamicComponentSession, BeginFormXObject, ReleaseCapturedPage, DrawCapturedPage