HotXLS-dokumentation / API-referens

Portabel headless-utmatning

Finns sedan version 2.384.100 som en avgränsad utdatapipeline med uttryckliga inspelnings- och renderings-API:er

Spela in ett stödt område från en Classic XLS- eller XLSX-arbetsbok i Windows, överför dess oföränderliga ögonblicksbild och rendera PDF, SVG eller PNG på Linux eller macOS med Free Pascal och inbyggd Cairo

Inspelningsadaptern använder arbetsboksmotorn; Windows-inspelning använder sin standardgeometritjänst, medan inbyggd Linux- och macOS-inspelning kan tillhandahålla en uttrycklig FreeType/HarfBuzz-geometritjänst som backas upp av programvalda typsnittsfiler

Den separata inbyggda konsumenten accepterar lxPortableRender-scener via lxPortableCairo, utan Excel eller en skrivbordssession; dess geometri-API använder också de befintliga portabla enheterna för arbetsboksvyer och renderingsgeometri

Konsumenten accepterar en oföränderlig scen eller överföringsström; plattformskraven för att läsa in och beräkna arbetsböcker beskrivs separat i Free Pascal-stöd

Spela in en rektangel ur en befintlig arbetsbok

CaptureXLSPortableRenderSnapshot i lxPortableWorkbookCapture accepterar en IXLSWorkbook eller IXLSXWorkbookOwner, med uttryckliga eller standard TXLSPortableRenderLimits; två ytterligare överladdningar accepterar uttryckliga gränser följt av en IXLSRenderGeometry-leverantör avgränsad till inspelningsvyn

SheetIndex och inklusiva Row1, Col1, Row2, Col2 är ettbaserade; den resulterande ögonblicksbilden lagrar nollbaserade positioner relativt den inspelade rektangeln

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.

Håll ägarinterfacet vid liv medan arbetsboksobjektet används; släpp interfacet i stället för att manuellt frigöra en gränssnittsägd arbetsbok

För Classic XLS, använd TXLSWorkbook och IXLSWorkbook från lxHandle med samma inspelningsanrop

Inspelningen läser befintliga formelcacher och avslår varje formel i rektangeln utan cache; den omberäknar aldrig implicit, hämtar aldrig externa data och registrerar aldrig nya format i källarbetsboken

Omberäkna uttryckligen före inspelningen när programmet behöver färska formelresultat; en befintlig cache renderas som lagrad, så inspelningen intygar inte dess färskhet

Åtgärden håller en läsvy och kontrollerar arbetsbokens generation innan den returnerar; dess returnerade ögonblicksbild är fristående från arbetsboksägarskapet och förblir användbar efter att arbetsboken släppts

Utseende och inspelningsgränser

Ögonblicksbilden innehåller formaterad visningstext, fysiska mått i punkter, uppslagna RGB-färger, stödda celltypsnitt och justeringar, fyllningar, ramar och kompletta sammanslagna rektanglar; dolda rader och kolumner har storlek noll

Stödt typsnittsutseende omfattar fet, kursiv, enkel understrykning och genomstrykning; stött cellutseende omfattar helfärgade fyllningar, vänster/centrerad/höger horisontell justering, överst/centrerad/nederst vertikal justering, radbrytning, krympning och höger-till-vänster-läsordning

Tunna, medeltjocka, tjocka, hårbredds-, dubbla, prickade, streckade och medelstreckade arbetsboksramar mappas till de portabla ramstilarna och punktbredderna; andra ramstilar avslås

Stödd rich text bär effektiva run-typsnitt, punktstorlekar, RGB-färger, fet, kursiv, enkel understrykning, genomstrykning samt run-nivå upphöjt eller nedsänkt; vanliga cellkontur-/skugg-/vertikala typsnittseffekter, understrykningsstilar som inte stöds, gradient- eller mönsterfyllningar, diagonala ramar, indrag, textrotation och justeringar som inte stöds avslås

En inspelningsrektangel måste innehålla varje sammanslagen cell helt; klippta, överlappande eller inkonsekventa sammanslagningar samt inkompatibla format längs en sammanslagen ytterkant avslås

Bladbakgrunder och bladtyper som inte stöds avslår inspelningen; PNG/JPEG-bilder som stöds och vanliga rektangel-/ellipstextformer i båda arbetsboksfasaderna spelas in som ordnade scenobjekt, tillsammans med XLSX-cellbilder, Boolean-kryssrutor och den stödda delmängden cachade XLSX-diagram som beskrivs nedan; diagram, formförinställningar, WordArt, grupperade transformationer, svävande kontroller, Slicers, Timelines och sparklines som inte stöds avslås när deras uppslagna fotavtryck skär rektangeln

Innehåll som inte stöds men har ett pålitligt uppslaget fotavtryck utanför rektangeln kan samexistera med inspelningen; ett olösbart ritningsfotavtryck avslås i stället för att tyst utelämna potentiellt överlappande innehåll

Classic-tabellformatering som skär rektangeln avslås; inbyggda XLSX-tabeller och stödda anpassade Table-sektioner slås upp i fristående formatkontext, med sektionsstora ränder och direkta cellformatsöverskrivningar

För stödda importerade Table-helfärgade eller implicita differentiella fyllningar ger RGB bgColor den synliga bakgrunden; enbart RGB fgColor lämnar den ärvda bakgrunden oförändrad, och en sektion med båda färgerna använder sin bakgrundsfärg

