HotXLS-documentatie / API-naslag

Draagbare headless uitvoer

Beschikbaar sinds versie 2.384.100 als een begrensde uitvoerpijplijn met expliciete capture- en rendering-API's

Leg een ondersteund bereik uit een Classic XLS- of XLSX-werkmap op Windows vast, transporteer zijn onveranderlijke snapshot en render PDF, SVG of PNG op Linux of macOS met Free Pascal en native Cairo

De capture-adapter gebruikt de werkmapengine; capture op Windows gebruikt zijn standaard geometrieservice, terwijl native capture op Linux en macOS een expliciete FreeType/HarfBuzz-geometrieservice kan meeleveren, ondersteund door door de toepassing gekozen lettertypebestanden

De aparte native consumer accepteert lxPortableRender-scènes via lxPortableCairo, zonder Excel of een desktopsessie; zijn geometrie-API gebruikt ook de bestaande draagbare werkmapweergave- en render-geometrie-units

De consumer accepteert een onveranderlijke scène of transferstream; de platformvereisten voor het laden en berekenen van werkmappen worden apart beschreven bij Free Pascal-ondersteuning

Een bestaand werkbladbereik vastleggen

CaptureXLSPortableRenderSnapshot in lxPortableWorkbookCapture accepteert een IXLSWorkbook of IXLSXWorkbookOwner, met expliciete of standaard TXLSPortableRenderLimits; twee extra overloads accepteren expliciete limieten gevolgd door een IXLSRenderGeometry-provider die tot de capture-weergave is beperkt

SheetIndex en de inclusieve Row1, Col1, Row2, Col2 zijn 1-based; de resulterende snapshot bewaart zero-based posities relatief aan de vastgelegde rechthoek

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.

Houd de eigenaarsinterface in leven zolang je het werkmapobject gebruikt; geef de interface vrij in plaats van een interface-eigen werkmap handmatig vrij te geven

Voor Classic XLS gebruik je TXLSWorkbook en IXLSWorkbook uit lxHandle met dezelfde capture-aanroep

Capture leest bestaande formulecaches en weigert elke formule in de rechthoek zonder cache; het herberekent nooit impliciet, haalt geen externe data op en registreert geen nieuwe stijlen in de bronwerkmap

Herbereken expliciet vóór de capture wanneer je toepassing verse formuleresultaten nodig heeft; een bestaande cache wordt gerenderd zoals opgeslagen, dus capture garandeert niet zijn versheid

De bewerking houdt een leesweergave vast en controleert de werkmapgeneratie voordat hij terugkeert; zijn teruggegeven snapshot is losgemaakt van werkmapeigendom en blijft bruikbaar nadat de werkmap is vrijgegeven

Uiterlijk en capture-grenzen

De snapshot bevat opgemaakte weergavetekst, fysieke afmetingen in punten, opgeloste RGB-kleuren, ondersteunde cellettertypen en uitlijningen, opvullingen, randen en volledige samengevoegde rechthoeken; verborgen rijen en kolommen hebben grootte nul

Ondersteund lettertype-uiterlijk omvat vet, cursief, enkele onderstreping en doorhaling; ondersteund cel-uiterlijk omvat effen opvullingen, horizontale uitlijning links/midden/rechts, verticale uitlijning boven/midden/onder, terugloop, krimpen en leesvolgorde rechts-naar-links

Dunne, middelste, dikke, haarlijn-, dubbele, gestippelde, onderbroken en middel-onderbroken werkmapranden mappen naar de draagbare randstijlen en puntbreedtes; andere randstijlen worden geweigerd

Ondersteunde rich text draagt effectieve run-lettertypen, puntgroottes, RGB-kleuren, vet, cursief, enkele onderstreping, doorhaling en superscript of subscript op run-niveau; gewone celomtrek-/schaduw-/verticale lettertype-effecten, niet-ondersteunde onderstreepstijlen, gradiënt- of patroonopvullingen, diagonale randen, inspringing, tekstrotatie en niet-ondersteunde uitlijningen worden geweigerd

Een capture-rechthoek moet elke samengevoegde cel volledig bevatten; afgeknipte, overlappende of inconsistente samenvoegingen en incompatibele stijlen langs een samengevoegde buitenrand worden geweigerd

Bladachtergronden en niet-ondersteunde bladsoorten weigeren de capture; ondersteunde PNG/JPEG-afbeeldingen en gewone rechthoek-/ellipstekstvormen in beide werkmapfacades worden vastgelegd als geordende scèneobjecten, samen met XLSX-celafbeeldingen, Boolean-selectievakjes en de hieronder beschreven ondersteunde gegroepeerde XLSX-grafieksubset; niet-ondersteunde grafieken, shape-presets, WordArt, gegroepeerde transformaties, zwevende besturingselementen, Slicers, Timelines en sparklines worden geweigerd wanneer hun opgeloste voetprinten de rechthoek snijden

Niet-ondersteunde inhoud met een betrouwbaar opgeloste voetprint buiten de rechthoek kan naast capture bestaan; een onoplosbare tekenvoetprint weigert in plaats van mogelijk overlappende inhoud stilletjes weg te laten

Classic-tabelstijl die de rechthoek snijdt weigert; ingebouwde en ondersteunde aangepaste XLSX-tabelsecties worden opgelost in losgemaakte stijlcontext, met sectiegrote ruiten en directe celformaat-overschrijvingen

Voor ondersteunde geïmporteerde tabel-secties met effen of impliciete differentiële opvullingen levert RGB bgColor de zichtbare achtergrond; RGB fgColor alleen laat de overgeërfde achtergrond onveranderd, en een sectie met beide kleuren gebruikt zijn achtergrondkleur

Geïmporteerde tabelsecties met uiterlijk dat de getypeerde samenvatting niet kan representeren, weigeren wanneer die sectie geldt, waaronder onderstreping, getalnotaties, expliciet gewiste vet/cursief, lettertypeschema's, een expliciet geen-opvulling-patroon en niet-ondersteunde kleurvormen; een niet-gerelateerde sectie buiten de vastgelegde rechthoek blokkeert capture niet

