Documentation HotXLS / Référence API

Plans d'impression portables

Séparez la pagination logique de la sortie native : lxPortablePrint crée un plan d'impression immuable depuis un instantané de rendu détaché, et lxPortableCairo dessine ses pages en PDF, SVG ou PNG sous Linux et macOS

Le planificateur emploie des points physiques et des bornes de cellules complètes, préserve les plages fusionnées, répète les titres de lignes et de colonnes, et applique des zones d'impression disjointes, des sauts manuels, l'orientation, les marges, le centrage, la mise à l'échelle et l'ordre des pages sans modifier le classeur source

Employer la mise en page du classeur

CreateXLSPortableWorkbookPrintPlan dans lxPortableWorkbookPrint propose des overloads pour un TXLSWorkbook et un TXLSXWorkbook empruntés ; tous deux acceptent SheetIndex, OriginRow, OriginColumn, Snapshot et Defaults

L'index de feuille et l'origine de l'instantané sont en base un ; l'adaptateur exige un instantané de la génération courante du classeur et un rectangle capturé contenant chaque zone d'impression complète et chaque plage de titres répétés

L'identité de l'instantané inclut sa génération, tandis que l'appelant fournit la feuille et l'origine correspondantes ; conservez le bon contexte de feuille en transportant un instantané, car le format d'instantané n'encode aucune identité de classeur ni de feuille de calcul

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;

Employez le fournisseur de géométrie adossé aux polices explicite décrit dans la capture native directe de classeurs pour capturer sous Linux ou macOS ; la pagination elle-même n'exige ni Cairo, ni fichiers de polices, ni Excel, ni driver d'imprimante

L'adaptateur de classeur prend un bail de lecture temporaire, lit les métadonnées existantes et renvoie des données détachées ; il n'adopte ni un classeur brut via une interface propriétaire, ni ne retient un bail de classeur dans le résultat

Les noms de feuilles entre guillemets, les guillemets échappés et les zones d'impression séparées par des virgules ne sont acceptés que pour la feuille sélectionnée ; des références hors du rectangle capturé, des références à des feuilles étrangères, des plages de titres incomplètes et des plages mal formées sont explicitement rejetées

Les formats de papier reconnus sont Letter, Tabloid, Ledger, Legal, A3, A4, A5, B4 et B5 ; un format de papier non spécifié emploie Defaults.PageWidthPoints et Defaults.PageHeightPoints, tandis qu'un format explicite non reconnu est rejeté

Le contenu d'en-têtes et de pieds de page, les en-têtes de lignes/colonnes imprimés, le quadrillage d'impression activé, l'apparence noir et blanc ou brouillon, l'impression des commentaires et les substitutions d'erreurs sont actuellement rejetés, car cet adaptateur ne peut pas dessiner ces réglages fidèlement ; les classeurs Classic activent le quadrillage d'impression par défaut, donc désactivez PageSetup.PrintGridlines pour ce contrat pris en charge

Mode d'ajustement et défauts natifs

TXLSXWorksheet.PageFitToPages sélectionne le mode d'ajustement indépendamment de ses dimensions : régler FitToWidth ou FitToHeight sélectionne le mode d'ajustement, et régler PageScale sélectionne la mise à l'échelle en pourcentage

L'import XLSX préserve sheetPr/pageSetUpPr/@fitToPage et le défaut OOXML de un pour une dimension d'ajustement omise ; l'export conserve les dimensions zéro explicites, et la conversion XLS/XLSX préserve le mode sélectionné

La mise à l'échelle en pourcentage ignore des dimensions d'ajustement périmées ; le mode d'ajustement ignore une échelle en pourcentage stockée, et des dimensions d'ajustement positives ignorent les sauts manuels ; zéro sur les deux axes conserve les sauts manuels à une échelle de 100%, tandis que des limites positives réduisent un contenu surdimensionné sans agrandir une petite plage

La pagination logique dépend de la géométrie de l'instantané fourni ; les métriques des drivers d'imprimante et la mise à l'échelle de l'export PDF d'Excel peuvent changer la sortie physique et ne constituent pas une garantie d'équivalence visuelle exacte

