Planes de impresión portátiles
Separe la paginación lógica de la salida nativa: lxPortablePrint crea un plan de impresión inmutable a partir de una instantánea de renderizado desacoplada, y lxPortableCairo dibuja sus páginas como PDF, SVG o PNG en Linux y macOS
El planificador usa puntos físicos y límites completos de celdas, preserva los rangos combinados, repite los títulos de filas y columnas, y aplica áreas de impresión disjuntas, saltos manuales, orientación, márgenes, centrado, escalado y orden de páginas sin cambiar el libro de la fuente
Usar la configuración de página del libro
CreateXLSPortableWorkbookPrintPlan en lxPortableWorkbookPrint tiene sobrecargas para un TXLSWorkbook y un TXLSXWorkbook prestados; ambas aceptan SheetIndex, OriginRow, OriginColumn, Snapshot y Defaults
El índice de hoja y el origen de la instantánea están basados en uno; el adaptador exige una instantánea de la generación actual del libro y un rectángulo capturado que contenga cada área de impresión completa y cada rango de títulos repetidos
La identidad de la instantánea incluye su generación, mientras que el llamador aporta la hoja y el origen coincidentes; conserve el contexto correcto de hoja al transportar una instantánea porque el formato de la instantánea no codifica una identidad de libro u hoja de cálculo
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;
Use el proveedor de geometría explícito respaldado por fuentes descrito en la captura nativa directa de libros al capturar en Linux o macOS; la paginación en sí no exige Cairo, archivos de fuentes, Excel ni un controlador de impresora
El adaptador del libro toma una concesión de lectura temporal, lee los metadatos existentes y devuelve datos desacoplados; ni adopta un libro crudo a través de una interfaz propietaria ni retiene una concesión del libro en el resultado
Los nombres de hojas entre comillas, las comillas escapadas y las áreas de impresión separadas por comas se aceptan únicamente para la hoja de cálculo seleccionada; las referencias fuera del rectángulo capturado, las referencias a hojas ajenas, los rangos de títulos incompletos y los rangos malformados provocan rechazo explícito
Los tamaños de papel reconocidos son Letter, Tabloid, Ledger, Legal, A3, A4, A5, B4 y B5; un tamaño de papel sin especificar usa Defaults.PageWidthPoints y Defaults.PageHeightPoints, mientras que un tamaño de papel explícito no reconocido provoca rechazo
El contenido de encabezados y pies, los títulos de filas/columnas impresos, las líneas de cuadrícula de impresión habilitadas, la apariencia en blanco y negro o borrador, la impresión de comentarios y las sustituciones de errores actualmente provocan rechazo porque este adaptador no puede dibujar esas configuraciones fielmente; los libros Classic habilitan las líneas de cuadrícula de impresión de forma predeterminada, así que desactive PageSetup.PrintGridlines para este contrato admitido
Modo de escalado y valores predeterminados nativos
TXLSXWorksheet.PageFitToPages selecciona el modo de ajuste con independencia de sus dimensiones: definir FitToWidth o FitToHeight selecciona el modo de ajuste, y definir PageScale selecciona el escalado porcentual
La importación XLSX preserva sheetPr/pageSetUpPr/@fitToPage y el valor predeterminado OOXML de uno para una dimensión de ajuste omitida; la exportación retiene las dimensiones cero explícitas, y la conversión XLS/XLSX preserva el modo seleccionado
El escalado porcentual ignora las dimensiones de ajuste obsoletas; el modo de ajuste ignora una escala porcentual almacenada, y las dimensiones de ajuste positivas ignoran los saltos manuales; cero en ambos ejes retiene los saltos manuales a escala 100%, mientras que los límites positivos reducen el contenido sobredimensionado sin agrandar un rango pequeño
La paginación lógica depende de la geometría de la instantánea aportada; las métricas del controlador de impresora y el escalado de la exportación PDF de Excel pueden cambiar la salida física y no constituyen una garantía de equivalencia visual exacta
Construir un plan desacoplado directamente
CreateXLSPortablePrintPlan(Snapshot, Areas, Options) acepta TXLSPortablePrintRanges inclusivos basados en cero; un arreglo Areas vacío selecciona la instantánea completa, y cada TXLSPortablePrintRange contiene FirstRow, FirstColumn, LastRow y LastColumn
Comience con XLSDefaultPortablePrintOptions, y luego defina los campos de TXLSPortablePrintOptions siguientes
| Campos | Contrato |
|---|---|
PageWidthPoints, PageHeightPoints | Dimensiones físicas positivas del papel en puntos, con A4 como valor predeterminado |
MarginLeftPoints, MarginTopPoints, MarginRightPoints, MarginBottomPoints | Márgenes no negativos que dejan un rectángulo imprimible positivo, con 36 puntos como valor predeterminado |
Landscape, CenterHorizontally, CenterVertically | Landscape intercambia las dimensiones del retrato; el centrado aplica a cada cuerpo de página y a sus títulos repetidos |
ScalePercent | De 10 a 400, con 100 como valor predeterminado; aplica cuando ninguna dimensión de ajuste es positiva |
FitToPagesWide, FitToPagesTall | Límites de páginas no negativos, cero para un eje sin restricciones; los límites positivos buscan una escala factible entre 10% y 100% |
TitleFirstRow, TitleLastRow, TitleFirstColumn, TitleLastColumn | Rangos de títulos completos inclusivos basados en cero, o -1 en ambos extremos para deshabilitar ese eje |
RowBreaks, ColumnBreaks | Arreglos TXLSPortablePrintBreaks de posiciones basadas en cero estrictamente ascendentes y únicas donde comienza una página nueva; la adaptación del libro ordena los metadatos desacoplados sin editar la hoja |
Order | TXLSPortablePrintOrder: xppoDownThenOver o xppoOverThenDown |
MaxPages | Límite positivo total de páginas, con 256 como valor predeterminado y 100,000 como máximo |
MaxPlanBytes | El almacenamiento de trabajo, la carga de la instantánea desacoplada y los registros de páginas comparten este presupuesto positivo de memoria, con 64 MiB como valor predeterminado y 1 GiB como máximo |
MaxPlanningSteps | Presupuesto positivo acotado de trabajo de planificación, con 64 Mi de pasos como valor predeterminado y 2 Gi de pasos como máximo; excederlo lanza EXLSPortablePrintBudget |
La geometría debe ser finita; las dimensiones ocultas tienen tamaño cero, un salto de página no puede dividir una combinación, un área o un título no puede intersectar parcialmente una combinación, y una celda o combinación sobredimensionada provoca rechazo en lugar de cortarse silenciosamente
Inspeccionar o renderizar el resultado
IXLSPortablePrintPlan.Snapshot es dueño de una instantánea de renderizado inmutable desacoplada, PageCount reporta el conteo lógico de páginas, y el Pages[Index] basado en cero devuelve un TXLSPortablePrintPage con un arreglo desacoplado de mosaicos
Cada página expone AreaIndex, AcrossIndex, DownIndex, su Body inclusivo basado en cero, Scale, PageWidthPoints, PageHeightPoints y Tiles
TXLSPortablePrintTiles contiene como máximo cuatro registros TXLSPortablePrintTile para la esquina repetida, las filas de títulos, las columnas de títulos y el cuerpo; cada mosaico expone el SourceLeft, SourceTop, SourceRight, SourceBottom de la fuente sin escalar y el DestinationLeft, DestinationTop físico de destino
La sobrecarga PrepareXLSPortableCairoLayout(Plan, Fonts, Options) retiene los registros desacoplados de páginas, recorta y escala el contenido de la escena para cada mosaico, y usa las dimensiones de papel y los márgenes del plan; los presupuestos de raster, fuentes, conformación y dibujo siguen aplicándose al contenido repetido
El Layout.PageCount coincide con el plan; el PDF produce un archivo multipágina, mientras que el SVG y el PNG producen un archivo por página lógica; la inspección de líneas de texto del diseño retiene las coordenadas sin escalar de la instantánea en lugar de las posiciones repetidas por página
Los archivos de salida existentes provocan rechazo, y el punto de entrada nativo Cairo de Windows sigue explícitamente sin admitir; consulte la salida headless portable para conocer los límites de dependencias, mapeo de fuentes, escenas y salida