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 | การแบ่งปกติ การสำรอง keep-together แบบครั้งเดียว หรือการวางแบบสมบูรณ์อย่างเคร่งครัด |
Options.MinimumSlotHeight | ความสูงช่องที่ไม่ติดลบซึ่งต้องมีก่อนเริ่มการโคลนและประกอบคอมโพเนนต์ |
Options.MinimumFollowingHeight | ความสูงที่ไม่ติดลบซึ่งสงวนไว้หลังส่วนย่อยสุดท้ายที่คลี่คลายแล้ว สำหรับคอมโพเนนต์ถัดไป |
ผลการวางตำแหน่ง
PageNumber, CompositionIndex | หน้าที่คอมมิตและหมายเลขการประกอบสำเร็จแบบเริ่มนับจาก 1 |
|---|---|
SourceWidth, SourceHeight | สี่เหลี่ยมที่ใช้ตามธรรมชาติซึ่งคอมโพเนนต์คืนก่อนการวาง |
Left, Top, Width, Height | สี่เหลี่ยมที่ใช้หลังแปลงสุดท้าย ก่อนการคลิปที่ปลายทาง |
SlotLeft, SlotTop, SlotWidth, SlotHeight | ภูมิภาคปลายทางเดิม |
Transform | เมทริกซ์ affine เชิงตรรกะจากพิกัดโลคัลของคอมโพเนนต์ไปยังพิกัดเอกสารแบบบนลงล่างสุดท้าย |
WasClipped | True เมื่อการคลิปซ่อนส่วนหนึ่งของสี่เหลี่ยมที่ใช้หลังแปลง |
WasScaled | True เมื่อสเกลตามสัดส่วนน้อยกว่า 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