Ondersteunde voorwaardelijke opmaak wordt toegepast zonder formule-evaluatie: gegecachte numerieke of datumvergelijkingen tegen letterlijke numerieke grenzen, letterlijke Boolean- of numerieke expressies, tekst-bevat-/voorvoegsel-/achtervoegselregels, lege waarden en fouten; hogere-prioriteit-uiterlijk wint per ondersteunde eigenschap, en XLSX StopIfTrue stopt lagere-prioriteit-matchende regels

Classic-tekstregels vereisen een letterlijke string-naald en matchen gegecachte stringcellen; XLSX-tekstregels gebruiken hun opgeslagen tekstcriteria

Ondersteund differentieel uiterlijk omvat opgeloste themakleuren met tint en gewone geïndexeerde kleuren; geïmporteerde automatische kleuren, niet-thema-tint, een differentiële opvulling met zowel voor- als achtergrondkleur, en niet-ondersteunde rand-, uitlijnings-, doorhalings- of ander niet-representeerbaar differentieel uiterlijk worden geweigerd wanneer de matchende regel geldt

Voorwaardelijke formules die evaluatie vereisen, aggregaat- of datumafhankelijke regels, kleurschalen, gegevensbalken en pictogramsets worden geweigerd waar ze worden aangetroffen; het aantal overlappende voorwaardelijke-opmaakregels is begrensd

Date1904-conversie kiest de toepasselijke rauwe numerieke-notatiesectie vóór het toepassen van de kalenderoffset; inactieve kalendersecties veranderen gewone numerieke weergave niet, en Boolean-waarden blijven Boolean

Een gekozen Date1904-kalendersectie in combinatie met opmaakvoorwaarden of verlopen-tijd-constructies weigert; ook gequote of geëscapete sectiescheiders weigeren, en deze grens blokkeert een gekozen gewone numerieke sectie niet alleen omdat een andere sectie een kalenderformaat is

Rich text en geordende tekenscènes

TXLSPortableCell.RichText is een array van TXLSPortableTextRun-records met Text, FontFamily, FontSizePoints, FontStyles, ColorRGB en BaselineShiftPoints; samengevoegde run-tekst moet exact gelijk zijn aan de weergavetekst van de cel

XLSX-runs erven weggelaten eigenschappen van het effectieve vastgelegde cellettertype, inclusief ondersteunde tabel- en voorwaardelijke opmaak; expliciet toegewezen false-vlaggen en expliciete none-/baseline-/automatische-kleurwaarden overstijgen de overerving

Native shared strings en inline strings behouden run-grenzen en witruimte; niet-ondersteunde native lettertypekinderen, attributen, namespaces, thema-/geïndexeerde rich-kleuren en fonetische annotaties weigeren in plaats van zichtbaar uiterlijk stilletjes te verliezen

Classic-runs lossen hun opgeslagen BIFF-lettertypeindices op tot volledige effectieve run-lettertypen; fonetische metadata en niet-ondersteunde run-lettertypen weigeren, en capture behoudt werkmapgeneratie en stijlpools

Classic-tekstvormen lezen bestaande OfficeArt-eigenschappen en TXO-lettertyperuns zonder tekenwrappers aan te maken of de werkmap te wijzigen; ankers gebruiken echte rij-/kolomafmetingen en offsets, ondersteunde effen opvullingen en contouren behouden hun kleuren en breedtes, en ingesloten PNG/JPEG-bytes worden losgemaakt vóór transport

Rechthoekige tekst gebruikt de native marges van 7,2 pt horizontaal en 3,6 pt verticaal; ellipstekst gebruikt daarnaast zijn ingeschreven tekstrechthoek en houdt gewone tekst binnen de vormcontour in beide werkmapfacades

Geïmporteerde Classic-rechthoek- en ellipscontainers behouden hun getypeerde tekst en opmaak; overgeslagen native shape- of groepsmetadata zonder oplosbare voetprint weigert de capture expliciet, terwijl onbekende objectstaartrecords, tekenextensies, rotatie, niet-effen opvullingen en niet-ondersteunde lijnstijlen een snijdend object weigeren

Geïmporteerde XLSX-tweecellige rechthoek- en ellipsankers ondersteunen expliciete RGB-effen opvullingen met alpha, effen of onderbroken/gestippelde contouren, fysieke ankeroffsets en één gewone rich-text-alinea; elke run behoudt zijn effectieve lettertype, puntgrootte, kleur, vet, cursief, enkele onderstreping en doorhaling, inclusief expliciete vet- of cursief-resets

De geïmporteerde shape-lezer reserveert rauwe XML-werkgeheugen vóór het parsen en controleert item-, byte- en tekstbudgetten coöperatief; het behoudt werkmaptekenvolgorde en leesleases zonder shapemodellen of afwezige cellen aan te maken

Onbekende native shape-eigenschappen, effecten, thema's, rotaties, gegroepeerde transformaties, meerdere alinea's en niet-ondersteunde ankertypes worden expliciet geweigerd; een opgeloste niet-ondersteunde voetprint buiten de capture-rechthoek blokkeert het gevraagde gebied niet

Superscript en subscript op run-niveau gebruiken twee derde van de run-lettertypegrootte en een basislijnverschuiving van een derde van de oorspronkelijke puntgrootte; een stijlgrens die een Unicode-shapingcluster splitst, of een CRLF-reeks die incompatibele run-grenzen overschrijdt, weigert tijdens native layout

TXLSPortableSceneObject draagt een Kind, puntgebaseerde X, Y, Width, Height, cliprechthoek, opvullings-/omtrekkleuren en dekking, optionele padpunten, tekstcel of gecodeerde rasterbytes en afmetingen

TXLSPortableSceneKind bevat xpskRectangle, xpskEllipse, xpskPolyline, xpskPolygon, xpskText, xpskPNG en xpskJPEG; arrayvolgorde is tekenvolgorde, waarbij latere objecten eerdere objecten bedekken

