ComposeNextLayout
頁面版面配置、分頁、Form XObjects
描述
在自然大小畫布上組合有狀態的動態片段,套用溢位、對齊、分頁與流程空間原則,並回報最終放置轉換
語法
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 | 正常分割、單次保持在一起後備,或嚴格完整放置 |
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,對齊則使用元件回報、以局部座標零為錨點的使用矩形
在暫時擷取控制碼釋放之前,頁面內容串流已持有被放置 Form XObject 的參照
短於 MinimumSlotHeight 的槽位會回傳重試,不複製元件、不呼叫其回呼、不建立暫時頁面
MinimumFollowingHeight 不約束中間片段,只在 HasMoreContent 為 false 時檢查
flow-space 重試會傳回空放置、保留所有先前已提交的片段,並透過 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