Documentazione HotXLS / Riferimento API

Piani di stampa portabili

Separa la paginazione logica dall'output nativo: lxPortablePrint crea un piano di stampa immutabile da uno snapshot di rendering scollegato, e lxPortableCairo disegna le sue pagine come PDF, SVG o PNG su Linux e macOS

Il planner usa punti fisici e confini completi delle celle, preserva gli intervalli uniti, ripete i titoli di riga e colonna e applica aree di stampa disgiunte, interruzioni manuali, orientamento, margini, centratura, scala e ordine delle pagine senza cambiare la cartella di lavoro sorgente

Usare le impostazioni pagina del workbook

CreateXLSPortableWorkbookPrintPlan in lxPortableWorkbookPrint ha overload per un TXLSWorkbook e un TXLSXWorkbook presi in prestito; entrambi accettano SheetIndex, OriginRow, OriginColumn, Snapshot e Defaults

L'indice del foglio e l'origine dello snapshot sono a base uno; l'adattatore richiede uno snapshot della generazione corrente del workbook e un rettangolo acquisito che contenga ogni area di stampa completa e ogni intervallo di titoli ripetuti

L'identità dello snapshot include la sua generazione, mentre il chiamante fornisce il foglio e l'origine corrispondenti; conserva il corretto contesto di foglio quando trasferisci uno snapshot, perché il formato dello snapshot non codifica un'identità di workbook o foglio di lavoro

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

Quando acquisisci su Linux o macOS, usa il provider di geometria basato su font espliciti descritto in acquisizione nativa diretta del workbook; la paginazione in sé non richiede Cairo, file di font, Excel né un driver di stampa

L'adattatore del workbook prende un lease di lettura temporaneo, legge i metadati esistenti e restituisce dati scollegati; non adotta un workbook grezzo tramite un'interfaccia proprietaria e non trattiene un lease sul workbook nel risultato

Nomi di foglio tra virgolette, virgolette con escape e aree di stampa separate da virgole vengono accettati solo per il foglio selezionato; riferimenti fuori dal rettangolo acquisito, riferimenti a fogli estranei, intervalli di titoli incompleti e intervalli malformati vengono rifiutati esplicitamente

I formati carta riconosciuti sono Letter, Tabloid, Ledger, Legal, A3, A4, A5, B4 e B5; un formato carta non specificato usa Defaults.PageWidthPoints e Defaults.PageHeightPoints, mentre un formato carta esplicito non riconosciuto viene rifiutato

Contenuti di intestazione e piè di pagina, intestazioni di riga/colonna stampate, linee della griglia di stampa abilitate, aspetto in bianco e nero o bozza, stampa dei commenti e sostituzioni degli errori vengono attualmente rifiutati perché questo adattatore non può disegnare fedelmente quelle impostazioni; i workbook Classic abilitano le linee della griglia di stampa per impostazione predefinita, quindi disabilita PageSetup.PrintGridlines per questo contratto supportato

Modalità di scala e predefiniti nativi

TXLSXWorksheet.PageFitToPages seleziona la modalità di adattamento indipendentemente dalle sue dimensioni: impostare FitToWidth o FitToHeight seleziona la modalità di adattamento, e impostare PageScale seleziona la scala in percentuale

L'importazione XLSX preserva sheetPr/pageSetUpPr/@fitToPage e il predefinito OOXML pari a uno per una dimensione di adattamento omessa; l'esportazione conserva le dimensioni zero esplicite, e la conversione XLS/XLSX preserva la modalità selezionata

La scala percentuale ignora dimensioni di adattamento non aggiornate; la modalità di adattamento ignora una scala percentuale memorizzata, e limiti di adattamento positivi ignorano le interruzioni manuali; zero su entrambi gli assi conserva le interruzioni manuali alla scala 100%, mentre limiti positivi riducono contenuti sovradimensionati senza ingrandire un intervallo piccolo

La paginazione logica dipende dalla geometria dello snapshot fornito; le metriche dei driver di stampa e la scala dell'esportazione PDF di Excel possono cambiare l'output fisico e non costituiscono una garanzia di equivalenza visiva esatta

Costruire un piano scollegato direttamente