De extra CreateXLSPortableRenderSnapshot-overload accepteert een TXLSPortableSceneObjects-array; query IXLSPortableRenderSceneSnapshot voor zero-based Objects en ObjectCount, waarvan de getters losgemaakte kopieën teruggeven inclusief run-, punt- en rasterarrays

Celafbeeldingen en selectievakjespaden gaan aan zwevende tekenobjecten vooraf; zwevende tekenobjecten behouden werkmapvolgorde, fysieke ankers en viewport-clipping, en tekstvormen gebruiken het minor-thema-lettertype op 11 punten met tekstmarges van 7,2 pt horizontaal en 3,6 pt verticaal

PNG- en JPEG-afbeeldingen worden native gedecodeerd na preflight van header, pixelformaat en bytes; ondersteunde zwevende afbeeldingen behouden transparantie en uitrekgeometrie, terwijl celafbeeldingen binnen de cel of volledige samengevoegde rechthoek passen met behoud van beeldverhouding

Bijsnijden, rotatie, schaduwen, luminantie/gamma-aanpassing, tegeling, SVG-begeleiders en live camera-koppelingen blijven niet-ondersteund; bewaarde afbeelding-XML wordt gevalideerd tegen het ondersteunde uiterlijk, dus verborgen afbeeldingen, onbekende geneste metadata, eigenschappen in vreemde namespaces, niet-rechthoekige afbeeldingsgeometrie en niet-gemodelleerde transformaties weigeren alleen wanneer hun voetprint de capture overlapt

Boolean-cel-selectievakjes gebruiken een themaneutrale vectorbox en optioneel vinkje, inclusief effectieve besturingselementen die zijn overgeërfd uit rij- en kolomformaten; de gevraagde celdoorloop is begrensd vóór traversatie, andere soorten besturingselementen en lege of niet-Boolean selectievakjeswaarden weigeren, en ondersteunde celscènes onderdrukken fallback-tekst van scalaire Boolean- of beeldfouten

Een standaardselectievakje is invoer-metadata en fabriceert geen Boolean voor een afwezige cel; expliciet wissen van een direct celbesturingselement maskeert een overgeëfd besturingselement, terwijl het lezen van captures schaarse afwezigheid en de werkmapgeneratie behoudt

XLSReadPortableImageDimensions valideert een begrensde PNG IHDR of ondersteunde eight-bit sequentiële/progressieve JPEG-frame en geeft zijn gedeclareerde breedte en hoogte terug; decoderen blijft de verantwoordelijkheid van de renderer

IXLSPortableSceneCaptureSource.ReadPortableSceneObjects gebruikt 1-based werkmapcoördinaten en puntgebaseerde scènecoördinaten relatief aan het bereik, valideert het bereik en coöperatieve limieten en geeft verbruikte byte-, tekst- en itemaantallen terug; HasPortableCellScene identificeert cellen waarvan de scalaire weergave wordt vervangen door hun vastgelegde scène

Native layout CellCount telt rastercellen en LineCount omvat ook tekenscèneobjecten; de regel-CellIndex van een tekstobject is CellCount plus zijn zero-based volgnummer onder tekenscèneobjecten, terwijl GetCellGeometry beperkt blijft tot rastercellen

Scalaire snapshots serialiseren verder als HXRSNP01; snapshots met runs of scèneobjecten serialiseren als HXRSNP02, en de loader accepteert beide versies met hetzelfde onveranderlijke eigendoms- en invoerpositie-terugrolcontract

Het gecombineerde itembudget telt opgeslagen cellen, rich-runs, scèneobjecten en padpunten; bytelimieten rekenen gestage en losgemaakte arrays, tekst, gecodeerde rasterpayloads en begrensde native metadata-inspectie mee vóór toewijzing

Draagbare snapshot-API

SymboolContract
EXLSPortableRenderException die wordt gegeven bij ongeldige snapshotdata, niet-ondersteund capture-uiterlijk, onbeschikbare native backend, resourcelimieten of renderfouten
TXLSPortableFontStyle, TXLSPortableFontStylesxpfsBold, xpfsItalic, xpfsUnderline en xpfsStrikeout, gecombineerd als set
TXLSPortableHorizontal, TXLSPortableVerticalxphLeft, xphCenter, xphRight en xpvTop, xpvCenter, xpvBottom
TXLSPortableBorderStyle, TXLSPortableBorderxpbsNone, xpbsSolid, xpbsDashed, xpbsDotted en xpbsDouble; elke rand draagt Style, WidthPoints en ColorRGB
TXLSPortableCellZero-based Row/Column, positieve RowSpan/ColumnSpan, weergave-Text, FontFamily, FontSizePoints, FontStyles, TextColorRGB, FillColorRGB, HasFill, WrapText, ShrinkToFit, RightToLeft, Horizontal, Vertical en vier LeftBorder/TopBorder/RightBorder/BottomBorder-records
TXLSPortableCells, TXLSPortableSizesDynamische arrays van opgeslagen cellen en fysieke rij-/kolomgroottes in punten
TXLSPortableRenderLimitsMaxGridCells, MaxStoredCells, MaxBytes en MaxTextCharacters begrenzen constructie, capture en serialisatie
XLSDefaultPortableRenderLimitsGeeft 2000000 rastercellen, 2000000 opgeslagen cellen, 67108864 bytes en 16777216 UTF-16-teksttekens terug
XLSDefaultPortableCellInitialiseert een celspan met Calibri op 11 punten en standaard op nul gezet uiterlijk; zet zijn positie en gewenste uiterlijk vóór constructie
CreateXLSPortableRenderSnapshotValideert en kopieert generatie, rijhoogtes, kolombreedtes en opgeslagen cellen naar een losgemaakte onveranderlijke interface; cellen moeten uniek zijn, in rij-major-volgorde, binnen de grenzen liggen en niet-overlappende spans hebben
IXLSPortableRenderSnapshotAlleen-lezen Generation, RowCount, ColumnCount, CellCount, zero-based RowHeightPoints, ColumnWidthPoints en gekopieerde Cells-records
Snapshot-getter-methodenGetGeneration, GetRowCount, GetColumnCount, GetCellCount, GetRowHeight, GetColumnWidth en GetCell stellen dezelfde waarden bloot; ongeldige geïndexeerde toegang geeft een exception
SaveXLSPortableRenderSnapshotValideert en serialiseert één snapshot naar een begrensde privébuffer en kopieert daarna de volledige HXRSNP01- of HXRSNP02-payload naar de meegegeven stream op zijn actuele positie
LoadXLSPortableRenderSnapshotLeest de geversione little-endian-snapshot met strikte UTF-8-tekst, valideert aantallen, geometrie, stijlen en spans en weigert achterblijvende data; bij een fout wordt de invoerstreampositie hersteld