Importerade Table-sektioner som innehåller utseende som den typade sammanfattningen inte kan representera avslås när den sektionen gäller, inklusive understrykning, talformat, uttryckligen rensad fet/kursiv, typsnittsscheman, ett uttryckligt utan-fyllnad-mönster och färgformer som inte stöds; en orelaterad sektion utanför den inspelade rektangeln blockerar inte inspelningen

Stödd villkorsformatering tillämpas utan formelutvärdering: cachade numeriska eller datumsjämförelser mot literal numeriska gränser, literal Boolean- eller numeriska uttryck, regler för textinnehåll/prefix/suffix, tomma värden och fel; utseende med högre prioritet vinner per stödd egenskap, och XLSX StopIfTrue stoppar matchande regler med lägre prioritet

Classic-textregler kräver en literal söksträng och matchar cachade strängceller; XLSX-textregler använder sina lagrade textkriterier

Stödt differentiellt utseende omfattar uppslagna temafärger med tint och vanliga indexfärger; importerade automatiska färger, icke-tema-tint, en differentiell fyllning med både förgrunds- och bakgrundsfärger samt ramar, justeringar, genomstrykning eller annat differentiellt utseende som inte stöds eller inte kan representeras avslås när den matchande regeln gäller

Villkorsformler som kräver utvärdering, aggregerings- eller datumberoende regler, färgskalor, datastaplar och ikonuppsättningar avslås där de påträffas; antalet överlappande regler för villkorsformatering är avgränsat

Date1904-konverteringen väljer den tillämpliga råa talformatsektionen innan kalenderoffseten tillämpas; inaktiva kalendersektioner ändrar inte vanlig numerisk visning, och Boolean-värden förblir Boolean

En vald Date1904-kalendersektion i kombination med formatvillkor eller konstruktioner för förfluten tid avslås; citerade eller eskapade sektionsseparatorer avslås också, och den här gränsen blockerar inte en vald vanlig numerisk sektion bara för att en annan sektion är ett kalenderformat

Rich text och ordnade ritningsscener

TXLSPortableCell.RichText är en matris av TXLSPortableTextRun-poster som innehåller Text, FontFamily, FontSizePoints, FontStyles, ColorRGB och BaselineShiftPoints; sammanfogad run-text måste exakt motsvara cellens visningstext

XLSX-runs ärver utelämnade egenskaper från det effektiva inspelade celltypsnittet, inklusive stödd tabell- och villkorsformatering; uttryckligen tilldelade falska flaggor och uttryckliga none-/baseline-/automatiska färgvärden åsidosätter arvet

Inbyggda delade strängar och inline-strängar bevarar run-gränser och blanksteg; inbyggda typsnittsbarn, attribut, namnområden, tema-/indexerade rich-färger och fonetiska anteckningar som inte stöds avslås i stället för att tyst tappa synligt utseende

Classic-runs slår upp sina lagrade BIFF-typsnittsindex till fullständiga effektiva run-typsnitt; fonetisk metadata och run-typsnitt som inte stöds avslås, och inspelningen behåller arbetsboksgeneration och formatpooler

Classic-textformer läser befintliga OfficeArt-egenskaper och TXO-typsnittsruns utan att skapa ritningsomslag eller ändra arbetsboken; ankare använder verkliga rad-/kolumnmått och offset, stödda helfärgade fyllningar och konturer behåller sina färger och bredder, och inbäddade PNG/JPEG-byte friställs före överföringen

Rektangeltext använder de inbyggda marginalerna 7,2 pt horisontellt och 3,6 pt vertikalt; ellipstext använder dessutom sin inskrivna textruta och håller vanlig text inom formkonturen i båda arbetsboksfasaderna

Importerade Classic-rektangel- och ellipscontainrar behåller sin typade text och formatering; överhoppad inbyggd form- eller grupmetadata utan uppslaget fotavtryck avslår inspelningen uttryckligen, medan okända objektslutsposter, ritningstillägg, rotation, icke-helfärgade fyllningar och linjestilar som inte stöds avslår ett skärande objekt

Importerade XLSX-tvåcellsankare för rektangel och ellips stöder uttryckliga RGB-helfärgade fyllningar med alfa, helfärgade eller streckade/prickade konturer, fysiska ankars-offset samt ett enda vanligt rich text-stycke; varje run behåller sin effektiva typsnittsfamilj, punktstorlek, färg, fet, kursiv, enkel understrykning och genomstrykning, inklusive uttryckliga fet- eller kursivåterställningar

Den importerade formläsaren reserverar rå XML-arbetslagring före tolkningen och kontrollerar objekt-, byte- och textbudgeter samarbetsvilligt; den behåller arbetsbokens ritordning och läsleases utan att skapa formmodeller eller frånvarande celler

Okända inbyggda formegenskaper, effekter, teman, rotationer, grupperade transformationer, flera stycken och ankartyper som inte stöds avslås uttryckligen; ett uppslaget ostödt fotavtryck utanför inspelningsrektangeln blockerar inte det begärda området

Run-nivå upphöjt och nedsänkt använder två tredjedelar av run-typsnittets storlek och en baslinjeförskjutning på en tredjedel av dess ursprungliga punktstorlek; en formatgräns som delar ett Unicode-formningskluster, eller en CRLF-sekvens som korsar inkompatibla run-gränser, avslås under inbyggd layout

TXLSPortableSceneObject bär en Kind, punktbaserad X, Y, Width, Height, klippningsrektangel, fyllnings-/konturfärger och opacitet, valfria banpunkter, textcell eller kodade rasterbyte och dimensioner

TXLSPortableSceneKind innehåller xpskRectangle, xpskEllipse, xpskPolyline, xpskPolygon, xpskText, xpskPNG och xpskJPEG; matrisordningen är ritordningen, där senare objekt täcker tidigare objekt

