Planos de impressão portáteis
Separe a paginação lógica da saída nativa: lxPortablePrint cria um plano de impressão imutável a partir de um snapshot de renderização desanexado, e lxPortableCairo desenha as páginas dele como PDF, SVG ou PNG no Linux e no macOS
O planejador usa pontos físicos e limites completos de célula, preserva intervalos mesclados, repete títulos de linha e coluna e aplica áreas de impressão disjuntas, quebras manuais, orientação, margens, centralização, escala e ordem de página sem alterar a pasta de trabalho de fonte
Usar a configuração de página da pasta de trabalho
CreateXLSPortableWorkbookPrintPlan em lxPortableWorkbookPrint tem overloads para um TXLSWorkbook e um TXLSXWorkbook emprestados; ambos aceitam SheetIndex, OriginRow, OriginColumn, Snapshot e Defaults
O índice de planilha e a origem do snapshot têm base um; o adaptador exige um snapshot da geração atual da pasta de trabalho e um retângulo capturado contendo cada área de impressão completa e intervalo de título repetido
A identidade do snapshot inclui a geração dele, enquanto o chamador fornece a planilha e a origem correspondentes; retenha o contexto correto de planilha ao transportar um snapshot, porque o formato de snapshot não codifica uma identidade de pasta de trabalho nem de planilha
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 o provedor de geometria explícito apoiado em fontes descrito na captura nativa direta de pasta de trabalho ao capturar no Linux ou no macOS; a paginação em si não exige Cairo, arquivos de fonte, Excel nem driver de impressora
O adaptador de pasta de trabalho toma uma concessão temporária de leitura, lê metadados existentes e retorna dados desanexados; ele não adota uma pasta de trabalho bruta por meio de uma interface de dono nem retém uma concessão de pasta de trabalho no resultado
Nomes de planilha entre aspas, aspas escapadas e áreas de impressão separadas por vírgula são aceitos apenas para a planilha selecionada; referências fora do retângulo capturado, referências a planilhas estrangeiras, intervalos de título incompletos e intervalos malformados são rejeitados explicitamente
Os tamanhos de papel reconhecidos são Letter, Tabloid, Ledger, Legal, A3, A4, A5, B4 e B5; um tamanho de papel não especificado usa Defaults.PageWidthPoints e Defaults.PageHeightPoints, enquanto um tamanho de papel explícito não reconhecido é rejeitado
Conteúdo de cabeçalho e rodapé, títulos de linha/coluna impressos, linhas de grade de impressão habilitadas, aparência preto e branco ou rascunho, impressão de comentários e substituições de erro são atualmente rejeitados porque este adaptador não consegue desenhar essas configurações fielmente; pastas de trabalho Classic habilitam linhas de grade de impressão por padrão, então desabilite PageSetup.PrintGridlines para este contrato com suporte
Modo de escala e padrões nativos
TXLSXWorksheet.PageFitToPages seleciona o modo de ajuste independentemente das dimensões dele: definir FitToWidth ou FitToHeight seleciona o modo de ajuste, e definir PageScale seleciona a escala em porcentagem
A importação XLSX preserva sheetPr/pageSetUpPr/@fitToPage e o padrão OOXML de um para uma dimensão de ajuste omitida; a exportação retém dimensões zero explícitas, e a conversão XLS/XLSX preserva o modo selecionado
A escala em porcentagem ignora dimensões de ajuste obsoletas; o modo de ajuste ignora uma escala de porcentagem armazenada, e dimensões de ajuste positivas ignoram quebras manuais; zero em ambos os eixos retém quebras manuais na escala de 100%, enquanto limites positivos reduzem conteúdo oversized sem ampliar um intervalo pequeno
A paginação lógica depende da geometria de snapshot fornecida; as métricas de driver de impressora e a escala de exportação de PDF do Excel podem mudar a saída física e não são uma garantia de equivalência visual exata
Construir um plano desanexado diretamente
CreateXLSPortablePrintPlan(Snapshot, Areas, Options) aceita TXLSPortablePrintRanges inclusivos com base zero; um array Areas vazio seleciona o snapshot inteiro, e cada TXLSPortablePrintRange contém FirstRow, FirstColumn, LastRow e LastColumn
Comece com XLSDefaultPortablePrintOptions e depois defina os campos de TXLSPortablePrintOptions abaixo
| Campos | Contrato |
|---|---|
PageWidthPoints, PageHeightPoints | Dimensões físicas positivas de papel em pontos, com A4 como padrão |
MarginLeftPoints, MarginTopPoints, MarginRightPoints, MarginBottomPoints | Margens não negativas que deixam um retângulo imprimível positivo, com 36 pontos como padrão |
Landscape, CenterHorizontally, CenterVertically | Landscape troca as dimensões de retrato; a centralização se aplica ao corpo de cada página e aos títulos repetidos dele |
ScalePercent | De 10 a 400, com 100 como padrão; aplica-se quando nenhuma dimensão de ajuste é positiva |
FitToPagesWide, FitToPagesTall | Limites de página não negativos, zero para um eixo irrestrito; limites positivos encontram uma escala viável entre 10% e 100% |
TitleFirstRow, TitleLastRow, TitleFirstColumn, TitleLastColumn | Intervalos de título completos, inclusivos e com base zero, ou -1 em ambos os endpoints para desabilitar esse eixo |
RowBreaks, ColumnBreaks | Arrays TXLSPortablePrintBreaks de posições únicas estritamente crescentes com base zero onde uma nova página começa; a adaptação da pasta de trabalho ordena metadados desanexados sem editar a planilha |
Order | TXLSPortablePrintOrder: xppoDownThenOver ou xppoOverThenDown |
MaxPages | Limite positivo total de páginas, com 256 como padrão e 100,000 de máximo |
MaxPlanBytes | Armazenamento de trabalho, payload de snapshot desanexado e records de página compartilham este orçamento positivo de memória, com 64 MiB como padrão e 1 GiB de máximo |
MaxPlanningSteps | Orçamento positivo limitado de trabalho de planejamento, com 64 Mi de etapas como padrão e 2 Gi de etapas de máximo; excedê-lo dispara EXLSPortablePrintBudget |
A geometria deve ser finita; dimensões ocultas têm tamanho zero, uma quebra de página não pode dividir uma mesclagem, uma área ou título não pode cruzar parcialmente uma mesclagem, e uma célula ou mesclagem oversized é rejeitada em vez de ser cortada silenciosamente
Inspecionar ou renderizar o resultado
IXLSPortablePrintPlan.Snapshot é dono de um snapshot de renderização imutável desanexado, PageCount relata a contagem lógica de páginas, e Pages[Index] com base zero retorna um TXLSPortablePrintPage com um array de tiles desanexado
Cada página expõe AreaIndex, AcrossIndex, DownIndex, o Body inclusivo com base zero dela, Scale, PageWidthPoints, PageHeightPoints e Tiles
TXLSPortablePrintTiles contém no máximo quatro records TXLSPortablePrintTile para o canto repetido, linhas de título, colunas de título e corpo; cada tile expõe a fonte não escalada SourceLeft, SourceTop, SourceRight, SourceBottom e o destino físico DestinationLeft, DestinationTop
O overload PrepareXLSPortableCairoLayout(Plan, Fonts, Options) retém records desanexados de página, recorta e escala o conteúdo de cena para cada tile e usa as dimensões de papel e margens do plano; os orçamentos de raster, fonte, modelagem e desenho continuam se aplicando ao conteúdo repetido
Layout.PageCount corresponde ao plano; o PDF produz um arquivo multipágina, enquanto SVG e PNG produzem um arquivo por página lógica; a inspeção de linhas de texto do layout retém coordenadas de snapshot não escaladas em vez de posições repetidas por página
Arquivos de saída existentes são rejeitados, e o ponto de entrada nativo Cairo do Windows permanece explicitamente sem suporte; consulte a saída headless portátil para os limites de dependência, mapeamento de fontes, cena e saída