Alle limieten moeten positief zijn; het gevalideerde maximum is 2000000 raster-/opgeslagen cellen, 1073741824 bytes en 268435456 teksttekens, met afmetingen van hooguit 1048576 rijen op 16384 kolommen

MaxGridCells telt de volledige rechthoek, inclusief niet-opgeslagen lege cellen; CellCount telt opgeslagen zichtbare cellen en samengevoegde ankers en kan kleiner uitvallen

Generation registreert de brongeneratie of een door de toepassing geleverde waarde; het is metadata en geen live koppeling aan een werkmap of automatische versheidscontrole

Native rendering en expliciete lettertypen

XLSPortableCairoBackendAvailable rapporteert de beschikbaarheid van de gecompileerde native backend; native uitvoer vereist Free Pascal op Linux of macOS, met Cairo, FreeType, HarfBuzz en FriBidi-bibliotheken beschikbaar voor het proces

macOS-builds koppelen de vier native bibliotheken expliciet; een privé-afhankelijkheidsprefix en een expliciet loaderpad voor kindprocessen kunnen die leveren zonder gedeelde compilerinstellingen of shellprofielen te wijzigen

Windows Delphi XE5, Win32 en Win64 kunnen de draagbare interfaces compileren en snapshotserialisatie gebruiken, maar het voorbereiden van native Cairo-layout rapporteert daar backend-onbeschikbaarheid

Geef een expliciete lettertypeketen mee aan PrepareXLSPortableCairoLayout; de renderer probeert eerst matchende familie en vet/cursief-stijl, daarna same-style-fallbacks in meegegeven volgorde, en vereist glyph-dekking voor elke ondersteunde tekstcluster

Lever de werkelijke regular-, bold-, italic- en bold-italic-bestanden aan die je vastgelegde inhoud nodig heeft; er is geen systeemlettertypen-detectie of synthetische vet/cursief-substitutie, en ontbrekende bestanden, stijltoewijzingen of glyph-dekking weigeren

Lettertypebytes worden vastgelegd vóór shaping, dus het wijzigen van een bestand raakt latere layouts terwijl een bestaande layout zijn vastgelegde bytes behoudt; FaceIndex kiest de niet-negatieve face in een lettertypebestand of -collectie

Native bewerkingen worden geserialiseerd voor FreeType-face-veiligheid; onveranderlijke snapshots en inspectie van voorbereide layouts vereisen geen live werkmap

Fonts[0].FamilyName := 'Calibri';
Fonts[0].FileName := '/srv/fonts/Regular.ttf';
Fonts[0].FaceIndex := 0;
Fonts[0].Bold := False;
Fonts[0].Italic := False;

Hier is Calibri een expliciete familiealias voor het gekozen bestand, zodat de toepassing de lettertypetoewijzing beheert; inspecteer de uitvoermetrieken wanneer je naar een ander lettertype mapt

De renderer ondersteunt harde regeleinden, uitbreiding van tabs naar vier spaties, alinea-bidirectionele ordening, gevormde ligaturen en combinerende tekens, hebzuchtige terugloop en krimpen-om-passend-te-maken; terugloop gaat vóór krimpen

Terugloop behoudt de geïmplementeerde clustergrenzen voor combinerende tekens, variatieselectors, ZWJ en virama en geeft de voorkeur aan spaties en ideografische spaties; het is geen complete UAX #29-grafeem-implementatie of Unicode-regelafbrekingsalgoritme, en terugloopgrenzen voor regional-indicator en Hangul-Jamo zijn niet gegarandeerd

Lettertypegroottes resolveren naar 1/64 punt en tekst wordt geclipt op celgrenzen; PDF sluit expliciete lettertypen in met logische tekstmappings, SVG gebruikt vector-glyphpaden, en PNG tekent dezelfde gepositioneerde glyphs op de gevraagde DPI

Een layout voorbereiden en inspecteren

SymboolContract
TXLSPortableFontFile, TXLSPortableFontFilesEén expliciete toewijzing bevat FamilyName, FileName, FaceIndex, Bold en Italic; de dynamische array is geordend en bevat tussen 1 en 64 toewijzingen
TXLSPortableCairoFormat, TXLSPortableOutputFilesxpcfPDF, xpcfSVG of xpcfPNG, en een array van uitvoerbestandsnamen die bestandsopslag teruggeeft
TXLSPortableCairoOptionsPaginabreedte/-hoogte, vier marges, celpadding en raster-DPI, plus limieten voor pagina, glyph, regel, layout, uitvoer, lettertype, shaping en tekenen
XLSDefaultPortableCairoOptionsInitialiseert elke optie met begrensde standaardwaarden; gebruik het vóór het overschrijven van afzonderlijke velden
PrepareXLSPortableCairoLayoutValideert en kopieert een snapshot, legt expliciete lettertypebytes vast en geeft een beheerde voorbereide TXLSPortableCairoLayout terug; geef die vrij met Free
TXLSPortableCairoLayoutStelt PageCount, LineCount, CellCount, GetTextLine, GetCellGeometry, SaveToStream, Save en Destroy bloot
TXLSPortableTextLineInfoEen gekopieerd regelrecord heeft CellIndex, GlyphCount, XPoints, BaselinePoints, WidthPoints, FontSizePoints en logische Text
TXLSPortableCellGeometryEen gekopieerde rechthoek heeft XPoints, YPoints, WidthPoints en HeightPoints in de volledige layout
GetTextLine(Index), GetCellGeometry(Index)Zero-based geïndexeerde inspectie van voorbereide regels en opgeslagen cellen; ongeldige indices weigeren

