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
| Campi | Contratto |
|---|---|
PageWidthPoints, PageHeightPoints | Dimensioni fisiche positive della carta in punti, predefinito A4 |
MarginLeftPoints, MarginTopPoints, MarginRightPoints, MarginBottomPoints | Margini non negativi che lasciano un rettangolo stampabile positivo, predefinito 36 punti |
Landscape, CenterHorizontally, CenterVertically | Landscape scambia le dimensioni verticali; la centratura si applica al corpo di ogni pagina e ai suoi titoli ripetuti |
ScalePercent | Da 10 a 400, predefinito 100; si applica quando nessuna dimensione di adattamento è positiva |
FitToPagesWide, FitToPagesTall | Limiti 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, TitleLastColumn | Intervalli di titoli completi e inclusivi a base zero, oppure -1 su entrambi gli estremi per disabilitare quell'asse |
RowBreaks, ColumnBreaks | Array 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 |
Order | TXLSPortablePrintOrder: xppoDownThenOver o xppoOverThenDown |
MaxPages | Limite totale positivo di pagine, predefinito 256 e massimo 100.000 |
MaxPlanBytes | Storage di lavoro, payload dello snapshot scollegato e record delle pagine condividono questo budget di memoria positivo, predefinito 64 MiB e massimo 1 GiB |
MaxPlanningSteps | Budget 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