Den ytterligare överladdningen CreateXLSPortableRenderSnapshot accepterar en TXLSPortableSceneObjects-matris; fråga IXLSPortableRenderSceneSnapshot efter nollbaserade Objects och ObjectCount, vars getters returnerar friställda kopior inklusive run-, punkt- och rastermatriser

Cellbilder och kryssrutebanor föregår svävande ritningar; svävande ritningar behåller arbetsboksordning, fysiska ankare och visningsportklippning, och textformer använder det mindre temats typsnitt vid 11 punkter med 7,2 punkters horisontella och 3,6 punkters vertikala textmarginaler

PNG- och JPEG-bilder avkodas inbyggt efter preflight av huvud, bildpunktsstorlek och byte; stödda svävande bilder behåller transparens och sträckgeometri, medan cellbilder passas in i cellen eller den kompletta sammanslagna rektangeln med sina bildförhållanden bevarade

Beskärning, rotation, skuggor, luminans/gamma-justering, kakelplacering, SVG-följeslagare och live-kamerabindningar förblir ostödda; bevarad bild-XML valideras mot det stödda utseendet, så dolda bilder, okänd nästlad metadata, främmande namnområdesegenskaper, icke-rektangulär bildgeometri och omodellerade transformationer avslås bara när deras fotavtryck överlappar inspelningen

Booleska cellkryssrutor använder en temaneutral vektorruta och en valfri bockmarkering, inklusive effektiva kontroller som ärvs från rad- och kolumnformat; den begärda cellgenomgången avgränsas före traverseringen, andra kontrolletyper samt tomma eller icke-Booleska kryssrutevärden avslås, och stödda cellscener undertrycker skalär Boolean- eller bildfel-fallbacktext

En kryssrutestandard är inmatningsmetadata och framställer ingen Boolean för en frånvarande cell; uttrycklig rensning av en direktcellkontroll maskerar en ärvd kontroll, medan inspelningsläsningar bevarar gles frånvaro och arbetsboksgenerationen

XLSReadPortableImageDimensions validerar en avgränsad PNG IHDR eller en stödd åttabitars sekventiell/progressiv JPEG-ram och returnerar dess deklarerade bredd och höjd; avkodningen förblir renderarens ansvar

IXLSPortableSceneCaptureSource.ReadPortableSceneObjects använder ettbaserade arbetsbokskoordinater och punktbaserade scenkoordinater relativt området, validerar området och de samarbetsvilliga gränserna och returnerar förbrukade byte-, text- och objekträkningar; HasPortableCellScene identifierar celler vars skalära visning ersatts av deras inspelade scen

I den inbyggda layouten räknar CellCount rutnätsceller och LineCount inkluderar också textscenobjekt; en textobjektlinjes CellIndex är CellCount plus dess nollbaserade sekvens bland textscenobjekt, medan GetCellGeometry fortfarande är begränsad till rutnätsceller

Skalära ögonblicksbilder serialiseras fortfarande som HXRSNP01; ögonblicksbilder med runs eller scenobjekt serialiseras som HXRSNP02, och inläsaren accepterar båda versionerna med samma kontrakt för oföränderligt ägarskap och indatapositionsrullback

Den kombinerade objektbudgeten räknar lagrade celler, rich-runs, scenobjekt och banpunkter; bytegränserna tar hänsyn till mellanlagrade och friställda matriser, text, kodade raster-nyttolaster och avgränsad granskning av inbyggd metadata före allokeringen

Portabelt ögonblicksbilds-API

SymbolKontrakt
EXLSPortableRenderUndantag som utlöses för ogiltiga ögonblicksbildsdata, inspelningsutseende som inte stöds, otillgänglig inbyggd backend, resursgränser eller renderingsfel
TXLSPortableFontStyle, TXLSPortableFontStylesxpfsBold, xpfsItalic, xpfsUnderline och xpfsStrikeout, kombinerade som en mängd
TXLSPortableHorizontal, TXLSPortableVerticalxphLeft, xphCenter, xphRight och xpvTop, xpvCenter, xpvBottom
TXLSPortableBorderStyle, TXLSPortableBorderxpbsNone, xpbsSolid, xpbsDashed, xpbsDotted och xpbsDouble; varje ram bär Style, WidthPoints och ColorRGB
TXLSPortableCellNollbaserad Row/Column, positiv RowSpan/ColumnSpan, visning Text, FontFamily, FontSizePoints, FontStyles, TextColorRGB, FillColorRGB, HasFill, WrapText, ShrinkToFit, RightToLeft, Horizontal, Vertical samt fyra poster LeftBorder/TopBorder/RightBorder/BottomBorder
TXLSPortableCells, TXLSPortableSizesDynamiska matriser med lagrade celler och fysiska rad-/kolumnstorlekar i punkter
TXLSPortableRenderLimitsMaxGridCells, MaxStoredCells, MaxBytes och MaxTextCharacters avgränsar konstruktion, inspelning och serialisering
XLSDefaultPortableRenderLimitsReturnerar 2000000 rutnätsceller, 2000000 lagrade celler, 67108864 byte och 16777216 UTF-16-texttecken
XLSDefaultPortableCellInitierar ett encells spann med Calibri vid 11 punkter och standardutseende med nollvärden; sätt dess position och önskade utseende före konstruktionen
CreateXLSPortableRenderSnapshotValiderar och kopierar generation, radhöjder, kolumnbredder och lagrade celler till ett fristående oföränderligt gränssnitt; celler måste vara unika, i radordning (row-major), inom gränserna och ha överlappningsfria spann
IXLSPortableRenderSnapshotSkrivskyddad Generation, RowCount, ColumnCount, CellCount, nollbaserade RowHeightPoints, ColumnWidthPoints och kopierade Cells-poster
Ögonblicksbildens getter-metoderGetGeneration, GetRowCount, GetColumnCount, GetCellCount, GetRowHeight, GetColumnWidth och GetCell exponerar samma värden; ogiltig indexerad åtkomst utlöser ett undantag
SaveXLSPortableRenderSnapshotValiderar och serialiserar en ögonblicksbild till en avgränsad privat buffert och kopierar sedan den kompletta HXRSNP01- eller HXRSNP02-nyttolasten till den angivna strömmen vid dess aktuella position
LoadXLSPortableRenderSnapshotLäser den versionsmärkta little-endian-ögonblicksbilden med strikt UTF-8-text, validerar räkningar, geometri, format och spann och avslår efterföljande data; fel återställer indataströmmens position

