ComposeNextLayout
Διάταξη σελίδας, σελιδοποίηση, Form XObjects
Περιγραφή
Συνθέτει ένα καταστασιακό δυναμικό τμήμα σε καμβά φυσικού μεγέθους, εφαρμόζει πολιτική υπερχείλισης, στοίχισης, σελιδοποίησης και χώρου ροής και αναφέρει τον τελικό μετασχηματισμό τοποθέτησης
Σύνταξη
Function TPDFlibDynamicComponentSession.ComposeNextLayout(
Page: Integer; SlotLeft, SlotTop, SlotWidth, SlotHeight: Double;
Const Options: TPDFlibDynamicLayoutOptions;
Out Placement: TPDFlibDynamicPagePlacement): Integer;
Παράμετροι
Page | Υπάρχων αριθμός σελίδας προορισμού με βάση τη μονάδα |
|---|---|
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 | Δεσμευμένη σελίδα και αριθμός επιτυχούς σύνθεσης με βάση τη μονάδα |
|---|---|
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 χωρίς κλωνοποίηση του στοιχείου, κλήση του callback του ή δημιουργία προσωρινού σελίδας
Το
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 | Η επικύρωση εισόδου, callback, γεωμετρίας, υπερχείλισης ή τοποθέτησης απέτυχε χωρίς δέσμευση κατάστασης |
|---|---|
PDF_DYNAMIC_COMPONENT_MORE | Το τμήμα δεσμεύτηκε και απομένει περισσότερο περιεχόμενο |
PDF_DYNAMIC_COMPONENT_COMPLETE | Το τμήμα ολοκλήρωσε τη συνεδρία ή η συνεδρία ήταν ήδη ολοκληρωμένη |
PDF_DYNAMIC_COMPONENT_RETRY | Η σελιδοποίηση ή η πολιτική χώρου ροής ανέβαλε τη μη δεσμευμένη δοκιμή σε άλλο slot |
Δείτε επίσης
TPDFlibDynamicComponentSession, BeginFormXObject, ReleaseCapturedPage, DrawCapturedPage