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การแบ่งปกติ การสำรอง keep-together แบบครั้งเดียว หรือการวางแบบสมบูรณ์อย่างเคร่งครัด
Options.MinimumSlotHeightความสูงช่องที่ไม่ติดลบซึ่งต้องมีก่อนเริ่มการโคลนและประกอบคอมโพเนนต์
Options.MinimumFollowingHeightความสูงที่ไม่ติดลบซึ่งสงวนไว้หลังส่วนย่อยสุดท้ายที่คลี่คลายแล้ว สำหรับคอมโพเนนต์ถัดไป

ผลการวางตำแหน่ง

PageNumber, CompositionIndexหน้าที่คอมมิตและหมายเลขการประกอบสำเร็จแบบเริ่มนับจาก 1
SourceWidth, SourceHeightสี่เหลี่ยมที่ใช้ตามธรรมชาติซึ่งคอมโพเนนต์คืนก่อนการวาง
Left, Top, Width, Heightสี่เหลี่ยมที่ใช้หลังแปลงสุดท้าย ก่อนการคลิปที่ปลายทาง
SlotLeft, SlotTop, SlotWidth, SlotHeightภูมิภาคปลายทางเดิม
Transformเมทริกซ์ affine เชิงตรรกะจากพิกัดโลคัลของคอมโพเนนต์ไปยังพิกัดเอกสารแบบบนลงล่างสุดท้าย
WasClippedTrue เมื่อการคลิปซ่อนส่วนหนึ่งของสี่เหลี่ยมที่ใช้หลังแปลง
WasScaledTrue เมื่อสเกลตามสัดส่วนน้อยกว่า 1

หมายเหตุ

dopReject คงหน้าปลายทางและสถานะคอมโพเนนต์ที่คอมมิตไว้ เมื่อสี่เหลี่ยมที่ใช้ตามธรรมชาติเกินมิติใดมิติหนึ่งของช่อง

dopClip

dopScaleDown คงสเกลธรรมชาติและใช้ขอบเขตการคลิปสถานะกราฟิกแบบสมดุลครอบการเรียกใช้ Form XObject Min(1, SlotWidth / SourceWidth, SlotHeight / SourceHeight) เลือก

ContentWidth และคงอัตราส่วนภาพของคอมโพเนนต์ การปรับสเกลไม่ขยายเนื้อหาที่พอดีอยู่แล้ว แคนวาสของ Form XObject เป็นไปตาม ContentHeight และ

MinimumSlotHeight

MinimumFollowingHeight ส่วนการจัดตำแหน่งใช้สี่เหลี่ยมที่ใช้ซึ่งคอมโพเนนต์รายงาน โดยยึดที่พิกัดโลคัลศูนย์ สตรีมเนื้อหาหน้าเป็นเจ้าของการอ้างอิง Form XObject ที่วางไว้ก่อนแฮนเดิลการแคปเจอร์ชั่วคราวถูกปล่อย ช่องที่สั้นกว่า HasMoreContent ส่งกลับ retry โดยไม่โคลนคอมโพเนนต์ ไม่เรียกฟังก์ชันเรียกกลับ และไม่สร้างหน้าชั่วคราว

LastRetryReason ไม่จำกัดส่วนย่อยชั้นกลาง และถูกตรวจเมื่อ LastRequiredSlotHeight เป็น false เท่านั้น การลองใหม่เนื่องจากพื้นที่ไหลจะส่งคืนการวางตำแหน่งที่ว่างเปล่า คงแฟรกเมนต์ที่คอมมิตไว้ก่อนหน้าทั้งหมดเอาไว้ และเปิดเผยเหตุผลพร้อมความสูงที่ต้องการผ่าน

ตัวอย่าง

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