Alla gränser måste vara positiva; det validerade maxvärdet är 2000000 rutnäts-/lagrade celler, 1073741824 byte och 268435456 texttecken, med mått på högst 1048576 rader gånger 16384 kolumner

MaxGridCells räknar hela rektangeln, inklusive icke lagrade tomma celler; CellCount räknar lagrade synliga celler och sammanslagna ankare och kan vara mindre

Generation registrerar källgenerationen eller ett programtillhandahållet värde; den är metadata i stället för en aktiv länk till en arbetsbok eller en automatisk färskhetskontroll

Inbyggd rendering och uttryckliga typsnitt

XLSPortableCairoBackendAvailable rapporterar tillgängligheten för den kompilerade inbyggda backenden; inbyggd utmatning kräver Free Pascal på Linux eller macOS, med biblioteken Cairo, FreeType, HarfBuzz och FriBidi tillgängliga för processen

macOS-byggen länkar de fyra inbyggda biblioteken uttryckligen; ett privat beroendeprefix och en uttrycklig sökväg för underprocessens inläsare kan tillhandahålla dem utan att delade kompilatorinställningar eller shellprofiler ändras

Windows Delphi XE5, Win32 och Win64 kan kompilera de portabla gränssnitten och använda ögonblicksbildsserialisering, men förberedelse av inbyggd Cairo-layout rapporterar backend-otillgänglighet där

Skicka en uttrycklig typsnittskedja till PrepareXLSPortableCairoLayout; renderaren provar först matchande familj och fet/kursiv stil, sedan fallbacks med samma stil i angiven ordning, och kräver glycktäckning för varje stödd textkluster

Tillhandahåll de faktiska regular-, bold-, italic- och bolditalic-filer som det inspelade innehållet kräver; ingen systemtypsnittsidentifiering eller syntetisk fet/kursiv-ersättning sker, och saknade filer, stilmappningar eller glycktäckning avslås

Typsnittsbyte spelas in före formningen, så en filändring påverkar senare layouter medan en befintlig layout behåller sina inspelade byte; FaceIndex väljer det icke-negativa snittet i en typsnittsfil eller samling

Inbyggda åtgärder serialiseras för FreeType-snättsäkerhet; oföränderliga ögonblicksbilder och granskning av förberedd layout kräver ingen aktiv arbetsbok

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

Här är Calibri ett uttryckligt familjealias för den valda filen, vilket möjliggör en programstyrd typsnittsmappning; granska utdatamått vid mappning till ett annat typsnitt

Renderaren stöder hårda radbrytningar, tabbexpansion med fyra blanksteg, styckesvis bidirektionell ordning, formade ligaturer och kombineringstecken, girig radbrytning och krymp-för-att-passa; radbrytning har företräde framför krympning

Radbrytningen bevarar de implementerade klustergränserna för kombineringstecken, variationsväljare, ZWJ och virama samt föredrar blanksteg och ideografiska blanksteg; den är inte en komplett implementering av UAX #29-grafemer eller Unicode-radbrytningsalgoritm, och radbrytningsgränser för regionala indikatorer och Hangul-Jamo garanteras inte

Typsnittsstorlekar löses upp till 1/64 punkt och text klipps till cellgränserna; PDF bäddar in uttryckliga typsnitt med logiska textmappningar, SVG använder vektorglyfbanor, och PNG ritar samma positionerade glyfer vid begärd DPI

Förbered och granska en layout

SymbolKontrakt
TXLSPortableFontFile, TXLSPortableFontFilesEn uttrycklig mappning innehåller FamilyName, FileName, FaceIndex, Bold och Italic; den dynamiska matrisen är ordnad och innehåller mellan 1 och 64 mappningar
TXLSPortableCairoFormat, TXLSPortableOutputFilesxpcfPDF, xpcfSVG eller xpcfPNG, samt en matris med utdatafilnamn som returneras av filsparandet
TXLSPortableCairoOptionsSidbredd/höjd, fyra marginaler, cellutfyllnad och raster-DPI, plus gränser för sidor, glyfer, rader, layout, utdata, typsnitt, formning och ritning
XLSDefaultPortableCairoOptionsInitierar varje alternativ med avgränsade standardvärden; använd den före överskrivning av enskilda fält
PrepareXLSPortableCairoLayoutValiderar och kopierar en ögonblicksbild, spelar in uttryckliga typsnittsbyte och returnerar en ägd förberedd TXLSPortableCairoLayout; frigör den med Free
TXLSPortableCairoLayoutExponerar PageCount, LineCount, CellCount, GetTextLine, GetCellGeometry, SaveToStream, Save och Destroy
TXLSPortableTextLineInfoEn kopierad radpost har CellIndex, GlyphCount, XPoints, BaselinePoints, WidthPoints, FontSizePoints och logisk Text
TXLSPortableCellGeometryEn kopierad rektangel har XPoints, YPoints, WidthPoints och HeightPoints i den fullständiga layouten
GetTextLine(Index), GetCellGeometry(Index)Nollbaserad indexerad granskning av förberedda rader och lagrade celler; ogiltiga index avslås

