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.OverflowPolicydopReject、dopClip 或 dopScaleDown
Options.HorizontalAlignmentdhaLeft、dhaCenter 或 dhaRight
Options.VerticalAlignmentdvaTop、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