HotXLS-Dokumentation / API-Referenz

Portable Druckpläne

Trennen Sie logische Paginierung von nativer Ausgabe: lxPortablePrint erzeugt einen unveränderlichen Druckplan aus einem abgekoppelten Render-Snapshot, und lxPortableCairo zeichnet seine Seiten als PDF, SVG oder PNG unter Linux und macOS

Der Planer nutzt physische Punkte und vollständige Zellgrenzen, bewahrt verbundene Bereiche, wiederholt Zeilen- und Spaltentitel und wendet sich nicht überlappende Druckbereiche, manuelle Umbrüche, Ausrichtung, Margen, Zentrierung, Skalierung und Seitenreihenfolge an, ohne die Quellarbeitsmappe zu ändern

Arbeitsmappen-Seiteneinrichtung nutzen

CreateXLSPortableWorkbookPrintPlan in lxPortableWorkbookPrint hat Überladungen für eine geliehene TXLSWorkbook und TXLSXWorkbook; beide akzeptieren SheetIndex, OriginRow, OriginColumn, Snapshot und Defaults

Der Blattindex und der Snapshot-Ursprung sind 1-basiert; der Adapter verlangt einen Snapshot der aktuellen Arbeitsmappen-Generation und ein erfasstes Rechteck, das jeden vollständigen Druckbereich und jeden wiederholten Titelbereich enthält

Die Snapshot-Identität umfasst seine Generation, während der Aufrufer das passende Blatt und den Ursprung liefert; behalten Sie den korrekten Blattkontext beim Transportieren eines Snapshots, weil das Snapshot-Format keine Arbeitsmappen- oder Arbeitsblattidentität codiert

Snapshot := CaptureXLSPortableRenderSnapshot(Owner, 1, 1, 1, 30, 6,
  XLSDefaultPortableRenderLimits, Geometry);
Plan := CreateXLSPortableWorkbookPrintPlan(Workbook, 1, 1, 1,
  Snapshot, XLSDefaultPortablePrintOptions);
Layout := PrepareXLSPortableCairoLayout(Plan, Fonts,
  XLSDefaultPortableCairoOptions);
try
  Files := Layout.Save('/srv/output/report.pdf', xpcfPDF);
  Files := Layout.Save('/srv/output/report.svg', xpcfSVG);
  Files := Layout.Save('/srv/output/report.png', xpcfPNG);
finally
  Layout.Free;
end;

Verwenden Sie den unter direktes natives Arbeitsmappen-Capture beschriebenen expliziten schriftgestützten Geometrie-Provider, wenn Sie unter Linux oder macOS erfassen; die Paginierung selbst braucht kein Cairo, keine Schriftdateien, kein Excel und keinen Druckertreiber

Der Arbeitsmappen-Adapter nimmt eine temporäre Lese-Lease, liest vorhandene Metadaten und liefert abgekoppelte Daten; er übernimmt weder eine rohe Arbeitsmappe über ein besitzendes Interface noch behält er eine Arbeitsmappen-Lease im Ergebnis

Gequotete Blattnamen, escapte Quotes und kommagetrennte Druckbereiche werden nur für das ausgewählte Arbeitsblatt akzeptiert; Referenzen außerhalb des erfassten Rechtecks, fremde Blattreferenzen, unvollständige Titelbereiche und missgebildete Bereiche weisen explizit zurück

Erkannte Papierformate sind Letter, Tabloid, Ledger, Legal, A3, A4, A5, B4 und B5; ein nicht angegebenes Papierformat nutzt Defaults.PageWidthPoints und Defaults.PageHeightPoints, während ein nicht erkanntes explizites Papierformat zurückweist

Kopf- und Fußzeileninhalte, gedruckte Zeilen-/Spaltenköpfe, aktivierte Druck-Gitternetzlinien, Schwarz-Weiß- oder Entwurfserscheinung, Kommentardruck und Fehlerersatz weisen derzeit zurück, weil dieser Adapter diese Einstellungen nicht treu zeichnen kann; Classic-Arbeitsmappen aktivieren Druck-Gitternetzlinien standardmäßig, deaktivieren Sie PageSetup.PrintGridlines also für diesen unterstützten Kontrakt

Skalierungsmodus und native Defaults

TXLSXWorksheet.PageFitToPages wählt den Anpassungsmodus unabhängig von seinen Dimensionen: das Setzen von FitToWidth oder FitToHeight wählt den Anpassungsmodus, und das Setzen von PageScale wählt Prozentskalierung

Der XLSX-Import bewahrt sheetPr/pageSetUpPr/@fitToPage und den OOXML-Default von eins für eine weggelassene Anpassungsdimension; der Export behält explizite Nulldimensionen, und die XLS/XLSX-Konvertierung bewahrt den gewählten Modus

Prozentskalierung ignoriert veraltete Anpassungsdimensionen; der Anpassungsmodus ignoriert eine gespeicherte Prozentskala, und positive Anpassungsdimensionen ignorieren manuelle Umbrüche; null auf beiden Achsen behält manuelle Umbrüche bei 100%-Skalierung, während positive Grenzen übergroßen Inhalt verkleinern, ohne einen kleinen Bereich zu vergrößern

