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

PageVorhandene 1-basierte Zielseitennummer
SlotLeft, SlotTopObere linke Position des Zielslots in den aktuellen Dokumenteinheiten
SlotWidth, SlotHeightEndliche positive Größe des Zielslots
Options.ContentWidth, Options.ContentHeightEndliche positive natürliche Leinwand, die über AvailableWidth und AvailableHeight an die Komponente übergeben wird
Options.OverflowPolicydopReject, dopClip oder dopScaleDown
Options.HorizontalAlignmentdhaLeft, dhaCenter oder dhaRight
Options.VerticalAlignmentdvaTop, dvaCenter oder dvaBottom
Options.PaginationPolicyNormales Aufteilen, einmaliger Zusammenhalt-Rückfall oder strikte vollständige Platzierung
Options.MinimumSlotHeightNicht negative Slot-Höhe, die erforderlich ist, bevor Komponentenklonung und Komposition beginnen
Options.MinimumFollowingHeightNicht 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, SourceHeightNatürliches verwendetes Rechteck, das die Komponente vor der Platzierung zurückgibt
Left, Top, Width, HeightEndgültig transformiertes verwendetes Rechteck vor der Zielbeschneidung
SlotLeft, SlotTop, SlotWidth, SlotHeightOriginal-Zielregion
TransformLogische affine Matrix von komponentenlokalen Koordinaten zu den endgültigen Dokumentkoordinaten von oben nach unten
WasClippedTrue, wenn Beschneidung einen Teil des transformierten verwendeten Rechtecks verbirgt
WasScaledTrue, 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_ERROREingabe-, Callback-, Geometrie-, Overflow- oder Platzierungsvalidierung fehlgeschlagen, ohne dass ein Zustand übernommen wurde
PDF_DYNAMIC_COMPONENT_MOREDas Fragment wurde übernommen, und es ist weiterer Inhalt vorhanden
PDF_DYNAMIC_COMPONENT_COMPLETEDas Fragment hat die Sitzung abgeschlossen, oder die Sitzung war bereits vollständig
PDF_DYNAMIC_COMPONENT_RETRYDie Paginierungs- oder Flow-Space-Richtlinie hat den nicht übernommenen Testlauf auf einen anderen Slot verschoben

Siehe auch

TPDFlibDynamicComponentSession, BeginFormXObject, ReleaseCapturedPage, DrawCapturedPage