Draagbare afdrukplannen
Scheid logische paginering van native uitvoer: lxPortablePrint maakt een onveranderlijk afdrukplan vanuit een losgemaakte render-snapshot, en lxPortableCairo tekent zijn pagina's als PDF, SVG of PNG op Linux en macOS
De planner werkt met fysieke punten en volledige celgrenzen, behoudt samengevoegde bereiken, herhaalt rij- en kolomtitels en past gescheiden afdrukbereiken, handmatige einde pagina's, oriëntatie, marges, centrering, schaling en paginavolgorde toe zonder de bronwerkmap te wijzigen
Pagina-instelling van de werkmap gebruiken
CreateXLSPortableWorkbookPrintPlan in lxPortableWorkbookPrint heeft overloads voor een geleende TXLSWorkbook en TXLSXWorkbook; beide accepteren SheetIndex, OriginRow, OriginColumn, Snapshot en Defaults
Het bladindex en de snapshot-origin zijn 1-based; de adapter vereist een snapshot uit de actuele werkmapgeneratie en een vastgelegde rechthoek die elk volledig afdrukbereik en elk herhaald titelbereik bevat
Snapshot-identiteit omvat zijn generatie, terwijl de aanroeper het matchende blad en de origin levert; houd de juiste bladcontext vast bij het transporteren van een snapshot, want het snapshotformaat codeert geen werkmap- of werkbladidentiteit
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;
Gebruik de expliciete op lettertypen gebaseerde geometrieprovider die bij directe native werkmap-capture wordt beschreven wanneer je op Linux of macOS vastlegt; paginering zelf vereist geen Cairo, lettertypebestanden, Excel of een printerdriver
De werkmapadapter neemt een tijdelijke leeslease, leest bestaande metadata en geeft losgemaakte gegevens terug; het neemt geen rauwe werkmap over via een beherende interface en houdt geen werkmaplease vast in het resultaat
Gequote bladnamen, geëscapete aanhalingstekens en kommagescheiden afdrukbereiken worden alleen voor het geselecteerde werkblad geaccepteerd; verwijzingen buiten de vastgelegde rechthoek, verwijzingen naar andere bladen, onvolledige titelbereiken en misvormde bereiken worden expliciet geweigerd
Herkenbare papierformaten zijn Letter, Tabloid, Ledger, Legal, A3, A4, A5, B4 en B5; een niet-opgegeven papierformaat gebruikt Defaults.PageWidthPoints en Defaults.PageHeightPoints, terwijl een onbekend expliciet papierformaat wordt geweigerd
Kop- en voettekstinhoud, afgedrukte rij-/kolomkoppen, ingeschakelde printrasterlijnen, zwart-wit- of concepring, opmerkingen afdrukken en foutsubstitutie worden voorlopig geweigerd omdat deze adapter die instellingen niet getrouw kan tekenen; Classic-werkmappen zetten printrasterlijnen standaard aan, dus zet PageSetup.PrintGridlines uit voor dit ondersteunde contract
Schalingsmodus en native standaardwaarden
TXLSXWorksheet.PageFitToPages kiest de passend-maken-modus onafhankelijk van zijn afmetingen: FitToWidth of FitToHeight zetten kiest de passend-maken-modus, en PageScale zetten kiest percentageschaling
XLSX-import behoudt sheetPr/pageSetUpPr/@fitToPage en de OOXML-standaardwaarde één voor een weggelaten passend afmeting; export behoudt expliciete nuldimensies, en XLS/XLSX-conversie behoudt de gekozen modus
Percentageschaling negeert verouderde passend-maken-afmetingen; passend-maken-modus negeert een opgeslagen percentageschaal, en positieve passend-maken-afmetingen negeren handmatige einde pagina's; nul op beide assen behoudt handmatige einde pagina's bij 100% schaal, terwijl positieve grenzen te grote inhoud verkleinen zonder een klein bereik te vergroten
Logische paginering hangt af van de aangeleverde snapshotgeometrie; printerdrivermetrieken en de schaling van Excel-PDF-export kunnen de fysieke uitvoer veranderen en garanderen geen exacte visuele gelijkwaardigheid
Rechtstreeks een los plan bouwen
CreateXLSPortablePrintPlan(Snapshot, Areas, Options) accepteert zero-based inclusieve TXLSPortablePrintRanges; een lege Areas-array kiest de hele snapshot, en elke TXLSPortablePrintRange bevat FirstRow, FirstColumn, LastRow en LastColumn
Begin met XLSDefaultPortablePrintOptions en stel daarna de onderstaande velden van TXLSPortablePrintOptions in
| Velden | Contract |
|---|---|
PageWidthPoints, PageHeightPoints | Positieve fysieke papierafmetingen in punten, standaard A4 |
MarginLeftPoints, MarginTopPoints, MarginRightPoints, MarginBottomPoints | Niet-negatieve marges die een positieve afdrukbare rechthoek overlaten, standaard 36 punten |
Landscape, CenterHorizontally, CenterVertically | Liggend wisselt de staande afmetingen om; centrering geldt per paginalichaam en zijn herhaalde titels |
ScalePercent | 10 tot en met 400, standaard 100; geldt wanneer geen enkele passend-maken-afmeting positief is |
FitToPagesWide, FitToPagesTall | Niet-negatieve paginagrenzen, nul voor een onbeperkte as; positieve grenzen zoeken een uitvoerbare schaal tussen 10% en 100% |
TitleFirstRow, TitleLastRow, TitleFirstColumn, TitleLastColumn | Volledige zero-based inclusieve titelbereiken, of -1 op beide eindpunten om die as uit te schakelen |
RowBreaks, ColumnBreaks | TXLSPortablePrintBreaks-arrays met strikt oplopende unieke zero-based posities waar een nieuwe pagina begint; werkmapadaptatie sorteert losgemaakte metadata zonder het blad te bewerken |
Order | TXLSPortablePrintOrder: xppoDownThenOver of xppoOverThenDown |
MaxPages | Positieve totaallimiet voor pagina's, standaard 256 en maximaal 100.000 |
MaxPlanBytes | Werkopslag, losgemaakte snapshot-payload en paginarecords delen dit positieve geheugenbudget, standaard 64 MiB en maximaal 1 GiB |
MaxPlanningSteps | Positief begrensd budget voor planningswerk, standaard 64 Mi stappen en maximaal 2 Gi stappen; overschrijding geeft EXLSPortablePrintBudget |
Geometrie moet eindig zijn; verborgen afmetingen hebben grootte nul, een pagina-einde mag een samengevoegd gebied niet splitsen, een gebied of titel mag een samengevoegd gebied niet gedeeltelijk overlappen, en een te grote cel of samengevoegd gebied wordt geweigerd in plaats van stilletjes afgesneden te worden
Het resultaat inspecteren of renderen
IXLSPortablePrintPlan.Snapshot is eigenaar van een losgemaakte onveranderlijke render-snapshot, PageCount rapporteert het logische aantal pagina's, en zero-based Pages[Index] geeft een TXLSPortablePrintPage met een losgemaakte tegelarray terug
Elke pagina stelt AreaIndex, AcrossIndex, DownIndex, zijn zero-based inclusieve Body, Scale, PageWidthPoints, PageHeightPoints en Tiles bloot
TXLSPortablePrintTiles bevat hooguit vier TXLSPortablePrintTile-records voor de herhaalde hoek, titelrijen, titelkolommen en het lichaam; elke tegel stelt ongeschaalde bron SourceLeft, SourceTop, SourceRight, SourceBottom en fysieke bestemming DestinationLeft, DestinationTop bloot
De overload PrepareXLSPortableCairoLayout(Plan, Fonts, Options) behoudt losgemaakte paginarecords, clippt en schaalt scène-inhoud per tegel en gebruikt de papierafmetingen en marges van het plan; raster-, lettertype-, shaping- en tekenbudgetten blijven gelden voor herhaalde inhoud
Layout.PageCount matcht het plan; PDF levert één bestand met meerdere pagina's op, terwijl SVG en PNG één bestand per logische pagina opleveren; de inspectie van tekstregels in de layout houdt ongeschaalde snapshot-coördinaten vast in plaats van herhaalde posities per pagina
Bestaande uitvoerbestanden worden geweigerd, en het Windows-native Cairo-ingangspunt blijft expliciet niet-ondersteund; zie draagbare headless uitvoer voor afhankelijkheden, lettertypetoewijzing, scène- en uitvoerlimieten