Sidnumreringen klipper fasta utskriftsområdesplattor i över-först-sedan-ned-ordning; en cell eller ett textfragment som korsar sidgränser visas på varje skärande sida, utan automatisk helcellsanpassning, upprepning av kalkylbladets utskriftsrubriker eller tolkning av arbetsbokens sidinställningar

Renderaralternativ och gränser

FältStandardvärden och betydelse
PageWidthPoints, PageHeightPoints595 gånger 842 punkter
MarginLeftPoints, MarginTopPoints, MarginRightPoints, MarginBottomPoints36 punkter var; marginalerna måste lämna en positiv utskriftsbar rektangel
CellPaddingPoints, RasterDPI2 punkter och 96 DPI; DPI påverkar PNG-måtten
MaxPages, MaxGlyphs, MaxLines256 sidor, 2000000 formade glyfer och 200000 textrader
MaxLayoutBytes268435456 byte för avgränsat layoutarbete och kontroller av rasterytor
MaxOutputBytes268435456 byte per renderad utdatabuffert, som täcker hela PDF:en eller en SVG/PNG-sida i stället för summan av separata sidfiler
MaxFontBytes134217728 byte över uttryckliga typsnittsindatafiler för en layout
MaxShapedCharacters, MaxDrawOperations16000000 vardera, som avgränsar formningsarbete och ritningsarbete per sida och cell

Ogiltig eller icke-ändlig geometri samt icke-positiva arbetsbudgeter avslås; sidmåtten är taklagda vid 100000 punkter och raster-DPI vid 1200, med ytterligare kontroller av byte, antal och rasterområde före renderingen

Den inbyggda processomfattande typsnittsbyte-poolen tillåter dessutom högst 256 olika buffertar och 256 MiB; exakt identiska byte får dela lagring, och kapaciteten frigörs först när det faktiska Cairoägda typsnittssnittet släpper sin buffert

Frigör varje layout när den är klar; biblioteket återställer inte delade Cairo-cacher, och en logiskt färdig layout kan lämna typsnittsbyte kvar i minnet medan inbyggd Cairo fortfarande äger ett snitt

Skriv utdata och hantera fel

SaveToStream(Stream, Format, PageIndex = 0) skriver alla sidor för PDF och kräver PageIndex = 0; SVG och PNG skriver den valda nollbaserade sidan

Ögonblicksbildsserialisering och inbyggd rendering fullbordas i privata avgränsade buffertar innan kopiering till målströmmen; validerings- eller renderingsfel bevarar den, men ett skrivfel i uppringarens ström kan lämna partiella byte och följer den strömmens eget felbeteende

Save(FileName, Format) skriver en PDF-fil eller en SVG/PNG-fil per sida och returnerar deras sökvägar; flersidiga filnamn infogar -0001, -0002 och efterföljande suffix före filändelsen

Befintliga fil- eller katalogmål avslås; varje sparande mellanlagrar alla sidor, publicerar exklusiva nya mål och tar bort sina egna mellanlagrade/publicerade utdata vid fel

Filsystemet måste stödja de inbyggda operationerna för exklusiv mellanlagring och länkpublicering; separata PDF-, SVG- och PNG-sparningar är separata åtgärder och bildar ingen kombinerad transaktion

Fristående Linux-konsument

Tests/Portable/RenderPortableSnapshot.pas är en komplett konsument som läser in en ögonblicksbild, förbereder en layout och sparar alla tre formaten; bygg den på Linux med de portabla enheterna och inbyggda biblioteken installerade

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

fonts.tsv är UTF-8-text med fyra tabbseparerade fält per mappning: familjealias, absolut Linux-typsnittssökväg, snittindex och en av regular, bold, italic eller 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

Använd faktiska installerade eller programtillhandahållna typsnittsfiler, och välj en ny utdatabas eftersom befintliga målfiler avslås; inkludera ytterligare fallbacks med samma stil för skrifter som den första mappningen inte täcker

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;

Cachad diagraminspelning

XLSRecordCachedChartScene i lxPagination spelar in den befintliga diagramlayoutrenderarens punktbaserade primitiver till en oföränderlig portabel scerepresentation; dess källa måste vara en fristående TXLSXChart utan ägande kalkylblad och utan bevarad inbyggd XML, så att inspelningen inte kan slå upp kalkylbladsreferenser eller uppdatera arbetsbokscacher

Den aktuella delmängden stöder kolumn-, stapel-, linje-, punkt-, cirkel- och ringdiagram samt vanliga områdesdiagram med en enda serie, med en primär plottgrupp, ändliga numeriska värdecacher och strängt stigande avgränsade cacheindex; punktdiagrammens kategoricacher innehåller numeriska X-koordinater, medan de andra familjerna använder lagrade kategorieetiketter

Värdecacher för kolumn, stapel, linje och område måste ha sammanhängande nollbaserade index; glesa kategorivärdsgap avslås, och inspelningen expanderar aldrig saknade index till en stor matris

Stapelplottar behåller horisontell geometri och kategorieetiketter; cirkel- och ringplottar använder kategorilegendrar, respekterar FirstSliceAng och HoleSize samt utelämnar numeriska axlar, medan vanliga områdesplottar med en enda serie behåller en fylld polygon runt nollbaslinjen