Paginering clippt vaste afdrukgebiedstegels in across-then-down-volgorde; een cel of tekstfragment dat paginagrenzen overschrijdt verschijnt op elke snijdende pagina, zonder automatisch passend maken van hele cellen, herhaling van werkblafdruktitels of interpretatie van werkmap-pagina-instelling

Renderer-opties en grenzen

VeldenStandaardwaarden en betekenis
PageWidthPoints, PageHeightPoints595 op 842 punten
MarginLeftPoints, MarginTopPoints, MarginRightPoints, MarginBottomPoints36 punten elk; marges moeten een positieve afdrukbare rechthoek overlaten
CellPaddingPoints, RasterDPI2 punten en 96 DPI; DPI beïnvloedt PNG-afmetingen
MaxPages, MaxGlyphs, MaxLines256 pagina's, 2000000 gevormde glyphs en 200000 tekstregels
MaxLayoutBytes268435456 bytes voor begrensd layoutwerk en rasteroppervlaktecontroles
MaxOutputBytes268435456 bytes per gerenderde uitvoerbuffer, dekkend voor de volledige PDF of één SVG/PNG-pagina in plaats van de som van aparte pagina-bestanden
MaxFontBytes134217728 bytes over expliciete lettertype-invoerbestanden voor één layout
MaxShapedCharacters, MaxDrawOperations16000000 elk, begrenzend shapingwerk en tekenwerk per pagina-cel

Ongeldige of niet-eindige geometrie en niet-positieve werkbudgetten weigeren; pagina-afmetingen zijn afgekapt op 100000 punten en raster-DPI op 1200, met extra byte-, aantal- en rasteroppervlaktecontroles vóór rendering

De native procesbrede lettertypebyte-pool staat daarnaast hooguit 256 verschillende buffers en 256 MiB toe; exact identieke bytes mogen opslag delen, en capaciteit wordt pas vrijgegeven wanneer het werkelijke Cairo-eigen lettertypeface zijn buffer vrijgeeft

Geef elke layout vrij wanneer je klaar bent; de library reset geen gedeelde Cairo-caches, en een logisch voltooide layout kan lettertypebytes resident laten terwijl native Cairo nog een face beheert

Uitvoer schrijven en fouten afhandelen

SaveToStream(Stream, Format, PageIndex = 0) schrijft alle pagina's voor PDF en vereist PageIndex = 0; SVG en PNG schrijven de gekozen zero-based pagina

Snapshotserialisatie en native rendering voltooien in privé begrensde buffers vóór het kopiëren naar de doelstream; validatie- of renderfouten behouden die, maar een schrijffout in de stream van de aanroeper kan gedeeltelijke bytes achterlaten en volgt het eigen faalgedrag van die stream

Save(FileName, Format) schrijft één PDF-bestand of één SVG/PNG-bestand per pagina en geeft hun paden terug; bestandsnamen met meerdere pagina's krijgen -0001, -0002 en verdere achtervoegsels vóór de extensie

Bestaande bestands- of mapbestemmingen weigeren; elke opslag zet alle pagina's in staging, publiceert exclusieve nieuwe bestemmingen en ruimt zijn eigen gestage/gepubliceerde uitvoer op bij een fout

Het bestandssysteem moet de native exclusieve staging- en koppelingspublicatiebewerkingen ondersteunen; aparte PDF-, SVG- en PNG-opslagen zijn aparte bewerkingen en vormen geen gecombineerde transactie

Zelfstandige Linux-consumer

Tests/Portable/RenderPortableSnapshot.pas is een complete consumer die een snapshot laadt, één layout voorbereidt en alle drie de formaten opslaat; bouw hem op Linux met de draagbare units en native bibliotheken geïnstalleerd

fpc -Mdelphiunicode -Fu/path/to/HotXLS/Lib RenderPortableSnapshot.pas
./RenderPortableSnapshot report.hxrs /srv/output/report fonts.tsv 595 842 96

fonts.tsv is UTF-8-tekst met vier door tabs gescheiden velden per toewijzing: familiealias, absoluut Linux-lettertypepad, face-index en een van regular, bold, italic of 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

Gebruik werkelijk geïnstalleerde of door de toepassing geleverde lettertypebestanden en kies een nieuwe uitvoerbasis, want bestaande doelbestanden worden geweigerd; neem extra same-style-fallbacks op voor scripts die de eerste toewijzing niet dekt

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;

Gegroepeerde grafiekregistratie

XLSRecordCachedChartScene in lxPagination registreert de puntgebaseerde primitieven van de bestaande grafieklayout-renderer in een onveranderlijke draagbare scenerepresentatie; zijn bron moet een losgemaakte TXLSXChart zijn zonder beherend werkblad en zonder bewaarde native XML, dus registratie kan werkbladverwijzingen niet oplossen of werkmapcaches niet vernieuwen

De huidige subset ondersteunt kolom-, staaf-, lijn-, spreidings-, cirkel-, donut- en gewone éénreeks-oppervlaktegrafieken met één primaire plotgroep, eindige numerieke waardecaches en strikt oplopende begrensde cacheindices; spreidings-categoriecaches bevatten numerieke X-coördinaten, terwijl de andere families opgeslagen categorielabels gebruiken

Kolom-, staaf-, lijn- en oppervlakte-waardecaches moeten aaneengesloten zero-based indices hebben; schaarse categoriewaarde-gaten weigeren, en registratie vouwt ontbrekende indices nooit uit tot een grote array

Staafplots behouden horizontale geometrie en categorische labels; cirkel- en donutplots gebruiken categoriele legendas FirstSliceAng en HoleSize en laten numerieke assen weg, terwijl gewone éénreeks-oppervlakteplots een gevulde veelhoek rond de nul-basislijn behouden