CreateXLSPortablePrintPlan(Snapshot, Areas, Options) accetta TXLSPortablePrintRanges inclusivi a base zero; un array Areas vuoto seleziona l'intero snapshot, e ogni TXLSPortablePrintRange contiene FirstRow, FirstColumn, LastRow e LastColumn

Parti da XLSDefaultPortablePrintOptions, poi imposta i campi di TXLSPortablePrintOptions mostrati sotto

CampiContratto
PageWidthPoints, PageHeightPointsDimensioni fisiche positive della carta in punti, predefinito A4
MarginLeftPoints, MarginTopPoints, MarginRightPoints, MarginBottomPointsMargini non negativi che lasciano un rettangolo stampabile positivo, predefinito 36 punti
Landscape, CenterHorizontally, CenterVerticallyLandscape scambia le dimensioni verticali; la centratura si applica al corpo di ogni pagina e ai suoi titoli ripetuti
ScalePercentDa 10 a 400, predefinito 100; si applica quando nessuna dimensione di adattamento è positiva
FitToPagesWide, FitToPagesTallLimiti di pagine non negativi, zero per un asse senza restrizioni; limiti positivi trovano una scala fattibile tra il 10% e il 100%
TitleFirstRow, TitleLastRow, TitleFirstColumn, TitleLastColumnIntervalli di titoli completi e inclusivi a base zero, oppure -1 su entrambi gli estremi per disabilitare quell'asse
RowBreaks, ColumnBreaksArray TXLSPortablePrintBreaks di posizioni a base zero univoche e strettamente crescenti dove inizia una nuova pagina; l'adattamento dal workbook ordina i metadati scollegati senza modificare il foglio
OrderTXLSPortablePrintOrder: xppoDownThenOver o xppoOverThenDown
MaxPagesLimite totale positivo di pagine, predefinito 256 e massimo 100.000
MaxPlanBytesStorage di lavoro, payload dello snapshot scollegato e record delle pagine condividono questo budget di memoria positivo, predefinito 64 MiB e massimo 1 GiB
MaxPlanningStepsBudget positivo e limitato di lavoro di pianificazione, predefinito 64 Mi step e massimo 2 Gi step; superarlo solleva EXLSPortablePrintBudget

La geometria deve essere finita; le dimensioni nascoste hanno dimensione zero, un'interruzione di pagina non può spezzare un'unione, un'area o un titolo non può intersecare parzialmente un'unione, e una cella o unione sovradimensionata viene rifiutata invece di essere tagliata silenziosamente

Ispezionare o renderizzare il risultato

IXLSPortablePrintPlan.Snapshot possiede uno snapshot di rendering immutabile e scollegato, PageCount riporta il conteggio logico delle pagine, e Pages[Index] a base zero restituisce un TXLSPortablePrintPage con un array di tile scollegato

Ogni pagina espone AreaIndex, AcrossIndex, DownIndex, il proprio Body inclusivo a base zero, Scale, PageWidthPoints, PageHeightPoints e Tiles

TXLSPortablePrintTiles contiene al massimo quattro record TXLSPortablePrintTile per l'angolo ripetuto, le righe di titolo, le colonne di titolo e il corpo; ogni tile espone SourceLeft, SourceTop, SourceRight, SourceBottom della sorgente non scalata e le destinazioni fisiche DestinationLeft, DestinationTop

L'overload PrepareXLSPortableCairoLayout(Plan, Fonts, Options) trattiene i record delle pagine scollegati, taglia e scala il contenuto della scena per ogni tile e usa le dimensioni della carta e i margini del piano; i budget di raster, font, shaping e disegno continuano ad applicarsi al contenuto ripetuto

Layout.PageCount corrisponde al piano; il PDF produce un file multipagina, mentre SVG e PNG producono un file per pagina logica; l'ispezione delle righe di testo del layout conserva le coordinate non scalate dello snapshot invece delle posizioni ripetute per pagina

I file di output esistenti vengono rifiutati, e il punto di ingresso nativo Cairo su Windows resta esplicitamente non supportato; vedi output headless portabile per dipendenze, mappatura dei font, scena e limiti di output