Planes de impresión portátiles
Separa 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 celda, conserva los rangos combinados, repite los títulos de fila y columna, 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 origen
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 son de base 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 quien llama aporta la hoja y el origen correspondientes; conserva el contexto de hoja correcto al transportar una instantánea porque el formato de instantánea no codifica la identidad de un libro ni de una hoja
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;
Al capturar en Linux o macOS, usa el proveedor de geometría con fuentes explícito descrito en la captura nativa directa del libro; la paginación en sí no exige Cairo, archivos de fuentes, Excel ni un driver 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 en bruto mediante una interfaz propietaria ni retiene una concesión del libro en el resultado
Los nombres de hoja entre comillas, las comillas escapadas y las áreas de impresión separadas por comas se aceptan solo para la hoja seleccionada; las referencias fuera del rectángulo capturado, las referencias a otras hojas, los rangos de títulos incompletos y los rangos mal formados se rechazan explícitamente
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 se rechaza
El contenido de encabezado y pie de página, los títulos de fila/columna impresos, las líneas de cuadrícula de impresión activadas, la apariencia en blanco y negro o borrador, la impresión de comentarios y las sustituciones de errores se rechazan por ahora porque este adaptador no puede dibujar esas opciones con fidelidad; los libros Classic activan por defecto las líneas de cuadrícula de impresión, así que desactiva PageSetup.PrintGridlines para este contrato admitido
Modo de escalado y valores por defecto nativos
TXLSXWorksheet.PageFitToPages selecciona el modo de ajuste con independencia de sus dimensiones: asignar FitToWidth o FitToHeight selecciona el modo de ajuste, y asignar PageScale selecciona el escalado porcentual
La importación XLSX conserva sheetPr/pageSetUpPr/@fitToPage y el valor por defecto de OOXML, 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 un porcentaje almacenado, y las dimensiones de ajuste positivas ignoran los saltos manuales; cero en ambos ejes conserva los saltos manuales al 100% de escala, mientras que los límites positivos reducen el contenido sobredimensionado sin ampliar un rango pequeño
La paginación lógica depende de la geometría de la instantánea suministrada; las métricas del driver de impresora y el escalado de la exportación a PDF de Excel pueden cambiar la salida física y no garantizan una equivalencia visual exacta
Construir un plan desacoplado directamente
CreateXLSPortablePrintPlan(Snapshot, Areas, Options) acepta TXLSPortablePrintRanges inclusivos de base cero; un array Areas vacío selecciona toda la instantánea, y cada TXLSPortablePrintRange contiene FirstRow, FirstColumn, LastRow y LastColumn
Parte de XLSDefaultPortablePrintOptions y después establece los campos de TXLSPortablePrintOptions que se indican a continuación
| Campos | Contrato |
|---|---|
PageWidthPoints, PageHeightPoints | Dimensiones físicas del papel en puntos, positivas; A4 por defecto |
MarginLeftPoints, MarginTopPoints, MarginRightPoints, MarginBottomPoints | Márgenes no negativos que dejan un rectángulo imprimible positivo, 36 puntos por defecto |
Landscape, CenterHorizontally, CenterVertically | Landscape intercambia las dimensiones del formato vertical; el centrado se aplica al cuerpo de cada página y a sus títulos repetidos |
ScalePercent | De 10 a 400, 100 por defecto; se aplica cuando ninguna dimensión de ajuste es positiva |
FitToPagesWide, FitToPagesTall | Límites de páginas no negativos, cero para un eje sin restricción; los límites positivos buscan una escala viable entre el 10% y el 100% |
TitleFirstRow, TitleLastRow, TitleFirstColumn, TitleLastColumn | Rangos de títulos completos, inclusivos y de base cero, o -1 en ambos extremos para desactivar ese eje |
RowBreaks, ColumnBreaks | Arrays TXLSPortablePrintBreaks de posiciones únicas de base cero, estrictamente ascendentes, 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 total de páginas positivo, 256 por defecto y 100000 como máximo |
MaxPlanBytes | Almacenamiento de trabajo, carga de la instantánea desacoplada y registros de página comparten este presupuesto de memoria positivo, 64 MiB por defecto y 1 GiB como máximo |
MaxPlanningSteps | Presupuesto de trabajo de planificación acotado y positivo, 64 Mi de pasos por defecto y 2 Gi como máximo; superarlo lanza EXLSPortablePrintBudget |
La geometría debe ser finita; las dimensiones ocultas tienen tamaño cero, un salto de página no puede partir una celda combinada, un área o título no puede intersecar parcialmente una celda combinada, y una celda o combinación sobredimensionada se rechaza en lugar de cortarse en silencio
Inspeccionar o renderizar el resultado
IXLSPortablePrintPlan.Snapshot posee una instantánea de renderizado desacoplada e inmutable, PageCount informa del número de páginas lógicas, y Pages[Index], de base cero, devuelve una TXLSPortablePrintPage con un array de mosaicos desacoplado
Cada página expone AreaIndex, AcrossIndex, DownIndex, su Body inclusivo de base 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 origen sin escalar SourceLeft, SourceTop, SourceRight, SourceBottom y el destino físico DestinationLeft, DestinationTop
La sobrecarga PrepareXLSPortableCairoLayout(Plan, Fonts, Options) retiene los registros de página desacoplados, 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, shaping y dibujo siguen aplicando al contenido repetido
Layout.PageCount coincide con el plan; PDF produce un único archivo multipágina, mientras que SVG y PNG producen un archivo por página lógica; la inspección de líneas de texto del diseño conserva las coordenadas sin escalar de la instantánea en lugar de las posiciones repetidas por página
Los archivos de salida existentes se rechazan, y el punto de entrada nativo de Cairo en Windows sigue sin admitirse explícitamente; consulta la salida headless portátil para las dependencias, el mapeo de fuentes, la escena y los límites de salida