Logische Paginierung hängt von der gelieferten Snapshot-Geometrie ab; Druckertreiber-Metriken und die Excel-PDF-Export-Skalierung können die physische Ausgabe ändern und garantieren keine exakte visuelle Äquivalenz

Einen abgekoppelten Plan direkt bauen

CreateXLSPortablePrintPlan(Snapshot, Areas, Options) akzeptiert nullbasierte inklusive TXLSPortablePrintRanges; ein leeres Areas-Array wählt den gesamten Snapshot, und jeder TXLSPortablePrintRange enthält FirstRow, FirstColumn, LastRow und LastColumn

Starten Sie mit XLSDefaultPortablePrintOptions und setzen Sie dann die Felder von TXLSPortablePrintOptions unten

FelderKontrakt
PageWidthPoints, PageHeightPointsPositive physische Papierabmessungen in Punkten, Standard A4
MarginLeftPoints, MarginTopPoints, MarginRightPoints, MarginBottomPointsNichtnegative Margen, die ein positives druckbares Rechteck übrig lassen, Standard 36 Punkte
Landscape, CenterHorizontally, CenterVerticallyLandscape tauscht die Hochformat-Abmessungen; Zentrierung gilt für jeden Seitenkörper und seine wiederholten Titel
ScalePercent10 bis 400, Standard 100; greift, wenn keine Anpassungsdimension positiv ist
FitToPagesWide, FitToPagesTallNichtnegative Seitenlimits, null für eine unbeschränkte Achse; positive Grenzen finden eine machbare Skalierung zwischen 10% und 100%
TitleFirstRow, TitleLastRow, TitleFirstColumn, TitleLastColumnVollständige nullbasierte inklusive Titelbereiche oder -1 an beiden Endpunkten, um diese Achse zu deaktivieren
RowBreaks, ColumnBreaksTXLSPortablePrintBreaks-Arrays mit strikt aufsteigenden eindeutigen nullbasierten Positionen, an denen eine neue Seite beginnt; die Arbeitsmappen-Adaption sortiert abgekoppelte Metadaten, ohne das Blatt zu bearbeiten
OrderTXLSPortablePrintOrder: xppoDownThenOver oder xppoOverThenDown
MaxPagesPositives Gesamtseitenlimit, Standard 256 und Maximum 100.000
MaxPlanBytesArbeitsspeicher, abgekoppelte Snapshot-Payload und Seiten-Records teilen sich dieses positive Speicherbudget, Standard 64 MiB und Maximum 1 GiB
MaxPlanningStepsPositives begrenztes Planungsarbeitsbudget, Standard 64 Mi Schritte und Maximum 2 Gi Schritte; Überschreiten löst EXLSPortablePrintBudget aus

Geometrie muss endlich sein; versteckte Dimensionen haben Größe null, ein Seitenumbruch darf keine verbundene Zelle spalten, ein Bereich oder Titel darf eine verbundene Zelle nie nur teilweise schneiden, und eine übergroße Zelle oder Verbindung weist zurück, statt stillschweigend abgeschnitten zu werden

Ergebnis inspizieren oder rendern

IXLSPortablePrintPlan.Snapshot besitzt einen abgekoppelten unveränderlichen Render-Snapshot, PageCount meldet die logische Seitenanzahl, und nullbasierte Pages[Index] liefern ein TXLSPortablePrintPage mit einem abgekoppelten Kachel-Array

Jede Seite legt AreaIndex, AcrossIndex, DownIndex, ihr nullbasiertes inklusives Body, Scale, PageWidthPoints, PageHeightPoints und Tiles offen

TXLSPortablePrintTiles enthält höchstens vier TXLSPortablePrintTile-Records für die wiederholte Ecke, Titelzeilen, Titelspalten und den Körper; jede Kachel legt unskalierte Quelle SourceLeft, SourceTop, SourceRight, SourceBottom sowie physisches Ziel DestinationLeft, DestinationTop offen

Die Überladung PrepareXLSPortableCairoLayout(Plan, Fonts, Options) behält abgekoppelte Seiten-Records, beschneidet und skaliert Szeneninhalt für jede Kachel und nutzt die Papierabmessungen und Margen des Plans; Raster-, Schrift-, Shaping- und Zeichenbudgets gelten weiterhin für wiederholte Inhalte

Layout.PageCount entspricht dem Plan; PDF erzeugt eine mehrseitige Datei, während SVG und PNG eine Datei pro logischer Seite erzeugen; die Textzeilen-Inspektion des Layouts behält unskalierte Snapshot-Koordinaten statt seitenweise wiederholter Positionen

Vorhandene Ausgabedateien weisen zurück, und der native Windows-Cairo-Einstiegspunkt bleibt explizit nicht unterstützt; siehe Portable Headless-Ausgabe für Abhängigkeiten, Schriftmapping, Szenen- und Ausgabelimits