Linje- och punktserier stöder oberoende linjesynlighet, uttrycklig RGB-färg och punktbredd via LineVisible, LineColorRGB och LineWidthPoints; LineStyleSet, LineColorSet och LineWidthSet skiljer uttryckliga inställningar från ärvda standardvärden, och EffectiveLineVisible löser upp den befintliga konventionen med endast-fyllnad-serier

Markörer stöder den automatiska cirkeln, en uttrycklig cirkel eller ingen markör; en uttrycklig MarkerSize från 2 till 72 sätter dess punktdiameter, och MarkerFillSet och MarkerBorderSet skiljer ett uttryckligt svart RGB-värde på noll från automatiskt färgval; förbindande segment målas före ogenomskinliga datamarkörer

Uttryckliga markörramar utan lagrad bredd använder den vanliga linjen på 0,75 punkt, medan legendrexempel begränsar cirkeldiametern till 6 punkter; begärda titeltypsnitt skrivs på det faktiska rich text-runet såväl som dess standardegenskaper för text, vilket behåller synlig storlek, färg och betoning när Excel exporterar diagrammet

Diagramfamiljer som inte stöds, staplade områdesplottar eller med flera serier, cirkelplottar med flera serier, gallerstilar, rundade hörn, sekundära eller kombinerade plottgrupper, datumaxlar, anpassade talformat, logaritmiska axlar, anpassat korsningsbeteende, roterad text, trendlinjer, felfält, hierarkiska kategorier, dataetiketter, andra markörformer och saknade värdecacher utlöser EXLSPortableRender före renderingen

Anpassade typsnitt för värdeaxeltick, underordnade rutnät, uttryckliga huvud-/underenheter, ogiltiga uttryckliga seriefärger och axelpositioner som inte stöds avslås; stapellegendrar kräver för närvarande den vanliga högerplaceringen, och cirkelplottar kräver en ändlig icke-noll cachad total och avgränsad geometri med en tidig konservativ reservation för arbetslagring av bågar

Den returnerade matrisen behåller primitiv ritordning, uttryckliga färger, typsnitt, textjustering, opacitet och diagramklippningsgränser; objekt-, byte- och texträkning inkluderar konservativa reservaton för renderarens arbetsutrymme, och samarbetsvilliga cachekontroller föregår allokering av arbetsmatriser

XLSValidateCachedChartSceneModel utför samma avgränsade cache- och utseendepreflight på en modell utan att slå upp kalkylbladsceller; XLSX-inspelningsbryggan använder den kontrollen före kloning och spelar in stödda författade diagrammodeller med lokala endimensionella A1-referenser, fysiska inbyggda ankars-offset, områdesklippning och ritordning

Den plattformsneutrala inspelaren finns i lxPortableChart; de befintliga ingångspunkterna i lxPagination delar samma layout- och primitivinspelningskroppar, behåller Windows-renderarens beteende och matchar oföränderliga scenbyte och budgeträkning för varje stödd familj

Inbyggd Linux- och macOS-arbetsboksinspelning använder den uttryckliga geometriöverladdning som beskrivs nedan; importerad seriefyllnad i RGB, plottytebakgrund, diagrambakgrund och diagramram återställs ur sina egna namnområdesuppslagna formegenskaper så att en nästlad seriefärg inte kan skriva över plottytebakgrunden

Importerad bevarad ChartML accepteras bara när dess namnområdesexpanderade ström av element, attribut och väsentlig text matchar den stödda typade rekonstruktionen; namnområdesalias och attributordning normaliseras, medan omodellerade inbyggda tillägg, främmande attribut och utseende som inte stöds avslås konservativt

Arbetsbudgeter för rå XML och rekonstruktion kontrolleras före klonings- och projekteringsarbetet; bara den fristående kopian rensar sin validerade bevarade XML, och källan behåller inbyggd metadata, celllagring, cacheinnehåll och generation

Inspelningen går igenom underliggande OfficeArt-ritordning, inklusive diagramramar som saknas i det publika Shapes-omslaget, och avslår en skärande ram som inte stöds i stället för att tyst utelämna den

Classic-cachade diagram med deklarerat utseende

Classic BIFF8-inspelning stöder de sju vanliga diagramfamiljerna ovan när deras kärnposter, lokala lagrade värden, uttryckliga linjära skalor och utseende kan representeras; den läser behållna poster och tillgängliga formelcacher utan att utvärdera formler, expandera gles lagring eller klona kompilerade formelträd

Använd TXLSWorkbook.CreateReadOnlyViewWithChartAppearance(Source, Limits, Geometry) för att skapa en separat skrivskyddad vy med en fryst uppsättning TXLSClassicChartAppearanceDeclaration-värden som tillhandahålls av IXLSClassicChartAppearanceSource; Geometry är valfritt i Windows och tillhandahåller uttryckliga inbyggda typsnittsmått på Linux eller macOS

TXLSClassicChartAppearanceDeclarations är den dynamiska matrisen av primitiva deklarationer som ett program kan använda för att implementera den källan

Skicka den konfigurerade vyn till CaptureXLSPortableViewRenderSnapshot(View, SheetIndex, Row1, Col1, Row2, Col2, Limits); koordinater är ettbaserade och adaptern återställer uppringarens aktiva kalkylblad när inspelningen avslutas eller avslås

De vanliga inspelningsingångarna fortsätter att avslå olösta effektiva typsnitt för Classic-layout eller legender; den distinkta vyingångspunkten använder de redan frysta deklarationerna och geometrileverantören

