Portable Headless-Ausgabe
Verfügbar ab Version 2.384.100 als begrenzte Ausgabepipeline mit expliziten Capture- und Rendering-APIs
Erfassen Sie einen unterstützten Bereich aus einer Classic-XLS- oder XLSX-Arbeitsmappe unter Windows, übertragen Sie seinen unveränderlichen Snapshot und rendern Sie PDF, SVG oder PNG unter Linux oder macOS mit Free Pascal und nativem Cairo
Der Capture-Adapter nutzt die Arbeitsmappen-Engine; Windows-Capture verwendet ihren Standard-Geometriedienst, während natives Linux- und macOS-Capture einen expliziten FreeType/HarfBuzz-Geometriedienst liefern kann, der auf anwendungsgewählten Schriftdateien basiert
Der separate native Consumer akzeptiert lxPortableRender-Szenen über lxPortableCairo, ohne Excel oder eine Desktop-Sitzung; seine Geometrie-API nutzt ebenfalls die bestehenden portablen Arbeitsmappen-View- und Render-Geometrie-Units
Der Consumer akzeptiert eine unveränderliche Szene oder einen Transfer-Stream; Plattformanforderungen für das Laden und Berechnen von Arbeitsmappen sind separat unter Free-Pascal-Unterstützung beschrieben
Einen vorhandenen Arbeitsmappenbereich erfassen
CaptureXLSPortableRenderSnapshot in lxPortableWorkbookCapture akzeptiert ein IXLSWorkbook oder IXLSXWorkbookOwner mit expliziten oder Standard-TXLSPortableRenderLimits; zwei zusätzliche Überladungen akzeptieren explizite Limits gefolgt von einem IXLSRenderGeometry-Provider, der auf die Capture-View beschränkt ist
SheetIndex und inklusive Row1, Col1, Row2, Col2 sind 1-basiert; der entstehende Snapshot speichert nullbasierte Positionen relativ zum erfassten Rechteck
program CaptureRectangle;
{$APPTYPE CONSOLE}
uses SysUtils, Classes, lxHandleX, lxPortableRender,
lxPortableWorkbookCapture;
var
Workbook: TXLSXWorkbook;
Owner: IXLSXWorkbookOwner;
Snapshot: IXLSPortableRenderSnapshot;
Stream: TFileStream;
begin
Workbook := TXLSXWorkbook.Create;
Owner := Workbook;
if Workbook.Open('report.xlsx') <> 1 then
raise Exception.Create('Cannot open report.xlsx');
Snapshot := CaptureXLSPortableRenderSnapshot(Owner, 1, 1, 1, 30, 6);
Stream := TFileStream.Create('report.hxrs', fmCreate);
try
SaveXLSPortableRenderSnapshot(Snapshot, Stream,
XLSDefaultPortableRenderLimits);
finally
Stream.Free;
end;
Owner := nil;
end.
Halten Sie das Owner-Interface am Leben, solange Sie das Arbeitsmappenobjekt nutzen; geben Sie das Interface frei, statt eine interface-besessene Arbeitsmappe manuell freizugeben
Für Classic XLS verwenden Sie TXLSWorkbook und IXLSWorkbook aus lxHandle mit demselben Capture-Aufruf
Capture liest vorhandene Formel-Caches und weist jede Formel im Rechteck ohne Cache zurück; es berechnet nie implizit neu, holt nie externe Daten und registriert nie neue Stile in der Quellarbeitsmappe
Berechnen Sie vor dem Capture explizit neu, wenn Ihre Anwendung frische Formelergebnisse braucht; ein vorhandener Cache wird so gerendert, wie er gespeichert ist, daher zertifiziert Capture nicht seine Aktualität
Die Operation hält eine Lese-View und prüft die Arbeitsmappen-Generation vor der Rückgabe; ihr zurückgegebener Snapshot ist vom Arbeitsmappen-Besitz abgekoppelt und bleibt nach dem Freigeben der Arbeitsmappe nutzbar
Erscheinungsbild und Capture-Grenzen
Der Snapshot enthält formatierten Anzeigetext, physische Abmessungen in Punkten, aufgelöste RGB-Farben, unterstützte Zellenschriften und -ausrichtungen, Füllungen, Rahmen und vollständige verbundene Rechtecke; versteckte Zeilen und Spalten haben Größe null
Unterstütztes Schrift-Erscheinungsbild umfasst fett, kursiv, einfache Unterstreichung und Durchstreichung; unterstütztes Zellen-Erscheinungsbild umfasst Volltonfüllungen, links/mittig/rechts horizontale Ausrichtung, oben/mittig/unten vertikale Ausrichtung, Umbruch, Schrumpfen und Leserichtung von rechts nach links
Dünne, mittlere, dicke, Haar-, doppelte, gepunktete, gestrichelte und mittelgestrichelte Arbeitsmappenrahmen mappen auf die portablen Rahmenstile und Punktbreiten; andere Rahmenstile weisen zurück
Unterstützter Rich Text trägt effektive Run-Schriften, Punktgrößen, RGB-Farben, fett, kursiv, einfache Unterstreichung, Durchstreichung sowie Run-Level-Hoch- oder Tiefstellung; einfache Zellen-Umriss/Schatten/vertikale Schrifteffekte, nicht unterstützte Unterstreichungsstile, Gradient- oder gemusterte Füllungen, diagonale Rahmen, Einzug, Textrotation und nicht unterstützte Ausrichtungen weisen zurück
Ein Capture-Rechteck muss jede verbundene Zelle vollständig enthalten; beschnittene, überlappende oder inkonsistente Verbindungen und inkompatible Stile entlang einer verbundenen Außenkante weisen zurück
Blatthintergründe und nicht unterstützte Blattarten weisen das Capture zurück; unterstützte PNG/JPEG-Bilder und gewöhnliche Rechteck-/Ellipsen-Textformen in beiden Arbeitsmappen-Fassaden werden als geordnete Szenenobjekte erfasst, zusammen mit XLSX-Zellenbildern, Boolean-Checkboxen und dem nachfolgend beschriebenen unterstützten gecachten XLSX-Diagramm-Subset; nicht unterstützte Diagramme, Shape-Presets, WordArt, gruppierte Transforms, schwebende Steuerelemente, Slicer, Timelines und Sparklines weisen zurück, wenn ihre aufgelösten Footprints das Rechteck schneiden
Nicht unterstützter Inhalt mit zuverlässig aufgelöstem Footprint außerhalb des Rechtecks kann neben dem Capture existieren; ein nicht auflösbarer Zeichnungs-Footprint weist zurück, statt potenziell überlappenden Inhalt stillschweigend wegzulassen
Classic-Tabellenstyling, das das Rechteck schneidet, weist zurück; XLSX eingebaute und unterstützte eigene Table-Abschnitte werden in abgekoppeltem Stil-Kontext aufgelöst, mit Abschnitt-großen Streifen und direkten Zellformat-Overrides
Für unterstützte importierte Table-Vollton- oder implizite Differentialfüllungen liefert RGB bgColor den sichtbaren Hintergrund; alleiniges RGB fgColor lässt den geerbten Hintergrund unverändert, und ein Abschnitt mit beiden Farben nutzt seine Hintergrundfarbe
Importierte Table-Abschnitte, die Erscheinungsbild enthalten, das die typisierte Zusammenfassung nicht abbilden kann, weisen zurück, wenn dieser Abschnitt greift, einschließlich Unterstreichung, Zahlenformate, explizit gelöschtes fett/kursiv, Schriftschemata, ein explizites No-Fill-Muster und nicht unterstützte Farbformen; ein nicht verwandter Abschnitt außerhalb des erfassten Rechtecks blockiert das Capture nicht
Unterstützte bedingte Formatierung wird ohne Formelauswertung angewendet: gecachte numerische oder Datumsvergleiche gegen literale numerische Grenzen, literale Boolean- oder numerische Ausdrücke, Text-Enthält/Präfix/Suffix-Regeln, Leeren und Fehler; höherpriores Erscheinungsbild gewinnt pro unterstützter Property, und XLSX StopIfTrue stoppt niederpriorigere passende Regeln
Classic-Textregeln erfordern eine literale String-Nadel und matchen gecachte String-Zellen; XLSX-Textregeln nutzen ihre gespeicherten Textkriterien
Unterstütztes Differential-Erscheinungsbild umfasst aufgelöste Themenfarben mit Tönung und einfache indizierte Farben; importierte automatische Farben, Nicht-Thema-Tönung, eine Differentialfüllung mit Vorder- und Hintergrundfarbe sowie nicht unterstützte Rahmen-, Ausrichtungs-, Durchstreich- oder andere nicht abgebildete Differentialerscheinungen weisen zurück, wenn die passende Regel greift
Bedingte Formeln mit Auswertungsbedarf, Aggregat- oder datumsabhängige Regeln, Farbskalen, Datenbalken und Symbolsätze weisen zurück, wo sie angetroffen werden; die Anzahl überlappender Regeln bedingter Formatierung ist begrenzt
Die Date1904-Konvertierung wählt die anwendbare rohe numerische Formatsektion, bevor der Kalender-Offset angewendet wird; inaktive Kalendersektionen ändern die gewöhnliche numerische Anzeige nicht, und Boolean-Werte bleiben Boolean
Eine gewählte Date1904-Kalendersektion zusammen mit Formatbedingungen oder verstrichene-Zeit-Konstrukten weist zurück; gequotete oder escapte Sektionstrenner weisen ebenfalls zurück, und diese Grenze blockiert eine gewählte gewöhnliche numerische Sektion nicht nur deshalb, weil eine andere Sektion ein Kalenderformat ist
Rich Text und geordnete Zeichnungsszenen
TXLSPortableCell.RichText ist ein Array aus TXLSPortableTextRun-Records mit Text, FontFamily, FontSizePoints, FontStyles, ColorRGB und BaselineShiftPoints; verketteter Run-Text muss exakt dem Zellenanzeigetext entsprechen
XLSX-Runs erben weggelassene Properties von der effektiven erfassten Zellenschrift, einschließlich unterstützter Tabellen- und bedingter Formatierung; explizit gesetzte false-Flags und explizite none/baseline/automatic-Farbwerte überschreiben die Vererbung
Native Shared Strings und Inline-Strings bewahren Run-Grenzen und Leerraum; nicht unterstützte native Font-Kinder, Attribute, Namespaces, Themen-/indizierte Rich-Farben und phonetische Annotationen weisen zurück, statt sichtbares Erscheinungsbild stillschweigend zu verlieren
Classic-Runs lösen ihre gespeicherten BIFF-Font-Indizes zu vollständigen effektiven Run-Schriften auf; phonetische Metadaten und nicht unterstützte Run-Schriften weisen zurück, und Capture behält Arbeitsmappen-Generation und Stil-Pools
Classic-Textformen lesen vorhandene OfficeArt-Properties und TXO-Font-Runs, ohne Zeichnungs-Wrapper zu erzeugen oder die Arbeitsmappe zu ändern; Anker nutzen echte Zeilen-/Spaltenabmessungen und Offsets, unterstützte Volltonfüllungen und Umrisse behalten ihre Farben und Breiten, und eingebettete PNG/JPEG-Bytes werden vor der Übertragung abgekoppelt
Rechtecktext nutzt die nativen 7,2-Punkt-Horizontal- und 3,6-Punkt-Vertikalmargen; Ellipsentext nutzt zusätzlich sein einbeschriebenes Textrechteck und hält gewöhnlichen Text innerhalb des Formenumrisses in beiden Arbeitsmappen-Fassaden
Importierte Classic-Rechteck- und Ellipsen-Container behalten ihren typisierten Text und ihre Formatierung; übersprungene native Shape- oder Gruppenmetadaten ohne aufgelösten Footprint weisen das Capture explizit zurück, während unbekannte Objekt-End-Records, Zeichnungserweiterungen, Rotation, nicht-Vollton-Füllungen und nicht unterstützte Linienstile ein schneidendes Objekt zurückweisen
Importierte XLSX-Zweizellen-Rechteck- und Ellipsen-Anker unterstützen explizite RGB-Volltonfüllungen mit Alpha, Vollton- oder gestrichelte/gepunktete Umrisse, physische Anker-Offsets und einen einzigen gewöhnlichen Rich-Text-Absatz; jeder Run behält seine effektive Schriftfamilie, Punktgröße, Farbe, fett, kursiv, einfache Unterstreichung und Durchstreichung, einschließlich expliziter fett- oder kursiv-Resets
Der importierte Shape-Reader reserviert rohen XML-Scratch-Speicher vor dem Parsen und prüft Item-, Byte- und Textbudgets kooperativ; er behält Arbeitsmappen-Zeichnungsreihenfolge und Lese-Leases, ohne Shape-Modelle oder fehlende Zellen zu erzeugen
Unbekannte native Shape-Properties, Effekte, Themen, Rotationen, gruppierte Transforms, mehrere Absätze und nicht unterstützte Ankerarten weisen explizit zurück; ein aufgelöster nicht unterstützter Footprint außerhalb des Capture-Rechtecks blockiert die angeforderte Region nicht
Run-Level-Hoch- und Tiefstellung nutzen zwei Drittel der Run-Schriftgröße und eine Baselines-Verschiebung von einem Drittel ihrer ursprünglichen Punktgröße; eine Stilgrenze, die einen Unicode-Shaping-Cluster spaltet, oder eine CRLF-Folge, die inkompatible Run-Grenzen kreuzt, weist während des nativen Layouts zurück
TXLSPortableSceneObject trägt ein Kind, punktbezogenes X, Y, Width, Height, ein Beschneidungsrechteck, Füll-/Umrissfarben und Opazität, optionale Pfadpunkte, eine Textzelle oder encodierte Raster-Bytes und Abmessungen
TXLSPortableSceneKind enthält xpskRectangle, xpskEllipse, xpskPolyline, xpskPolygon, xpskText, xpskPNG und xpskJPEG; die Array-Reihenfolge ist die Zeichnungsreihenfolge, spätere Objekte überdecken frühere Objekte
Die zusätzliche CreateXLSPortableRenderSnapshot-Überladung akzeptiert ein TXLSPortableSceneObjects-Array; fragen Sie IXLSPortableRenderSceneSnapshot für nullbasierte Objects und ObjectCount ab, deren Getter abgekoppelte Kopien einschließlich Run-, Punkt- und Raster-Arrays liefern
Zellenbilder und Checkbox-Pfade gehen schwebenden Zeichnungen voraus; schwebende Zeichnungen behalten Arbeitsmappenreihenfolge, physische Anker und Viewport-Beschneidung, und Textformen nutzen die Minor-Theme-Schrift mit 11 Punkten und 7,2-Punkt-Horizontal- sowie 3,6-Punkt-Vertikalmargen
PNG- und JPEG-Bilder werden nach Header-, Pixelgrößen- und Byte-Preflight nativ dekodiert; unterstützte schwebende Bilder behalten Transparenz und Streckgeometrie, während Zellenbilder in die Zelle oder das vollständige verbundene Rechteck eingepasst werden und ihr Seitenverhältnis bewahren
Beschneiden, Rotation, Schatten, Helligkeits-/Gamma-Anpassung, Kachelung, SVG-Begleiter und Live-Kamera-Bindungen bleiben nicht unterstützt; erhaltenes Bild-XML wird gegen das unterstützte Erscheinungsbild validiert, daher weisen versteckte Bilder, unbekannte verschachtelte Metadaten, fremd-namespaced Properties, nicht rechteckige Bildgeometrie und nicht modellierte Transforms nur zurück, wenn ihr Footprint das Capture überlappt
Boolean-Zellen-Checkboxen nutzen einen themenneutralen Vektorrahmen und ein optionales Häkchen, einschließlich effektiver Steuerelemente, die aus Zeilen- und Spaltenformaten geerbt wurden; der angeforderte Zellendurchlauf wird vor der Traversierung begrenzt, andere Steuerelementarten sowie leere oder nicht-Boolean-Checkboxwerte weisen zurück, und unterstützte Zellenszenen unterdrücken skalaren Boolean- oder Bildfehler-Fallbacktext
Eine Checkbox-Standard ist Einfügemetadaten und fabriziert keinen Boolean für eine fehlende Zelle; explizites direktes Zellen-Steuerelement-Löschen maskiert ein geerbtes Steuerelement, während Capture-Lesevorgänge sparse Abwesenheit und die Arbeitsmappen-Generation bewahren
XLSReadPortableImageDimensions validiert ein begrenztes PNG-IHDR oder einen unterstützten Acht-Bit-sequenziellen/progressiven JPEG-Frame und liefert seine deklarierte Breite und Höhe; das Dekodieren bleibt die Verantwortung des Renderers
IXLSPortableSceneCaptureSource.ReadPortableSceneObjects nutzt 1-basierte Arbeitsmappenkoordinaten und punktbezogene Szenenkoordinaten relativ zum Bereich, validiert Bereich und kooperative Limits und liefert verbrauchte Byte-, Text- und Item-Zählungen; HasPortableCellScene identifiziert Zellen, deren skalare Anzeige durch ihre erfasste Szene ersetzt wird
Das native Layout zählt mit CellCount Rasterzellen und LineCount zusätzlich Textszenenobjekte; der Zeilen-CellIndex eines Textobjekts ist CellCount plus seine nullbasierte Sequenz unter den Textszenenobjekten, während GetCellGeometry weiterhin auf Rasterzellen beschränkt bleibt
Skalare Snapshots serialisieren weiterhin als HXRSNP01; Snapshots mit Runs oder Szenenobjekten serialisieren als HXRSNP02, und der Loader akzeptiert beide Versionen mit demselben unveränderlichen Besitz- und Input-Position-Rollback-Kontrakt
Das kombinierte Item-Budget zählt gespeicherte Zellen, Rich-Runs, Szenenobjekte und Pfadpunkte; Bytelimits berücksichtigen gestagte und abgekoppelte Arrays, Text, encodierte Raster-Payloads und begrenzte native Metadateninspektion vor der Allokation
Portabler Snapshot-API
| Symbol | Kontrakt |
|---|---|
EXLSPortableRender | Exception bei ungültigen Snapshot-Daten, nicht unterstütztem Capture-Erscheinungsbild, unavailable nativem Backend, Ressourcenlimits oder Renderfehlern |
TXLSPortableFontStyle, TXLSPortableFontStyles | xpfsBold, xpfsItalic, xpfsUnderline und xpfsStrikeout, als Menge kombiniert |
TXLSPortableHorizontal, TXLSPortableVertical | xphLeft, xphCenter, xphRight sowie xpvTop, xpvCenter, xpvBottom |
TXLSPortableBorderStyle, TXLSPortableBorder | xpbsNone, xpbsSolid, xpbsDashed, xpbsDotted und xpbsDouble; jeder Rahmen trägt Style, WidthPoints und ColorRGB |
TXLSPortableCell | Nullbasierte Row/Column, positive RowSpan/ColumnSpan, Anzeige-Text, FontFamily, FontSizePoints, FontStyles, TextColorRGB, FillColorRGB, HasFill, WrapText, ShrinkToFit, RightToLeft, Horizontal, Vertical und vier LeftBorder/TopBorder/RightBorder/BottomBorder-Records |
TXLSPortableCells, TXLSPortableSizes | Dynamische Arrays gespeicherter Zellen sowie physischer Zeilen-/Spaltengrößen in Punkten |
TXLSPortableRenderLimits | MaxGridCells, MaxStoredCells, MaxBytes und MaxTextCharacters begrenzen Konstruktion, Capture und Serialisierung |
XLSDefaultPortableRenderLimits | Liefert 2000000 Rasterzellen, 2000000 gespeicherte Zellen, 67108864 Bytes und 16777216 UTF-16-Textzeichen |
XLSDefaultPortableCell | Initialisiert eine Ein-Zellen-Spanne mit Calibri bei 11 Punkten und standardmäßigem nullwertigem Erscheinungsbild; setzen Sie Position und gewünschtes Erscheinungsbild vor der Konstruktion |
CreateXLSPortableRenderSnapshot | Validiert und kopiert Generation, Zeilenhöhen, Spaltenbreiten und gespeicherte Zellen in ein abgekoppeltes unveränderliches Interface; Zellen müssen eindeutig sein, in Row-major-Reihenfolge, innerhalb der Grenzen und nicht überlappende Spans haben |
IXLSPortableRenderSnapshot | Nur lesende Generation, RowCount, ColumnCount, CellCount, nullbasierte RowHeightPoints, ColumnWidthPoints und kopierte Cells-Records |
| Snapshot-Getter-Methoden | GetGeneration, GetRowCount, GetColumnCount, GetCellCount, GetRowHeight, GetColumnWidth und GetCell legen dieselben Werte offen; ungültiger indizierter Zugriff löst eine Exception aus |
SaveXLSPortableRenderSnapshot | Validiert und serialisiert einen Snapshot in einen begrenzten privaten Puffer und kopiert dann die vollständige HXRSNP01- oder HXRSNP02-Payload in den gelieferten Stream an dessen aktueller Position |
LoadXLSPortableRenderSnapshot | Liest den versionierten Little-Endian-Snapshot mit striktem UTF-8-Text, validiert Zählungen, Geometrie, Stile und Spans und weist nachfolgende Daten zurück; ein Fehlschlag stellt die Input-Stream-Position wieder her |
Alle Limits müssen positiv sein; das validierte Maximum sind 2000000 Raster-/gespeicherte Zellen, 1073741824 Bytes und 268435456 Textzeichen, mit Abmessungen von höchstens 1048576 Zeilen mal 16384 Spalten
MaxGridCells zählt das gesamte Rechteck einschließlich nicht gespeicherter leerer Zellen; CellCount zählt gespeicherte sichtbare Zellen und verbundene Anker und kann kleiner sein
Generation zeichnet die Quellgeneration oder einen anwendungsgelieferten Wert auf; es sind Metadaten, kein lebender Link zu einer Arbeitsmappe und keine automatische Aktualitätsprüfung
Natives Rendering und explizite Schriften
XLSPortableCairoBackendAvailable meldet die Verfügbarkeit des kompilierten nativen Backends; native Ausgabe erfordert Free Pascal unter Linux oder macOS, mit Cairo-, FreeType-, HarfBuzz- und FriBidi-Bibliotheken, die dem Prozess verfügbar sind
macOS-Builds linken die vier nativen Bibliotheken explizit; ein privater Abhängigkeitspräfix und ein expliziter Child-Process-Loader-Pfad können sie liefern, ohne gemeinsame Compiler-Einstellungen oder Shell-Profile zu ändern
Windows Delphi XE5, Win32 und Win64 können die portablen Interfaces kompilieren und Snapshot-Serialisierung nutzen, aber die native Cairo-Layoutvorbereitung meldet dort Backend-Unverfügbarkeit
Übergeben Sie eine explizite Schriftkette an PrepareXLSPortableCairoLayout; der Renderer probiert zuerst passende Familie und fett/kursiv-Stil, dann gleichstilige Fallbacks in gelieferter Reihenfolge, und verlangt Glyphenabdeckung für jeden unterstützten Textcluster
Liefern Sie die tatsächlichen Regular-, Bold-, Italic- und BoldItalic-Dateien, die Ihr erfasster Inhalt braucht; keine Systemfont-Erkennung und keine synthetische fett/kursiv-Substitution findet statt, und fehlende Dateien, Stil-Mappings oder Glyphenabdeckung weisen zurück
Schrift-Bytes werden vor dem Shaping erfasst, sodass eine Dateiänderung spätere Layouts betrifft, während ein vorhandenes Layout seine erfassten Bytes behält; FaceIndex wählt den nichtnegativen Face in einer Schriftdatei oder Sammlung
Native Operationen werden zur FreeType-Face-Sicherheit serialisiert; unveränderliche Snapshots und vorbereitete Layoutinspektion brauchen keine lebende Arbeitsmappe
Fonts[0].FamilyName := 'Calibri'; Fonts[0].FileName := '/srv/fonts/Regular.ttf'; Fonts[0].FaceIndex := 0; Fonts[0].Bold := False; Fonts[0].Italic := False;
Hier ist Calibri ein expliziter Familienalias für die gewählte Datei und erlaubt ein anwendungsgesteuertes Schriftmapping; prüfen Sie Ausgabe-Metriken, wenn Sie auf eine andere Schrift mappen
Der Renderer unterstützt harte Zeilenumbrüche, Vier-Leerzeichen-Tab-Expansion, bidirektionale Absatzanordnung, geformte Ligaturen und kombinierende Zeichen, greedy Wrapping und Schrumpfen zum Passen; Umbruch hat Vorrang vor Schrumpfen
Das Wrapping bewahrt die implementierten kombinierenden Zeichen-, Variationsselektor-, ZWJ- und Virama-Cluster-Grenzen und bevorzugt Leerzeichen und ideographische Leerzeichen; es ist keine vollständige UAX-#29-Graphem-Implementierung oder ein Unicode-Zeilenumbruch-Algorithmus, und Regional-Indicator- sowie Hangul-Jamo-Umbruchgrenzen sind nicht garantiert
Schriftgrößen lösen zu 1/64 Punkt auf, und Text wird an Zellgrenzen beschnitten; PDF bettet explizite Schriften mit logischen Textmappings ein, SVG nutzt Vektor-Glyphenpfade, und PNG zeichnet dieselben positionierten Glyphen mit der angeforderten DPI
Layout vorbereiten und inspizieren
| Symbol | Kontrakt |
|---|---|
TXLSPortableFontFile, TXLSPortableFontFiles | Eine explizite Zuordnung enthält FamilyName, FileName, FaceIndex, Bold und Italic; das dynamische Array ist geordnet und enthält zwischen 1 und 64 Zuordnungen |
TXLSPortableCairoFormat, TXLSPortableOutputFiles | xpcfPDF, xpcfSVG oder xpcfPNG sowie ein Array von Ausgabedateinamen, das der Dateispeicher liefert |
TXLSPortableCairoOptions | Seitenbreite/-höhe, vier Margen, Zell-Padding und Raster-DPI plus Seiten-, Glyphen-, Zeilen-, Layout-, Ausgabe-, Schrift-, Shaping- und Zeichenlimits |
XLSDefaultPortableCairoOptions | Initialisiert jede Option mit begrenzten Standardwerten; verwenden Sie es, bevor Sie einzelne Felder überschreiben |
PrepareXLSPortableCairoLayout | Validiert und kopiert einen Snapshot, erfasst explizite Schrift-Bytes und liefert eine eigene vorbereitete TXLSPortableCairoLayout; geben Sie sie mit Free frei |
TXLSPortableCairoLayout | Legt PageCount, LineCount, CellCount, GetTextLine, GetCellGeometry, SaveToStream, Save und Destroy offen |
TXLSPortableTextLineInfo | Ein kopierter Zeilenrecord hat CellIndex, GlyphCount, XPoints, BaselinePoints, WidthPoints, FontSizePoints und logischen Text |
TXLSPortableCellGeometry | Ein kopiertes Rechteck hat XPoints, YPoints, WidthPoints und HeightPoints im vollständigen Layout |
GetTextLine(Index), GetCellGeometry(Index) | Nullbasierte indizierte Inspektion vorbereiteter Zeilen und gespeicherter Zellen; ungültige Indizes weisen zurück |
Die Paginierung beschneidet feste Druckbereich-Kacheln in über-then-runter-Reihenfolge; eine Zelle oder ein Textfragment, das Seitengrenzen kreuzt, erscheint auf jeder schneidenden Seite, ohne automatisches Ganz-Zellen-Anpassen, Wiederholung von Arbeitsblatt-Drucktiteln oder Interpretation der Arbeitsmappen-Seiteneinrichtung
Renderer-Optionen und Grenzen
| Felder | Standardwerte und Bedeutung |
|---|---|
PageWidthPoints, PageHeightPoints | 595 mal 842 Punkte |
MarginLeftPoints, MarginTopPoints, MarginRightPoints, MarginBottomPoints | je 36 Punkte; Margen müssen ein positives druckbares Rechteck übrig lassen |
CellPaddingPoints, RasterDPI | 2 Punkte und 96 DPI; die DPI beeinflusst PNG-Abmessungen |
MaxPages, MaxGlyphs, MaxLines | 256 Seiten, 2000000 geformte Glyphen und 200000 Textzeilen |
MaxLayoutBytes | 268435456 Bytes für begrenzte Layoutarbeit und Rasterflächenprüfungen |
MaxOutputBytes | 268435456 Bytes pro gerendertem Ausgabepuffer, umfassend das vollständige PDF oder eine SVG/PNG-Seite statt der Summe separater Seitendateien |
MaxFontBytes | 134217728 Bytes über explizite Schrift-Eingabedateien für ein Layout |
MaxShapedCharacters, MaxDrawOperations | je 16000000, begrenzt Shaping-Arbeit und seitenweise Zellen-Zeichenarbeit |
Ungültige oder nicht endliche Geometrie und nichtpositive Arbeitsbudgets weisen zurück; Seitendimensionen sind auf 100000 Punkte und Raster-DPI auf 1200 begrenzt, mit zusätzlichen Byte-, Zähl- und Rasterflächenprüfungen vor dem Rendering
Der native prozessweite Schrift-Byte-Pool erlaubt zusätzlich höchstens 256 unterschiedliche Puffer und 256 MiB; byteidentische Puffer dürfen Speicher teilen, und Kapazität wird erst freigegeben, wenn der tatsächliche Cairo-besessene Font Face seinen Puffer freigibt
Geben Sie jedes Layout frei, wenn Sie fertig sind; die Bibliothek setzt keine gemeinsamen Cairo-Caches zurück, und ein logisch abgeschlossenes Layout kann Schrift-Bytes resident lassen, während natives Cairo weiterhin einen Face besitzt
Ausgabe schreiben und Fehler behandeln
SaveToStream(Stream, Format, PageIndex = 0) schreibt alle Seiten für PDF und verlangt PageIndex = 0; SVG und PNG schreiben die gewählte nullbasierte Seite
Snapshot-Serialisierung und natives Rendering schließen in privaten begrenzten Puffern ab, bevor in den Zielstream kopiert wird; Validierungs- oder Renderfehler erhalten ihn, aber ein Schreibfehler des Aufrufer-Streams kann partielle Bytes hinterlassen und folgt dem eigenen Fehlerverhalten dieses Streams
Save(FileName, Format) schreibt eine PDF-Datei oder eine SVG/PNG-Datei pro Seite und liefert deren Pfade; mehrseitige Dateinamen fügen -0001, -0002 und weitere Suffixe vor der Erweiterung ein
Vorhandene Datei- oder Verzeichnisziele weisen zurück; jeder Speichervorgang stagt alle Seiten, veröffentlicht exklusive neue Ziele und entfernt seine eigenen gestagten/veröffentlichten Ausgaben bei Fehlschlag
Das Dateisystem muss die nativen exklusiven Staging- und Link-Veröffentlichungsoperationen unterstützen; separate PDF-, SVG- und PNG-Speichervorgänge sind separate Operationen und bilden keine kombinierte Transaktion
Eigenständiger Linux-Consumer
Tests/Portable/RenderPortableSnapshot.pas ist ein vollständiger Consumer, der einen Snapshot lädt, ein Layout vorbereitet und alle drei Formate speichert; bauen Sie ihn unter Linux mit den portablen Units und nativen Bibliotheken
fpc -Mdelphiunicode -Fu/path/to/HotXLS/Lib RenderPortableSnapshot.pas ./RenderPortableSnapshot report.hxrs /srv/output/report fonts.tsv 595 842 96
fonts.tsv ist UTF-8-Text mit vier tabgetrennten Feldern pro Zuordnung: Familienalias, absoluter Linux-Schriftpfad, Face-Index und einer der Werte regular, bold, italic oder bolditalic
Calibri /srv/fonts/Regular.ttf 0 regular Calibri /srv/fonts/Bold.ttf 0 bold Calibri /srv/fonts/Italic.ttf 0 italic Calibri /srv/fonts/BoldItalic.ttf 0 bolditalic
Verwenden Sie tatsächlich installierte oder anwendungsgelieferte Schriftdateien, und wählen Sie eine neue Ausgabebasis, weil vorhandene Zieldateien zurückgewiesen werden; nehmen Sie zusätzliche gleichstilige Fallbacks für Skripte auf, die die erste Zuordnung nicht abdeckt
Stream := TFileStream.Create('report.hxrs', fmOpenRead or fmShareDenyWrite);
try
Snapshot := LoadXLSPortableRenderSnapshot(Stream,
XLSDefaultPortableRenderLimits);
finally
Stream.Free;
end;
Options := XLSDefaultPortableCairoOptions;
Layout := PrepareXLSPortableCairoLayout(Snapshot, Fonts, Options);
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;
Gecachte Diagrammaufzeichnung
XLSRecordCachedChartScene in lxPagination zeichnet die punktbezogenen Primitive des bestehenden Diagrammlayout-Renderers in eine unveränderliche portable Szenenrepräsentation auf; seine Quelle muss ein abgekoppelter TXLSXChart ohne besitzendes Arbeitsblatt und ohne erhaltenes natives XML sein, sodass Aufzeichnung keine Arbeitsblattreferenzen auflösen oder Arbeitsmappen-Caches auffrischen kann
Das aktuelle Subset unterstützt Säulen-, Balken-, Linien-, Streu-, Kreis-, Ring- und gewöhnliche Einserien-Flächendiagramme mit einer primären Plotgruppe, endlichen numerischen Wertcaches und strikt aufsteigenden begrenzten Cache-Indizes; Streu-Kategoriecaches enthalten numerische X-Koordinaten, während die anderen Familien gespeicherte Kategorienbeschriftungen nutzen
Säulen-, Balken-, Linien- und Flächenwertcaches müssen zusammenhängende nullbasierte Indizes haben; sparse Kategoriewertlücken weisen zurück, und Aufzeichnung expandiert fehlende Indizes nie in ein großes Array
Balkenplots behalten horizontale Geometrie und kategoriale Beschriftungen; Kreis- und Ringplots nutzen Kategorielegenden, beachten FirstSliceAng und HoleSize und lassen numerische Achsen weg, während gewöhnliche Einserien-Flächenplots ein gefülltes Polygon um die null-Baseline behalten
Linien- und Streuserien unterstützen unabhängige Liniensichtbarkeit, explizite RGB-Farbe und Punktbreite über LineVisible, LineColorRGB und LineWidthPoints; LineStyleSet, LineColorSet und LineWidthSet unterscheiden explizite Einstellungen von geerbten Defaults, und EffectiveLineVisible löst die bestehende Nur-Füllung-Serienkonvention auf
Marker unterstützen den automatischen Kreis, einen expliziten Kreis oder keinen Marker; eine explizite MarkerSize von 2 bis 72 setzt seinen Punktdurchmesser, und MarkerFillSet sowie MarkerBorderSet unterscheiden einen expliziten schwarzen RGB-Wert von null von automatischer Farbwahl; verbindende Segmente werden vor opaken Datenmarkern gemalt
Explizite Markerrahmen ohne gespeicherte Breite nutzen die gewöhnliche 0,75-Punkt-Linie, während Legendensamples den Kreisdurchmesser auf 6 Punkte begrenzen; angeforderte Titelschriften werden auf dem tatsächlichen Rich-Text-Run sowie dessen Standardtext-Properties geschrieben und behalten so sichtbare Größe, Farbe und Betonung, wenn Excel das Diagramm exportiert
Nicht unterstützte Diagrammfamilien, gestapelte oder Mehrserien-Flächenplots, Mehrserien-Kreiselplots, Galerie-Stile, abgerundete Ecken, sekundäre oder kombinierte Plotgruppen, Datumachsen, eigene Zahlenformate, logarithmische Achsen, eigenes Schnittverhalten, rotierter Text, Trendlinien, Fehlerbalken, hierarchische Kategorien, Datenbeschriftungen, andere Markerformen und fehlende Wertcaches lösen EXLSPortableRender vor dem Rendering aus
Eigene Wertachsen-Tick-Schriften, Nebengitternetze, explizite Haupt-/Nebeneinheiten, ungültige explizite Serienfarben und nicht unterstützte Achsenpositionen weisen zurück; Balkenlegenden verlangen derzeit die gewöhnliche rechte Platzierung, und Kreisplots verlangen eine endliche, nicht null Gesamtcachesumme und begrenzte Geometrie mit früher konservativer Reservierung für Bogen-Scratch-Speicher
Das zurückgegebene Array behält primitive Zeichnungsreihenfolge, explizite Farben, Schriften, Textausrichtung, Opazität und Diagramm-Beschneidungsgrenzen; Item-, Byte- und Textabrechnung umfasst konservative Renderer-Scratch-Reservierungen, und kooperative Cache-Prüfungen gehen der Scratch-Array-Allokation voraus
XLSValidateCachedChartSceneModel führt denselben begrenzten Cache- und Erscheinungsbild-Preflight an einem Modell durch, ohne Arbeitsblattzellen aufzulösen; die XLSX-Capture-Bridge nutzt diese Prüfung vor dem Klonen und zeichnet unterstützte verfasste Diagrammmodelle mit lokalen eindimensionalen A1-Referenzen, physischen nativen Anker-Offsets, Bereichsbeschneidung und Zeichnungsreihenfolge auf
Der plattformneutrale Rekorder lebt in lxPortableChart; die bestehenden lxPagination-Einstiegspunkte teilen sich dieselben Layout- und Primitive-Aufzeichnungskörper und behalten das Verhalten des Windows-Renderers sowie passende unveränderliche Szenen-Bytes und Budgetabrechnung für jede unterstützte Familie
Natives Linux- und macOS-Arbeitsmappen-Capture nutzt die nachfolgend beschriebene explizite Geometrieüberladung; importierte Serien-RGB-Füllung, Plotflächen-Hintergrund, Diagrammhintergrund und Diagrammrahmen werden aus ihren eigenen namespace-aufgelösten Shape-Properties wiederhergestellt, sodass eine verschachtelte Serienfarbe den Plotflächen-Hintergrund nicht überschreiben kann
Importiertes erhaltenes ChartML wird nur akzeptiert, wenn sein namespace-expandierter Element-, Attribut- und signifikanter-Text-Stream der unterstützten typisierten Rekonstruktion entspricht; Namespace-Aliase und Attributreihenfolge normalisieren, während nicht modellierte native Erweiterungen, fremde Attribute und nicht unterstütztes Erscheinungsbild konservativ zurückweisen
Rohe XML- und Rekonstruktions-Scratch-Budgets werden vor Klon- und Projektionsarbeit geprüft; nur die abgekoppelte Kopie leert ihr validiertes erhaltenes XML, und die Quelle behält native Metadaten, Zellspeicher, Cache-Inhalte und Generation
Capture durchläuft die zugrunde liegende OfficeArt-Zeichnungsreihenfolge, einschließlich Diagrammrahmen, die im öffentlichen Shapes-Wrapper fehlen, und weist einen schneidenden nicht unterstützten Rahmen zurück, statt ihn stillschweigend wegzulassen
Classic-Cachediagramme mit deklariertem Erscheinungsbild
Classic-BIFF8-Capture unterstützt die sieben obigen gewöhnlichen Diagrammfamilien, wenn ihre Kern-Records, lokalen gespeicherten Werte, expliziten linearen Skalen und ihr Erscheinungsbild abbildbar sind; es liest behaltene Records und verfügbare Formel-Caches, ohne Formeln auszuwerten, sparse Speicher zu expandieren oder kompilierte Formelbäume zu klonen
Verwenden Sie TXLSWorkbook.CreateReadOnlyViewWithChartAppearance(Source, Limits, Geometry), um eine separate Nur-Lese-View mit einem eingefrorenen Satz von TXLSClassicChartAppearanceDeclaration-Werten zu erzeugen, geliefert von IXLSClassicChartAppearanceSource; Geometry ist unter Windows optional und liefert explizite native Schriftmessungen unter Linux oder macOS
TXLSClassicChartAppearanceDeclarations ist das dynamische Array aus primitiven Deklarationen, das eine Anwendung zur Implementierung dieser Quelle nutzen darf
Übergeben Sie diese konfigurierte View an CaptureXLSPortableViewRenderSnapshot(View, SheetIndex, Row1, Col1, Row2, Col2, Limits); Koordinaten sind 1-basiert, und der Adapter stellt das aktive Arbeitsblatt des Aufrufers wieder her, wenn das Capture endet oder zurückweist
Die gewöhnlichen Capture-Einstiegspunkte weisen weiterhin unaufgelöste effektive Classic-Layout- oder Legendenschriften zurück; der separate View-Einstiegspunkt nutzt die bereits eingefrorenen Deklarationen und den Geometrie-Provider
| Deklarationsmember | Kontrakt |
|---|---|
Generation, SheetIndex, ObjectId | Die festgelegte Arbeitsmappen-Generation, der 1-basierte Arbeitsblattindex und die tatsächliche gespeicherte Diagrammobjektidentität; veraltete Generationen, fehlende oder wiederholte Identitäten und Identitäten eines anderen Objekts weisen zurück |
HasChartSize, ChartWidthPoints, ChartHeightPoints | Eine explizite endliche positive Diagrammrahmengröße in Punkten; sie behält den gespeicherten Ankerursprung und die Zeichnungsreihenfolge, während ein false-Flag die ankerabgeleiteten Abmessungen behält |
HasPlotInnerRectangle, PlotInnerRectangle | Ein explizites inneres Plotrechteck ohne Beschriftungen und Achsentitel; es ist für diesen deklarierten Erscheinungsbild-Pfad erforderlich |
HasTitleRectangle, TitleRectangle | Ein explizites Titelrechteck, wenn das Diagramm einen Titel hat; Quelltext, Schriftfamilie, Betonung und Farbe kommen weiterhin aus validierten Kern-Records |
HasLegendRectangle, LegendRectangle | Die deklarierten Legendengrenzen, wenn eine Legende vorhanden ist |
HasLegendFontSize, LegendFontSizePoints | Die explizite effektive Punktgröße des Aufrufers für eine vorhandene Legende; Kernschriftfamilie, Betonung und Farbe bleiben erhalten |
TXLSPortableChartRectangle | Left, Top, Width und Height sind endliche Punkte relativ zum erfassten Diagrammrahmen; aktive Rechtecke erfordern positive Abmessungen innerhalb dieses Rahmens |
Count, GetCount, ReadDeclaration | Die Quelle meldet eine begrenzte Anzahl und liefert einen primitiven Record pro nullbasiertem Index, solange die View konfiguriert ist; Deklarationen werden vor späterem Capture kopiert |
Diese Werte sind aufruferdeklariertes Erscheinungsbild, kein automatisches Excel-Layout oder abgeleitete Schriftskalierung; beziehen Sie sie aus einer unabhängig geprüften Quelle oder einem anwendungsdefinierten Layout und prüfen Sie die Ausgabe mit der expliziten nativen Schriftzuordnung, die für das Rendering genutzt wird
Explizite Rahmendimensionen und innere Plotgrenzen müssen genug Raum für die validierten Achsenbeschriftungsschriften lassen; unzureichender Beschriftungsraum weist zurück, statt Text zu beschneiden oder einen angepassten Skalierungsfaktor anzuwenden
Anwendungen halten den Arbeitsmappen-Besitzer am Leben, bis die View freigegeben wird; die geliehene View hält eine Lese-Lease und behält die Deklarationsquelle, während der entstehende unveränderliche Snapshot weder die Arbeitsmappe noch den Provider behält
Unterstützte Kernprojektion umfasst literale Volltonfüllungen, sichtbare Volltonlinien, Kreismarker, Titel- und Legendentext, Kategorieplatzierung und begrenzte explizite numerische Ticks; automatische Skalen, unaufgelöste automatische Markererscheinung, Glättung, unbekannte Rich-Erweiterungen, fremde oder nichtlineare Serienreferenzen und nicht abgebildete Punktstile weisen vor der Ausgabe zurück
Deklarierte Geometrie oder eine Legendengröße autorisiert nicht, unbekannte Diagrammerweiterungen oder unvalidierte Stile zu ignorieren; Byte-, Text-, gespeicherte-Zellen- und Szenenlimits bleiben für behaltene Quelldaten, Deklarationen, abgekoppelte Caches und Aufzeichnungs-Scratch-Speicher wirksam
Die zusätzlichen XLSValidateCachedChartSceneModel- und XLSRecordCachedChartScene-Überladungen akzeptieren TXLSCachedChartSceneAppearance für ein abgekoppeltes Modell; initialisieren Sie es mit XLSDefaultCachedChartSceneAppearance, bevor Sie explizite Steuerungen setzen
Der niedrigere XLSReadClassicChartScene in lxClassicChartScene liefert einen aufruferbesessenen abgekoppelten TXLSXChart sowie primitives Erscheinungsbild- und Budgetzähler aus einem behaltenen TXLSCustomChart, seinem exakten Quellcalculator und einer geleaste TXLSClassicChartSceneSource; geben Sie das zurückgegebene Modell nach der Aufzeichnung frei
TXLSClassicChartSceneSource.ReadAppearance liefert eine primitive Deklaration, ReadCell liest begrenzte festgelegte lokale gespeicherte Werte, ReadFont füllt den gelieferten Textstil mit begrenzten effektiven Kernschriftdaten, und PaletteColor löst explizite gespeicherte Paletteneinträge auf; Anwendungsimplementierungen müssen die festgelegte Quelle bewahren und jede gelieferte Byte- und Zeichenquote einhalten
| Szenen-Erscheinungsbild-Member | Bedeutung |
|---|---|
SeriesMarkerSizePoints | Begrenzte Serien-Punktdurchmesser, einschließlich Fraktionalwerten; null behält die Markergröße des Modells, und ein Nicht-null-Override muss zwischen 2 und 72 Punkten liegen |
OverrideBorder, BorderColorRGB, BorderWidthPoints | Explizites Diagrammrahmen-Umrisserscheinungsbild |
AxisColorRGB, TickColorRGB, GridlineColorRGB, AxisWidthPoints, TickWidthPoints, GridlineWidthPoints | Explizite Achsen-, Tick- und Hauptgitternetz-Farben und Punktbreiten |
AreaFillOpacity, SeriesFillAlpha | Flächenopazität und Serienfüll-Alpha |
UseAxisTickControls, CategoryBetween | Validierte explizite Achsensteuerungen und kategoriale Platzierung |
TitleOffsetXPoints, TitleOffsetYPoints | Endliche Offsets, angewendet auf die gewöhnliche Titelposition des Rekorders |
OverridePlotInnerRectangle, OverrideTitleRectangle, OverrideLegendRectangle, PlotInnerRectangle, TitleRectangle, LegendRectangle | Literal Punkt-Rechtecke relativ zum Diagrammrahmen |
PieRadiusRatio | Kreisplot-Radius als begrenzter Anteil der kleineren Plotdimension |
Diagrammprimitive folgen der bestehenden Layoutrichtlinie von HotXLS; Diagrammgalerie-Erscheinungsbild, das Excels nicht modellierte Defaults erfordert, bleibt eine explizite nicht unterstützte Grenze
Direktes natives Arbeitsmappen-Capture
CreateXLSPortableCairoRenderGeometry(Fonts, Calibration, Generation, Backend, Options, CacheCapacity) liefert ein IXLSRenderGeometry, das auf denselben expliziten Schriftdateien, FreeType, HarfBuzz und Textshaping basiert wie die native Ausgabe; Spaltenbreiten nutzen die tatsächlich gemessene maximale Ziffernbreite mit der Arbeitsmappen-Kalibrierung
Der Provider besitzt abgekoppelte Schrift-Bytes und einen begrenzten Metrik-Cache, prüft Schrift- und Layoutbudgets vor der Allokation und validiert Messanfragen, bevor er den Cache-Zustand ändert; ein voller Cache kann ungecachte Messungen liefern, ohne über seine Kapazität hinaus zu wachsen
Capture verifiziert, dass die Provider-Generation und alle Kalibrierfelder zur aktuellen Nur-Lese-Arbeitsmappenview passen, behält den Provider für diese View und lässt die Standard-Geometrie-Factory der Arbeitsmappe unverändert; gewöhnliche Standard-native-Geometrie bleibt eine explizite GDI-Grenze
Erfassen Sie die Generation über eine explizit freigegebene View, bevor Sie den Provider erzeugen; das Zurückhalten eines temporären Interface-Ergebnisses kann seine Lese-Lease behalten, bis der umgebende Scope endet
View := Owner.CreateReadOnlyView; Generation := View.Generation; View := nil; Geometry := CreateXLSPortableCairoRenderGeometry(Fonts, Workbook.CaptureRenderCalibration, Generation, xlsrgbBitmap, XLSDefaultPortableCairoOptions, 4096); Snapshot := CaptureXLSPortableRenderSnapshot(Owner, 1, 1, 1, 30, 6, XLSDefaultPortableRenderLimits, Geometry);
Native Consumer kompilieren mit LX_PORTABLE_CORE und den entsprechenden nativen Abhängigkeiten; Windows-Aufrufe der nativen Cairo-Geometrie-Factory weisen explizit zurück, während Windows-Capture seine bestehende Geometrie-Factory über dieselben Scoped-Überladungen nutzen kann
Tatsächliches natives Capture unterstützt die oben beschriebenen modellierten Skalare, Rich Text, unterstützte Raster, gewöhnliche Formen und die sieben Cachediagramm-Familien; Diagramm-Capture bewahrt das ursprüngliche importierte ChartML, gecachte Punkte, sparse Zellspeicher, gepackte Speicherung und die Arbeitsmappen-Generation
Für unveränderliche Druckbereiche, Margen, Anpassungs- oder Prozentskalierung, wiederholte Titel, manuelle Umbrüche und Ganz-Zellen- oder verbundene-Zellen-Paginierung siehe Portable Druckpläne
Erweiterte Capture-Bridge
IXLSRenderCaptureSource in lxSemanticSnapshot ist die interne Koordinationsschnittstelle, die von unterstützten Nur-Lese-Arbeitsmappenviews implementiert wird; gewöhnliche Anwendungen sollten die besitzerbasierten Capture-Überladungen aufrufen
TXLSClassicReadOnlyWorkbookView und TXLSXReadOnlyWorkbookView implementieren IXLSRenderCaptureSource, einschließlich der acht nachfolgenden Render-Methoden; diese Klassen koordinieren Capture über Nur-Lese-Views, und der Adapter verwaltet ihre Lebensdauer, während Anwendungen ihre Arbeitsmappen-Besitzer-Interface behalten und CaptureXLSPortableRenderSnapshot aufrufen
Ihre bestehende TryReadCell-Methode liefert einen gespeicherten Zellen-Snapshot über die Nur-Lese-View; die Render-Methoden ergänzen abgekoppeltes Erscheinungsbild und Geometrie für portables Capture
| Member oder Helper | Zweck |
|---|---|
ValidateRenderRange | Prüft 1-basierte Rechteckgrenzen und nicht unterstützte Erscheinungsbild-Footprints vor dem Capture |
ReadRenderStyle | Liefert abgekoppelte TXLSSemanticCellStyle-Metadaten und ein Rich-Text-Vorhandenheits-Flag für eine 1-basierte Zelle |
IXLSRenderRichTextCaptureSource, ReadRenderRichText | Optionale View-Erweiterung, die begrenzte abgekoppelte TXLSRenderTextRuns liefert; jeder TXLSRenderTextRun enthält Text und einen effektiven semantischen Style und nutzt den gelieferten Basisstil sowie positive Run-/Byte-Quoten, ohne Zellen zu materialisieren oder Stil-Pools zu ändern |
RenderRowHeightPoints, RenderColumnWidthPoints | Liefern physische Geometrie und verdichten versteckte Dimensionen zu null |
IXLSRenderGeometryCaptureSource, SetRenderCaptureGeometry | Optionale View-Erweiterung, die einen expliziten Provider erst nach Generierungs- und Kalibriervalidierung behält; ungültige Provider lassen den behaltenen View-Provider unverändert |
ReadRenderMerge | Meldet das vollständige inklusive 1-basierte Verbundrechteck, das eine Zelle enthält |
ResolveRenderColor | Löst semantische Themen-/indizierte/RGB-Erscheinungsbilder in eine portable RGB-Farbe auf und nutzt dabei wo unterstützt den gelieferten Default |
RenderDate1904, RenderRightToLeft | Legen Arbeitsmappen-Datumssystem- und Blattleserichtungs-Kontext offen |
XLSRenderCaptureLiteral | Erkennt das unterstützte literale Boolean-, endliche Zahlen- oder einfache gequotete Text-Subset für Capture ohne Auswertung |
XLSRenderCaptureIntersects | Prüft leerraumgetrennte lokale A1-Bereiche gegen ein 1-basiertes Rechteck und weist unaufgelöste Bereichssyntax zurück |
XLSRenderCaptureCondition | Wertet das unterstützte Bedingungs-Subset gegen einen vorhandenen Skalar aus; Vergleichsoperator-Codes 1 bis 8 bedeuten zwischen, nicht-zwischen, gleich, nicht-gleich, größer, kleiner, größer-oder-gleich und kleiner-oder-gleich |
XLSRenderCaptureApplyDxf | Wendet unterstütztes abgekoppeltes Differentialerscheinungsbild mit einer AppliedSlots-Maske an und behält dabei höherpriore Formatierung |
TXLSDxfStyle._MarkRenderUnsupportedAppearance, TXLSDxfStyle._HasRenderUnsupportedAppearance | Interne, präfixierte Import-Koordinationsmethoden zeichnen Erscheinungsbild auf und inspizieren es, das das typisierte Differentialmodell nicht sicher rendern kann; Assign behält die Markierung, und Capture weist einen markierten passenden Stil zurück |
Diese Bridge-Helper können EXLSSemanticSnapshot auslösen; der öffentliche Capture-Adapter übersetzt diese Exception nach EXLSPortableRender