ComposeNextLayout
Seitenlayout, Paginierung, Form XObjects
Beschreibung
Komponiert ein zustandsbehaftetes dynamisches Fragment auf einer Leinwand natürlicher Größe, wendet Überlauf-, Ausrichtungs-, Paginierungs- und Fließraumrichtlinie an und meldet die endgültige Platzierungstransformation
Syntax
Function TPDFlibDynamicComponentSession.ComposeNextLayout(
Page: Integer; SlotLeft, SlotTop, SlotWidth, SlotHeight: Double;
Const Options: TPDFlibDynamicLayoutOptions;
Out Placement: TPDFlibDynamicPagePlacement): Integer;
Parameter
Page | Vorhandene 1-basierte Zielseitennummer |
|---|---|
SlotLeft, SlotTop | Obere linke Position des Zielslots in den aktuellen Dokumenteinheiten |
SlotWidth, SlotHeight | Endliche positive Größe des Zielslots |
Options.ContentWidth, Options.ContentHeight | Endliche positive natürliche Leinwand, die über AvailableWidth und AvailableHeight an die Komponente übergeben wird |
Options.OverflowPolicy | dopReject, dopClip oder dopScaleDown |
Options.HorizontalAlignment | dhaLeft, dhaCenter oder dhaRight |
Options.VerticalAlignment | dvaTop, dvaCenter oder dvaBottom |
Options.PaginationPolicy | Normales Aufteilen, einmaliger Zusammenhalt-Rückfall oder strikte vollständige Platzierung |
Options.MinimumSlotHeight | Nicht negative Slot-Höhe, die erforderlich ist, bevor Komponentenklonung und Komposition beginnen |
Options.MinimumFollowingHeight | Nicht negative Höhe, die nach einem endgültig aufgelösten Fragment für die nächste Komponente reserviert wird |
Platzierungsergebnis
PageNumber, CompositionIndex | Übernommene Seite und 1-basierte erfolgreiche Kompositionsnummer |
|---|---|
SourceWidth, SourceHeight | Natürliches verwendetes Rechteck, das die Komponente vor der Platzierung zurückgibt |
Left, Top, Width, Height | Endgültig transformiertes verwendetes Rechteck vor der Zielbeschneidung |
SlotLeft, SlotTop, SlotWidth, SlotHeight | Original-Zielregion |
Transform | Logische affine Matrix von komponentenlokalen Koordinaten zu den endgültigen Dokumentkoordinaten von oben nach unten |
WasClipped | True, wenn Beschneidung einen Teil des transformierten verwendeten Rechtecks verbirgt |
WasScaled | True, wenn der proportionale Maßstab kleiner als 1 ist |
Anmerkungen
dopReject erhält die Zielseite und den übernommenen Komponentenzustand, wenn das natürliche verwendete Rechteck eine der Slot-Abmessungen überschreitet
dopClip
dopScaleDown wählt Min(1, SlotWidth / SourceWidth, SlotHeight / SourceHeight) und bewahrt das Seitenverhältnis der Komponente
Die Skalierung vergrößert Inhalt, der bereits hineinpasst, nie
Die Form-XObject-Leinwand folgt ContentWidth und ContentHeight, während die Ausrichtung das von der Komponente gemeldete verwendete Rechteck nutzt, verankert bei lokaler Koordinate null
Der Seiteninhaltstream übernimmt die Platzierung des Form-XObject-Verweises, bevor das temporäre Aufnahme-Handle freigegeben wird
Ein Slot kürzer als MinimumSlotHeight gibt Retry zurück, ohne die Komponente zu klonen, ihren Callback aufzurufen oder eine temporäre Seite zu erzeugen
MinimumFollowingHeight, während die Ausrichtung das von der Komponente gemeldete, bei der lokalen Koordinate null verankerte verwendete Rechteck nutzt
Der Seiteninhaltsstrom besitzt die platzierte Form-XObject-Referenz, bevor das temporäre Erfassungs-Handle freigegeben wird
Ein Slot, der kürzer als HasMoreContent ist, gibt Retry zurück, ohne die Komponente zu klonen, ihren Callback aufzurufen oder eine temporäre Seite zu erstellen
LastRetryReason beschränkt keine Zwischenfragmente und wird nur geprüft, wenn LastRequiredSlotHeight false ist
Ein Flow-Space-Retry liefert eine leere Platzierung zurück, bewahrt alle zuvor übernommenen Fragmente und macht seinen Grund und die erforderliche Höhe über
Beispiel
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;
Rückgabewerte
PDF_DYNAMIC_COMPONENT_ERROR | Eingabe-, Callback-, Geometrie-, Overflow- oder Platzierungsvalidierung fehlgeschlagen, ohne dass ein Zustand übernommen wurde |
|---|---|
PDF_DYNAMIC_COMPONENT_MORE | Das Fragment wurde übernommen, und es ist weiterer Inhalt vorhanden |
PDF_DYNAMIC_COMPONENT_COMPLETE | Das Fragment hat die Sitzung abgeschlossen, oder die Sitzung war bereits vollständig |
PDF_DYNAMIC_COMPONENT_RETRY | Die Paginierungs- oder Flow-Space-Richtlinie hat den nicht übernommenen Testlauf auf einen anderen Slot verschoben |
Siehe auch
TPDFlibDynamicComponentSession, BeginFormXObject, ReleaseCapturedPage, DrawCapturedPage