Lijn- en spreidingsreeksen ondersteunen onafhankelijke lijnzichtbaarheid, expliciete RGB-kleur en puntdikte via LineVisible, LineColorRGB en LineWidthPoints; LineStyleSet, LineColorSet en LineWidthSet onderscheiden expliciete instellingen van overgeërfde standaardwaarden, en EffectiveLineVisible lost de bestaande alleen-opvulling-conventie voor reeksen op

Markers ondersteunen de automatische cirkel, een expliciete cirkel of geen marker; een expliciete MarkerSize van 2 tot en met 72 zet zijn puntdiameter, en MarkerFillSet en MarkerBorderSet onderscheiden een expliciete zwarte RGB-waarde van nul van automatische kleurkeuze; verbindende segmenten worden getekend vóór dekvolle datamarkers

Expliciete markerranden zonder opgeslagen breedte gebruiken de gewone lijn van 0,75 punt, terwijl legendasamples de cirkeldiameter afkappen op 6 punten; aangevraagde titellettertypen worden weggeschreven op de werkelijke rich-text-run én zijn standaardteksteigenschappen, zodat hun zichtbare grootte, kleur en nadruk behouden blijven wanneer Excel de grafiek exporteert

Niet-ondersteunde grafiekfamilies, gestapelde of meerdere-reeksen-oppervlakteplots, meerdere-reeksen-cirkelplots, galerijstijlen, afgeronde hoeken, secundaire of gecombineerde plotgroepen, datumassen, aangepaste getalnotaties, logaritmische assen, aangepast snijgedrag, gedraaide tekst, trendlijnen, foutbalken, hiërarchische categorieën, gegevenslabels, andere markervormen en ontbrekende waardecaches geven EXLSPortableRender vóór rendering

Aangepaste waarde-as-ticklettertypen, secundaire rasters, expliciete hoofd-/secundaire eenheden, ongeldige expliciete reekskleuren en niet-ondersteunde asposities weigeren; staaflegendes vereisen voorlopig de gewone plaatsing rechts, en cirkelplots vereisen een eindig niet-nul gegroepeerd totaal en begrensde geometrie met een vroege conservatieve reservering voor boogberekeningswerkgeheugen

De teruggegeven array behoudt primitieve tekenvolgorde, expliciete kleuren, lettertypen, tekstuitlijning, dekking en grafiek-clippinggrenzen; item-, byte- en tekstadministratie omvat conservatieve renderer-werkgeheugenreserveringen, en coöperatieve cachecontroles gaan aan de toewijzing van werkarrays vooraf

XLSValidateCachedChartSceneModel voert dezelfde begrensde cache- en uiterlijk-preflight uit op een model zonder werkbladcellen op te lossen; de XLSX-capture-brug gebruikt deze controle vóór het klonen en registreert ondersteunde geschreven grafiekmodellen met lokale eendimensionale A1-verwijzingen, fysieke native ankeroffsets, bereik-clipping en tekenvolgorde

De platformneutrale recorder staat in lxPortableChart; de bestaande lxPagination-ingangspunten delen dezelfde layout- en primitieve registratie-inhoud en behouden het gedrag van de Windows-renderer met matchende onveranderlijke scènebytes en budgetadministratie per ondersteunde familie

Native Workbook-capture op Linux en macOS gebruikt de hieronder beschreven expliciete geometrie-overload; geïmporteerde RGB-opvulling van reeksen, plotgebiedachtergrond, grafiekachtergrond en grafiekrand worden teruggehaald uit hun eigen namespace-opgeloste shape-eigenschappen zodat een geneste reekskleur de plotachtergrond niet kan overschrijven

Geïmporteerde bewaarde ChartML wordt alleen geaccepteerd wanneer zijn namespace-uitgebreide element-, attribuut- en significantetekststroom matcht met de ondersteunde getypeerde reconstructie; namespace-aliassen en attribuutvolgorde normaliseren, terwijl niet-gemodelleerde native extensies, vreemde attributen en niet-ondersteund uiterlijk conservatief weigeren

Rauwe XML- en reconstructie-werkbudgetten worden gecontroleerd vóór kloon- en projectiewerk; alleen de losgemaakte kopie wist zijn gevalideerde bewaarde XML, en de bron behoudt native metadata, celopslag, cache-inhoud en generatie

Capture doorloopt de onderliggende OfficeArt-tekenvolgorde, inclusief grafiekframes die ontbreken in de publieke Shapes-wrapper, en weigert een snijdend niet-ondersteund frame in plaats van het stilletjes weg te laten

Classic gegroepeerde grafieken met gedeclareerd uiterlijk

Classic BIFF8-capture ondersteunt de zeven gewone grafiekfamilies hierboven wanneer hun kernrecords, lokale opgeslagen waarden, expliciete lineaire schalen en uiterlijk representeerbaar zijn; hij leest behouden records en beschikbare formulecaches zonder formules te evalueren, schaarse opslag uit te vouwen of gecompileerde formuliebomen te klonen

Gebruik TXLSWorkbook.CreateReadOnlyViewWithChartAppearance(Source, Limits, Geometry) om een aparte alleen-lezen weergave te maken met een bevroren set TXLSClassicChartAppearanceDeclaration-waarden geleverd door IXLSClassicChartAppearanceSource; Geometry is optioneel op Windows en levert expliciete native lettertypemetingen op Linux of macOS

TXLSClassicChartAppearanceDeclarations is de dynamische array van primitieve declaraties die een toepassing kan gebruiken om die bron te implementeren

Geef die geconfigureerde weergave mee aan CaptureXLSPortableViewRenderSnapshot(View, SheetIndex, Row1, Col1, Row2, Col2, Limits); coördinaten zijn 1-based en de adapter herstelt het actieve werkblad van de aanroeper wanneer de capture eindigt of weigert