DeklarationsmedlemKontrakt
Generation, SheetIndex, ObjectIdDen låsta arbetsboksgenerationen, ettbaserat kalkylbladsindex och faktisk lagrad diagramobjektidentitet; inaktuella generationer, saknade eller upprepade identiteter samt identiteter som tillhör ett annat objekt avslås
HasChartSize, ChartWidthPoints, ChartHeightPointsEn uttrycklig ändlig positiv diagramramstorlek i punkter; den behåller det lagrade ankarorigot och ritordningen, medan en falsk flagga behåller de från ankaret härledda måtten
HasPlotInnerRectangle, PlotInnerRectangleEn uttrycklig inre plottruta exklusive etiketter och axeltitlar; den krävs för den här vägen med deklarerat utseende
HasTitleRectangle, TitleRectangleEn uttrycklig titelruta när diagrammet har en titel; källtext, typsnittsfamilj, betoning och färg kommer fortfarande från validerade kärnposter
HasLegendRectangle, LegendRectangleDe deklarerade legendgränserna när en legend finns
HasLegendFontSize, LegendFontSizePointsUpringarens uttryckliga effektiva punktstorlek för en befintlig legend; kärnans typsnittsfamilj, betoning och färg behålls
TXLSPortableChartRectangleLeft, Top, Width och Height är ändliga punkter relativt den inspelade diagramramen; aktiva rutor kräver positiva mått inom den ramen
Count, GetCount, ReadDeclarationKällan rapporterar ett avgränsat antal och returnerar en primitiv post för varje nollbaserat index medan vyn är konfigurerad; deklarationer kopieras före senare inspelning

De här värdena är uppringardeklarerat utseende, inte automatisk Excel-layout eller härledd typsnittsskalning; hämta dem från en oberoende kontrollerad källa eller en programdefinierad layout och granska utdata med den uttryckliga inbyggda typsnittsmappning som används för rendering

Uttryckliga rammått och inre plottgränser måste lämna tillräckligt utrymme för de validerade axeletiketttypsnitten; otillräckligt etikettutrymme avslås i stället för att klippa text eller tillämpa en anpassad skalfaktor

Program håller arbetsboksägaren vid liv tills vyn släppts; den lånade vyn håller ett läslease och behåller deklarationskällan, medan den resulterande oföränderliga ögonblicksbilden varken behåller arbetsboken eller leverantören

Stödd kärnprojektering omfattar literal helfärgade fyllningar, synliga heldräkta linjer, cirkelmarkörer, titel- och legendtext, kategoriplacering och avgränsade uttryckliga numeriska tick; automatiska skalor, olöst automatiskt markörutseende, utjämning, okända rich-tillägg, främmande eller icke-linjära seriereferenser och punktstilar som inte kan representeras avslås före utdata

Att deklarera geometri eller en legendstorlek ger inte tillstånd att ignorera okända diagramtillägg eller ovaliderade stilar; byte-, text-, lagrad-cell- och scengränser förblir effektiva för behållna källdata, deklarationer, fristående cacher och inspelningsarbetsutrymme

De ytterligare överladdningarna XLSValidateCachedChartSceneModel och XLSRecordCachedChartScene accepterar TXLSCachedChartSceneAppearance för en fristående modell; initiera den med XLSDefaultCachedChartSceneAppearance före uttryckliga kontroller

XLSReadClassicChartScene på lägre nivå i lxClassicChartScene returnerar en uppringarägd fristående TXLSXChart samt primitivt utseende och budgeträknare från en behållen TXLSCustomChart, dess exakta källkalkylator och en leasad TXLSClassicChartSceneSource; frigör den returnerade modellen efter inspelningen

TXLSClassicChartSceneSource.ReadAppearance tillhandahåller en primitiv deklaration, ReadCell läser avgränsade låsta lokala lagrade värden, ReadFont fyller den angivna textstilen med avgränsade effektiva kärntypsnittsdata, och PaletteColor slår upp uttryckliga lagrade palettposter; programimplementeringar måste bevara den låsta källan och respektera varje tilldelad byte- och teckenkvot

Medlem för scenutseendeBetydelse
SeriesMarkerSizePointsAvgränsade punktdiametrar per serie, inklusive decimalvärden; noll behåller modellens markörstorlek och en icke-noll överskrivning måste vara från 2 till 72 punkter
OverrideBorder, BorderColorRGB, BorderWidthPointsUttryckligt konturutseende för diagramramen
AxisColorRGB, TickColorRGB, GridlineColorRGB, AxisWidthPoints, TickWidthPoints, GridlineWidthPointsUttryckliga färger och punktbredder för axel, tick och huvudrutnät
AreaFillOpacity, SeriesFillAlphaOmrådesopacitet och seriefyllnads-alfa
UseAxisTickControls, CategoryBetweenValiderade uttryckliga axelkontroller och kategoriplacering
TitleOffsetXPoints, TitleOffsetYPointsÄndliga offset som tillämpas på inspelarens vanliga titelposition
OverridePlotInnerRectangle, OverrideTitleRectangle, OverrideLegendRectangle, PlotInnerRectangle, TitleRectangle, LegendRectangleLiterala punktrektanglar relativt diagramramen
PieRadiusRatioCirkelplottens radie som en avgränsad andel av det mindre plottmåttet

Diagramprimitiver följer HotXLS:s befintliga layoutpolicy; diagramgallerutseende som kräver Excel:s omodellerade standardvärden förblir en uttryckligt ostödd gräns

Direkt inbyggd arbetsboksinspelning