Construire un plan détaché directement

CreateXLSPortablePrintPlan(Snapshot, Areas, Options) accepte des TXLSPortablePrintRanges inclusifs en base zéro ; un tableau Areas vide sélectionne tout l'instantané, et chaque TXLSPortablePrintRange contient FirstRow, FirstColumn, LastRow et LastColumn

Partez de XLSDefaultPortablePrintOptions, puis réglez les champs de TXLSPortablePrintOptions ci-dessous

ChampsContrat
PageWidthPoints, PageHeightPointsDimensions physiques positives du papier en points, A4 par défaut
MarginLeftPoints, MarginTopPoints, MarginRightPoints, MarginBottomPointsMarges non négatives laissant un rectangle imprimable positif, 36 points par défaut
Landscape, CenterHorizontally, CenterVerticallyLandscape échange les dimensions portrait ; le centrage s'applique au corps de chaque page et à ses titres répétés
ScalePercent10 à 400, 100 par défaut ; s'applique quand aucune dimension d'ajustement n'est positive
FitToPagesWide, FitToPagesTallLimites de pages non négatives, zéro pour un axe sans restriction ; des limites positives cherchent une échelle faisable entre 10% et 100%
TitleFirstRow, TitleLastRow, TitleFirstColumn, TitleLastColumnPlages de titres complètes inclusives en base zéro, ou -1 aux deux bornes pour désactiver cet axe
RowBreaks, ColumnBreaksTableaux TXLSPortablePrintBreaks de positions uniques strictement croissantes en base zéro où commence une nouvelle page ; l'adaptation du classeur trie les métadonnées détachées sans éditer la feuille
OrderTXLSPortablePrintOrder : xppoDownThenOver ou xppoOverThenDown
MaxPagesLimite totale positive de pages, 256 par défaut et 100 000 au maximum
MaxPlanBytesStockage de travail, payload de l'instantané détaché et enregistrements de pages partagent ce budget mémoire positif, 64 MiB par défaut et 1 GiB au maximum
MaxPlanningStepsBudget positif et borné de travail de planification, 64 Mi pas par défaut et 2 Gi pas au maximum ; le dépasser lève EXLSPortablePrintBudget

La géométrie doit être finie ; les dimensions masquées ont une taille nulle, un saut de page ne peut pas couper une fusion, une zone ou un titre ne peut pas intersecter partiellement une fusion, et une cellule ou une fusion surdimensionnée est rejetée au lieu d'être silencieusement coupée

Inspecter ou rendre le résultat

IXLSPortablePrintPlan.Snapshot détient un instantané de rendu immuable détaché, PageCount indique le nombre de pages logiques, et des Pages[Index] en base zéro renvoient un TXLSPortablePrintPage avec un tableau de tuiles détaché

Chaque page expose AreaIndex, AcrossIndex, DownIndex, son Body inclusif en base zéro, Scale, PageWidthPoints, PageHeightPoints et Tiles

TXLSPortablePrintTiles contient au plus quatre enregistrements TXLSPortablePrintTile pour le coin répété, les lignes de titres, les colonnes de titres et le corps ; chaque tuile expose la source non mise à l'échelle SourceLeft, SourceTop, SourceRight, SourceBottom et la destination physique DestinationLeft, DestinationTop

L'overload PrepareXLSPortableCairoLayout(Plan, Fonts, Options) conserve les enregistrements de pages détachés, rogne et met à l'échelle le contenu de scène pour chaque tuile, et emploie les dimensions de papier et les marges du plan ; les budgets raster, police, shaping et dessin continuent de s'appliquer au contenu répété

Layout.PageCount correspond au plan ; le PDF produit un fichier multipage, tandis que SVG et PNG produisent un fichier par page logique ; l'inspection des lignes de texte de la disposition conserve les coordonnées non mises à l'échelle de l'instantané plutôt que les positions répétées par page

Des fichiers de sortie existants sont rejetés, et le point d'entrée Cairo natif Windows reste explicitement non pris en charge ; voir la sortie headless portable pour les dépendances, le mappage de polices, les limites de scène et de sortie