De gewone capture-ingangspunten blijven onopgeloste effectieve Classic-layout- of legenda-lettertypen weigeren; het aparte weergave-ingangspunt gebruikt de al bevroren declaraties en geometrieprovider

DeclaratielidContract
Generation, SheetIndex, ObjectIdDe vastgepinde werkmapgeneratie, 1-based werkbladindex en werkelijke opgeslagen grafiekobjectidentiteit; verouderde generaties, ontbrekende of herhaalde identiteiten en identiteiten die bij een ander object horen worden geweigerd
HasChartSize, ChartWidthPoints, ChartHeightPointsEen expliciete eindige positieve grafiekframegrootte in punten; hij behoudt de opgeslagen ankerorigin en tekenvolgorde, terwijl een false-vlag de van het anker afgeleide afmetingen houdt
HasPlotInnerRectangle, PlotInnerRectangleEen expliciete binnenste plotrechthoek zonder labels en astitels; hij is vereist voor dit pad met gedeclareerd uiterlijk
HasTitleRectangle, TitleRectangleEen expliciete titelrechthoek wanneer de grafiek een titel heeft; brontekst, lettertypefamilie, nadruk en kleur komen nog steeds uit gevalideerde kernrecords
HasLegendRectangle, LegendRectangleDe gedeclareerde legendagrenzen wanneer een legenda aanwezig is
HasLegendFontSize, LegendFontSizePointsDe expliciete effectieve puntgrootte van de aanroeper voor een aanwezige legenda; kernlettertypefamilie, nadruk en kleur worden behouden
TXLSPortableChartRectangleLeft, Top, Width en Height zijn eindige punten relatief aan het vastgelegde grafiekframe; actieve rechthoeken vereisen positieve afmetingen binnen dat frame
Count, GetCount, ReadDeclarationDe bron rapporteert een begrensd aantal en geeft één primitief record per zero-based index terug zolang de weergave is geconfigureerd; declaraties worden gekopieerd vóór latere capture

Deze waarden zijn door de aanroeper gedeclareerd uiterlijk, geen automatische Excel-layout of afgeleide lettertypeschaling; haal ze uit een onafhankelijk gecontroleerde bron of een door de toepassing gedefinieerde layout en beoordeel de uitvoer met de expliciete native lettertypetoewijzing die voor rendering wordt gebruikt

Expliciete frame-afmetingen en binnenste plotgrenzen moeten genoeg ruimte overlaten voor de gevalideerde aslabel-lettertypen; onvoldoende labelruimte weigert in plaats van tekst af te knippen of een passende schaalfactor toe te passen

Toepassingen houden de werkmapeigenaar in leven tot de weergave wordt vrijgegeven; de geleende weergave houdt een leeslease vast en behoudt de declaratiebron, terwijl de resulterende onveranderlijke snapshot noch de werkmap noch de provider vasthoudt

Ondersteunde kernprojectie omvat letterlijke effen opvullingen, zichtbare effen lijnen, cirkelmarkers, titel- en legendatekst, categorieplaatsing en begrensde expliciete numerieke ticks; automatische schalen, onopgelost automatisch marker-uiterlijk, afvlakking, onbekende rich-extensies, vreemde of niet-lineaire reeksverwijzingen en niet-representeerbare puntstijlen weigeren vóór uitvoer

Geometrie of een legendagrootte declareren machtigt niet het negeren van onbekende grafiekextensies of ongevalideerde stijlen; byte-, tekst-, opgeslagen-cel- en scenelimieten blijven gelden voor behouden brongegevens, declaraties, losgemaakte caches en registratiewerkgeheugen

De extra XLSValidateCachedChartSceneModel- en XLSRecordCachedChartScene-overloads accepteren TXLSCachedChartSceneAppearance voor een losgemaakt model; initialiseer het met XLSDefaultCachedChartSceneAppearance vóór het zetten van expliciete besturingselementen

De XLSReadClassicChartScene op lager niveau in lxClassicChartScene geeft een door de aanroeper beheerde losgemaakte TXLSXChart en primitief uiterlijk- en budgettellers terug vanuit een behouden TXLSCustomChart, zijn exacte broncalculator en een geleasede TXLSClassicChartSceneSource; geef het teruggegeven model vrij na registratie

TXLSClassicChartSceneSource.ReadAppearance levert een primitieve declaratie, ReadCell leest begrensde vastgepinde lokale opgeslagen waarden, ReadFont vult de meegegeven tekststijl met begrensde effectieve kernlettertypedata, en PaletteColor lost expliciete opgeslagen paletitems op; toepassingsimplementaties moeten de vastgepinde bron behouden en elke geleverde byte- en tekenquota naleven

Scène-uiterlijk-lidBetekenis
SeriesMarkerSizePointsBegrensde puntdiameters per reeks, inclusief gebroken waarden; nul houdt de markergrootte van het model aan en een niet-nul-overschrijving moet van 2 tot en met 72 punten zijn
OverrideBorder, BorderColorRGB, BorderWidthPointsExpliciet grafiekframe-contour-uiterlijk
AxisColorRGB, TickColorRGB, GridlineColorRGB, AxisWidthPoints, TickWidthPoints, GridlineWidthPointsExpliciete verf en puntbreedtes voor as, tick en hoofdraster
AreaFillOpacity, SeriesFillAlphaOppervlakte-dekking en reeksopvulling-alpha
UseAxisTickControls, CategoryBetweenGevalideerde expliciete asbesturingselementen en categorische plaatsing
TitleOffsetXPoints, TitleOffsetYPointsEindige offsets toegepast op de gewone titelpositie van de recorder
OverridePlotInnerRectangle, OverrideTitleRectangle, OverrideLegendRectangle, PlotInnerRectangle, TitleRectangle, LegendRectangleLetterlijke puntrechthoeken relatief aan het grafiekframe
PieRadiusRatioCirkelplot-straal als begrensde fractie van de kleinste plotdimensie

Grafiekprimitieven volgen het bestaande layoutbeleid van HotXLS; grafiekgalerij-uiterlijk dat de niet-gemodelleerde standaardwaarden van Excel vereist blijft een expliciete niet-ondersteunde grens