CreateXLSPortableCairoRenderGeometry(Fonts, Calibration, Generation, Backend, Options, CacheCapacity) returnerar en IXLSRenderGeometry som backas upp av samma uttryckliga typsnittsfiler, FreeType, HarfBuzz och textformning som används för inbyggd utmatning; kolumnbredder använder faktiskt uppmätt maximal sifferbredd med arbetsbokens kalibrering

Leverantören äger friställda typsnittsbyte och en avgränsad måttcache, kontrollerar typsnitts- och layoutbudgeter före allokering och validerar mätningsbegäranden innan det cachade tillståndet ändras; en full cache kan returnera ocachade mätningar utan att expandera bortom sin kapacitet

Inspelningen verifierar att leverantörsgenerationen och alla kalibreringsfält matchar den aktuella skrivskyddade arbetsboksvyn, behåller leverantören för den vyn och lämnar arbetsbokens standardgeometrifabrik oförändrad; vanlig standard inbyggd geometri förblir en uttrycklig GDI-gräns

Spela in generationen via en uttryckligen släppt vy innan leverantören skapas; att behålla ett tillfälligt gränssnittsresultat kan behålla dess läslease tills det omgivande blocket avslutas

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);

Inbyggda konsumenter kompileras med LX_PORTABLE_CORE och motsvarande inbyggda beroenden; Windows-anrop till den inbyggda Cairo-geometrifabriken avslås uttryckligen, medan Windows-inspelning kan använda sin befintliga geometrifabrik via samma scoped-överladdningar

Verklig inbyggd inspelning stöder den modellerade skalären, rich text, stödd raster, vanliga former och de sju cachade diagramfamiljerna som beskrivs ovan; diagraminspelningen bevarar ursprunglig importerad ChartML, cachade punkter, gles celllagring, packad lagring och Workbook-generering

För oföränderliga utskriftsområden, marginaler, anpassning eller procentskalning, upprepade rubriker, manuella brytningar samt helcells- eller sammanslagen-cells-sidindelning, se portabla utskriftsplaner

Avancerad inspelningsbrygga

IXLSRenderCaptureSource i lxSemanticSnapshot är det interna samordningsgränssnittet som implementeras av stödda skrivskyddade arbetsboksvyer; vanliga program bör anropa de ägarbaserade inspelningsöverladdningarna

TXLSClassicReadOnlyWorkbookView och TXLSXReadOnlyWorkbookView implementerar IXLSRenderCaptureSource, inklusive de åtta renderingsmetoderna nedan; de här klasserna samordnar inspelning genom skrivskyddade vyer, och adaptern hanterar deras livstid medan program behåller sitt ägargränssnitt för arbetsboken och anropar CaptureXLSPortableRenderSnapshot

Deras befintliga metod TryReadCell tillhandahåller en ögonblicksbild av lagrade celler via den skrivskyddade vyn; renderingsmetoderna lägger till fristående utseende och geometri för portabel inspelning

Medlem eller hjälpareSyfte
ValidateRenderRangeKontrollerar ettbaserade rektangelgränser och fotavtryck för utseende som inte stöds före inspelningen
ReadRenderStyleReturnerar fristående TXLSSemanticCellStyle-metadata och en rich text-närvaroflagga för en ettbaserad cell
IXLSRenderRichTextCaptureSource, ReadRenderRichTextValfritt vytilägg som returnerar avgränsade fristående TXLSRenderTextRuns; varje TXLSRenderTextRun innehåller Text och en effektiv semantisk Style och använder den angivna bastilen samt positiva run-/bytekvoter utan att materialisera celler eller ändra formatpooler
RenderRowHeightPoints, RenderColumnWidthPointsReturnerar fysisk geometri och komprimerar dolda mått till noll
IXLSRenderGeometryCaptureSource, SetRenderCaptureGeometryValfritt vytilägg som behåller en uttrycklig leverantör först efter generations- och kalibreringsvalidering; ogiltiga leverantörer lämnar vyns behållna leverantör oförändrad
ReadRenderMergeRapporterar den kompletta inklusiva ettbaserade sammanslagningsrektangeln som innehåller en cell
ResolveRenderColorSlår upp semantiskt tema-/index-/RGB-utseende till en portabel RGB-färg och använder angiven standard där det stöds
RenderDate1904, RenderRightToLeftExponerar arbetsbokens datasystem- och bladläsordningskontext
XLSRenderCaptureLiteralKänner igen den stödda delmängden av literal Boolean, ändligt tal eller enkel citerad text för inspelning utan utvärdering
XLSRenderCaptureIntersectsTestar blankstegsseparerade lokala A1-områden mot en ettbaserad rektangel och avslår olöst områdessyntax
XLSRenderCaptureConditionUtvärderar den stödda villkorsdelmängden mot en befintlig skalär; jämförelseoperatorkoderna 1 till 8 betyder mellan, inte-mellan, lika med, inte lika med, större än, mindre än, större-än-eller-lika-med och mindre-än-eller-lika-med
XLSRenderCaptureApplyDxfTillämpar stödt fristående differentiellt utseende med en AppliedSlots-mask för att behålla formatering med högre prioritet
TXLSDxfStyle._MarkRenderUnsupportedAppearance, TXLSDxfStyle._HasRenderUnsupportedAppearanceImportkoordineringsmetoder med internt prefix registrerar och inspekterar utseende som den typade differentiella modellen inte kan rendera säkert; Assign behåller markören, och inspelningen avslår en markerad matchande stil

De här brygghjälparna kan utlösa EXLSSemanticSnapshot; den publika inspelningsadaptern översätter det undantaget till EXLSPortableRender