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
| Felder | Kontrakt |
|---|---|
PageWidthPoints, PageHeightPoints | Positive physische Papierabmessungen in Punkten, Standard A4 |
MarginLeftPoints, MarginTopPoints, MarginRightPoints, MarginBottomPoints | Nichtnegative Margen, die ein positives druckbares Rechteck übrig lassen, Standard 36 Punkte |
Landscape, CenterHorizontally, CenterVertically | Landscape tauscht die Hochformat-Abmessungen; Zentrierung gilt für jeden Seitenkörper und seine wiederholten Titel |
ScalePercent | 10 bis 400, Standard 100; greift, wenn keine Anpassungsdimension positiv ist |
FitToPagesWide, FitToPagesTall | Nichtnegative Seitenlimits, null für eine unbeschränkte Achse; positive Grenzen finden eine machbare Skalierung zwischen 10% und 100% |
TitleFirstRow, TitleLastRow, TitleFirstColumn, TitleLastColumn | Vollständige nullbasierte inklusive Titelbereiche oder -1 an beiden Endpunkten, um diese Achse zu deaktivieren |
RowBreaks, ColumnBreaks | TXLSPortablePrintBreaks-Arrays mit strikt aufsteigenden eindeutigen nullbasierten Positionen, an denen eine neue Seite beginnt; die Arbeitsmappen-Adaption sortiert abgekoppelte Metadaten, ohne das Blatt zu bearbeiten |
Order | TXLSPortablePrintOrder: xppoDownThenOver oder xppoOverThenDown |
MaxPages | Positives Gesamtseitenlimit, Standard 256 und Maximum 100.000 |
MaxPlanBytes | Arbeitsspeicher, abgekoppelte Snapshot-Payload und Seiten-Records teilen sich dieses positive Speicherbudget, Standard 64 MiB und Maximum 1 GiB |
MaxPlanningSteps | Positives 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