Directe native werkmap-capture

CreateXLSPortableCairoRenderGeometry(Fonts, Calibration, Generation, Backend, Options, CacheCapacity) geeft een IXLSRenderGeometry terug die wordt ondersteund door dezelfde expliciete lettertypebestanden, FreeType, HarfBuzz en tekstshaping als de native uitvoer; kolombreedtes gebruiken de werkelijk gemeten maximale cijferbreedte met de werkmapcalibratie

De provider is eigenaar van losgemaakte lettertypebytes en een begrensde metriccache, controleert lettertype- en layoutbudgetten vóór toewijzing en valideert meetverzoeken vóór het wijzigen van gegecachte status; een volle cache kan ongecachte metingen teruggeven zonder boven zijn capaciteit uit te groeien

Capture controleert dat de providergeneratie en alle calibratievelden matchen met de actuele alleen-lezen werkmapweergave, behoudt de provider voor die weergave en laat de standaard geometriefabriek van de werkmap onveranderd; gewone standaard native geometrie blijft een expliciete GDI-grens

Leg de generatie vast via een expliciet vrijgegeven weergave vóór het aanmaken van de provider; het vasthouden van een tijdelijk interfaceresultaat kan zijn leeslease vasthouden tot de omliggende scope eindigt

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 consumers compileren met LX_PORTABLE_CORE en de bijbehorende native afhankelijkheden; Windows-aanroepen naar de native Cairo-geometriefabriek worden expliciet geweigerd, terwijl Windows-capture zijn bestaande geometriefabriek kan gebruiken via dezelfde scope-overloads

Werkelijke native capture ondersteunt de hierboven beschreven gemodelleerde scalaire, rich-text, ondersteunde raster-, gewone shape- en zeven gegroepeerde grafiekfamilies; grafiekcapture behoudt de oorspronkelijke geïmporteerde ChartML, gegroepeerde punten, schaarse celopslag, packed storage en de werkmapgeneratie

Voor onveranderlijke afdrukbereiken, marges, passend of percentages schalen, herhaalde titels, handmatige einde pagina's en paginering van hele cellen of samengevoegde cellen, zie draagbare afdrukplannen

Geavanceerde capture-brug

IXLSRenderCaptureSource in lxSemanticSnapshot is de interne coördinatie-interface die wordt geïmplementeerd door ondersteunde alleen-lezen werkmapweergaven; gewone toepassingen roepen de capture-overloads op eigenaarsbasis aan

TXLSClassicReadOnlyWorkbookView en TXLSXReadOnlyWorkbookView implementeren IXLSRenderCaptureSource, inclusief de acht rendermethoden hieronder; deze klassen coördineren capture via alleen-lezen weergaven, en de adapter beheert hun levensduur terwijl toepassingen hun werkmapeigenaarsinterface vasthouden en CaptureXLSPortableRenderSnapshot aanroepen

Hun bestaande TryReadCell-methode levert een opgeslagen-cel-snapshot via de alleen-lezen weergave; de rendermethoden voegen losgemaakt uiterlijk en geometrie toe voor draagbare capture

Lid of helperDoel
ValidateRenderRangeControleert 1-based rechthoekgrenzen en voetprinten van niet-ondersteund uiterlijk vóór capture
ReadRenderStyleGeeft losgemaakte TXLSSemanticCellStyle-metadata en een rich-text-aanwezigheidsvlag terug voor een 1-based cel
IXLSRenderRichTextCaptureSource, ReadRenderRichTextOptionele weergave-uitbreiding die begrensde losgemaakte TXLSRenderTextRuns teruggeeft; elke TXLSRenderTextRun bevat Text en een effectieve semantische Style, met gebruik van de meegegeven basisstijl en positieve run-/bytequota zonder cellen te materialiseren of stijlpools te wijzigen
RenderRowHeightPoints, RenderColumnWidthPointsGeven fysieke geometrie terug en vouwen verborgen afmetingen samen tot nul
IXLSRenderGeometryCaptureSource, SetRenderCaptureGeometryOptionele weergave-uitbreiding die een expliciete provider pas vasthoudt na generatie- en calibratievalidatie; ongeldige providers laten de vastgehouden weergaveprovider onveranderd
ReadRenderMergeRapporteert de volledige inclusieve 1-based samengevoegde rechthoek die een cel bevat
ResolveRenderColorLost semantisch thema-/geïndexeerde/RGB-uiterlijk op naar een draagbare RGB-kleur, met gebruik van de meegegeven standaardwaarde waar ondersteund
RenderDate1904, RenderRightToLeftStellen werkmap-datasysteem- en bladleesvolgorde-context bloot
XLSRenderCaptureLiteralHerkent de ondersteunde subset van letterlijke Booleans, eindige getallen of eenvoudig gequote tekst voor capture zonder evaluatie
XLSRenderCaptureIntersectsToetst door witruimte gescheiden lokale A1-bereiken aan een 1-based rechthoek en weigert onopgeloste bereiksyntaxis
XLSRenderCaptureConditionEvalueert de ondersteunde conditiesubset tegen een bestaande scalair; vergelijkingsoperatorcodes 1 tot en met 8 betekenen tussen, niet-tussen, gelijk, niet-gelijk, groter, kleiner, groter-of-gelijk en kleiner-of-gelijk
XLSRenderCaptureApplyDxfPast ondersteund losgemaakt differentieel uiterlijk toe met een AppliedSlots-masker om hogere-prioriteit-opmaak te behouden
TXLSDxfStyle._MarkRenderUnsupportedAppearance, TXLSDxfStyle._HasRenderUnsupportedAppearanceImportcoördinatie-methoden met intern prefix die uiterlijk registreren en inspecteren dat het getypeerde differentiële model niet veilig kan renderen; Assign behoudt de marker, en capture weigert een gemarkeerde matchende stijl

Deze brughelpers kunnen EXLSSemanticSnapshot geven; de publieke capture-adapter vertaalt die exception naar EXLSPortableRender