Documentație HotXLS

Redare și export avansate

Căile PDF, SVG, bitmap, metafișier, previzualizare și tipărire partajează un singur model de paginare și o geometrie neutră față de backend, păstrând în același timp codificatoare specifice formatului

Backend-uri grafice personalizate

TXLSGraphicsTextAlign definește alinierea textului la stânga, centru și dreapta pentru TXLSGraphicsBackend; apelurile de desen cu stil primesc enumerațiile partajate rămase — stiluri de font (TXLSGraphicsFontStyles), capete de linie (TXLSGraphicsLineCap), tipare de linie întreruptă (TXLSGraphicsLineDash) și alinierea verticală a textului (TXLSGraphicsTextVAlign)

Ciclul de viață al paginiiBeginPage și EndPage
PrimitiviFillRect, StrokeRect, DrawLine, DrawStyledLine, DrawEllipse, DrawPath, DrawText, DrawStyledText, DrawCellText și DrawImage
Punct de intrare pentru paginareTXLSPaginationModel.RenderPageToBackend trimite o pagină logică către orice implementare de backend

Implementările primesc coordonate în puncte, efecte de text și imagine rezolvate, decupare și plasare a desenelor limitată la pagină, fără a fi nevoie să repete logica de aspect a registrului de lucru. Fiecare desen de pe o pagină logică sosește ca o înregistrare TXLSPageDrawingPlacement al cărei câmp Kind (TXLSPageDrawingKind: xpdkImage, xpdkChart, xpdkTextBox, xpdkShape, xpdkControl) îi spune backend-ului ce anume desenează; dalele de fundal ale foii de lucru sosesc ca TXLSSheetBackgroundRenderData deja decodat

Geometrie de randare deținută de operație

TXLSPaginationModel.RenderBackend selectează identitatea backend-ului care va fi capturată de următorul apel Build, iar RenderGeometry expune starea rezultată: calibrare imuabilă, generația registrului de lucru, backend-ul și cache-ul delimitat de metrici; sesiunea de randare activă circulă ca un handle TXLSRenderSession, iar politica de culoare este un TXLSRenderColorMode (xlsrcColor sau xlsrcMonochrome)

Modelele PDF folosesc xlsrgbPdf, SVG folosește xlsrgbSvg, imaginile de pagină folosesc xlsrgbBitmap, modelele de tipărire și de previzualizare a tipăririi folosesc xlsrgbPrintPreview, iar TXLSWorkbookViewer folosește xlsrgbViewer; proprietatea PaginationModel de pe componentele SVG, imagine, tipărire și vizualizator expune modelul activ pentru diagnosticare, fără să transfere proprietatea asupra lui

Punctele de intrare HTML Classic și XLSX capturează xlsrgbHtml; TXLSHTMLExport.RenderGeometry expune instantaneul Classic cel mai recent, în vreme ce TXLSXHtmlExportSession.RenderGeometry expune instantaneul păstrat pe parcursul tuturor foilor dintr-un export incremental

Ieșirea HTML pe coloane convertește modelul de lățime pe caracter al registrului de lucru prin lățimea maximă a cifrei din fontul Normal și prin scalarea de ecran configurată, înainte de a emite o lungime fixă în pixeli CSS; conversia dintre puncte și pixeli folosește același DPI de măsurare capturat

Fiecare operație își păstrează calibrarea capturată chiar dacă registrul de lucru se modifică ulterior, iar randarea nu scrie niciodată înălțimile rândurilor sau lățimile coloanelor din foaia de lucru. Paginarea construiește pagini din obiecte TXLSLogicalPage ale căror desene, orientare (TXLSPageOrientation: xpoPortrait sau xpoLandscape) și plasare a comentariilor (TXLSPrintComments: xpcNone sau xpcAtEnd) provin din configurarea paginii rezolvată

O pagină logică expune tot ce are nevoie un backend sau un callback: identitatea (DocumentPageNumber, SheetPageNumber, SheetName, ClassicWorksheet sau XlsxWorksheet deținătoare), geometria (PageWidth, PageHeight, Scale și valorile LeftMargin, RightMargin, TopMargin, BottomMargin, HeaderMargin și FooterMargin), dreptunghiul de date (DataFirstRow, DataLastRow, DataFirstCol, DataLastCol) cu titlurile de imprimare (RepeatFirstRow, RepeatLastRow, RepeatFirstCol, RepeatLastCol), plasarea fundalului (BackgroundOffsetX, BackgroundOffsetY), ieșirea liniilor de grilă (PrintGridlines, GridlineColor), cele șase texte de bandă de antet și subsol (LeftHeader, CenterHeader, RightHeader, LeftFooter, CenterFooter, RightFooter) și scheletele de rânduri și coloane ale paginii (RowCount cu Rows și RowEdges, ColumnCount cu Columns și ColumnEdges) plus lista de desene a paginii (DrawingCount și Drawings). ExpandHeaderFooter rezolvă codurile de format de antet și subsol în raport cu pagina, iar ExpandHeaderFooterStyled raportează în plus dimensiunea în puncte și culoarea primului segment de text, astfel încât pictorii personalizați să poată egala randarea de antet pe care o face Excel

Randarea fundalului foii de lucru

Vizualizatorul de registru de lucru afișează fundalurile valide de foi de lucru Classic și XLSX ca dale repetitive în spatele celulelor fără umplere, iar umpluturile explicite și condiționate ale celulelor rămân deasupra fundalului

TXLSPaginationModel, TXLSSvgExport, TXLSPageImageExporter, TXLSPrintDocument, TXLSPDFExport, TXLSHTMLExport, TXLSXHtmlExportOptions și TXLSWorkbookViewer expun ExportSheetBackgroundImages; valoarea implicită este False pentru ieșirea de tipărire, previzualizare, metafișier, PDF, SVG, bitmap și HTML. Foile de lucru își stochează sarcina cu un format de imagine TXLSSheetBackgroundFormat, iar octeții decodați circulă ca o resursă TXLSSheetBackgroundResource cheiată după generație, DPI și mod de culoare

Când este activată, ieșirea paginată ancorează faza de dale de coordonatele foii de lucru dincolo de limitele de pagină și reține o singură imagine decodată per foaie de lucru, per generație de resursă, backend, DPI și mod de culoare pentru sesiunea de randare; BackgroundDecodeCount expune totalul decodărilor pentru diagnosticare, iar sarcinile corupte sunt sărite cu un diagnostic al registrului de lucru. Sesiunea activă TXLSRenderSession gestionează singură acel cache partajat: AcquireBackground preia (sau decodifică o singură dată) TXLSSheetBackgroundRenderData cu dale pentru o foaie de lucru, DrawTiledBackground o desenează pe o regiune de pagină decupată, iar DecodeCount raportează câte sarcini au fost decodificate până acum

Politica de afișare a obiectelor din registru

ObjectDisplayMode selectează xlsodmShowAll, xlsodmShowPlaceholders sau xlsodmHideAll atât pentru registrele de lucru XLS Classic, cât și pentru cele XLSX; vizualizatorul consumă toate trei stările și folosește cutii ieftine cu tip, nume, text și text alternativ pentru modul placeholder

Exportoarele PDF, SVG, bitmap, tipărire fizică și HTML XLSX tratează modul placeholder ca ieșire cu obiecte complete, în mod implicit; setează ExportObjectPlaceholders pe exportorul sau pe opțiunile HTML corespunzătoare pentru a cere cutii fără decodificare de imagini sau construcție de scenă de diagramă

xlsodmHideAll este o poartă globală, aplicată mai devreme, care previne colectarea desenelor, extinderea intervalelor condusă de obiecte, testarea loviturilor și randarea mediilor; fundalurile foilor de lucru, iconițele de formatare condiționată, imaginile de antet sau subsol, celulele și filtrele de obiecte de imprimare specifice exportorului rămân independente de ea

Axa de date a diagramelor, adaptată la calendar

Diagramele XLSX a căror axă de categorii folosește xlsxAxisDate mapează fiecare categorie validă prin sistemul de date seriale 1900 sau 1904 al registrului de lucru și păstrează distanța reală dintre datele rare, în loc să atribuie tuturor punctelor intervale egale

BaseTimeUnit controlează normalizarea pe zi, lună sau an, în vreme ce MajorUnit, MinorUnit, MajorTimeUnit și MinorTimeUnit avansează diviziunile în unități calendaristice; intervalele de lună și an rămân astfel aliniate în ciuda lunilor de durate inegale și a anilor bisecți

Aceeași colecție delimitată de diviziuni furnizează coordonatele, etichetele, bifele și liniile de grilă cerute ieșirii PDF, SVG, bitmap, previzualizare, tipărire și vizualizator bazate pe paginare, în vreme ce HTML-ul XLSX folosește aceeași aritmetică calendaristică partajată pentru SVG-ul de diagramă încorporat

Editor PDF de sine stătător

TXLSPDFWriter creează documente PDF care nu provin dintr-un registru de lucru, cum ar fi facturi, tichete, etichete și formulare suprapuse; BeginDoc stabilește un dreptunghi de pagină cu precizie în puncte, NewPage închide pagina curentă, iar SaveToStream sau SaveToFile finalizează documentul

Metodele de desen folosesc puncte PDF măsurate din colțul din stânga jos și culorile bibliotecii în forma $00BBGGRR sau $AABBGGRR; primitivile disponibile acoperă FillRectangle, StrokeRectangle, ClipRectangle, MeasureText, SaveGraphicsState și RestoreGraphicsState pentru dreptunghiuri umplute și trasate, linii, elipse, text cu stil cu măsurare exactă a lățimii, transformări afin, decupare dreptunghiulară și salvare sau restaurare explicită a stării grafice, în vreme ce PageWidth și PageHeight raportează dreptunghiul paginii curente în puncte

Export SVG

TXLSSvgExport oferă șapte supraîncărcări SaveAsSVG pentru intervale clasice și XLSX, foi de lucru, registre de lucru și pagini logice pregătite, plus ieșire pentru obiecte denumite acolo unde este acceptată

UseWorksheetPageSetup, Orientation și Margin folosesc aceleași decizii de configurare a paginii ca și ieșirea PDF și previzualizarea

TXLSSvgExport.PrintComments (tip TXLSPrintComments) selectează modul în care sunt emise comentariile de celulă pentru ieșirea SVG paginată; cu xpcAtEnd, ultima pagină a foii adaugă o listă de comentarii (adresa celulei, autorul și textul) sub zona de date, iar xpcNone omite comentariile

ExportPages trimite câte un document SVG complet prin OnPage, raportează numărul de pagini comise prin ExportedPageCount și se oprește înainte să genereze paginile următoare dacă callback-ul anulează; IdPrefix creează spații de nume deterministe pentru document și pagini, folosite de căile de decupare, filtre, tipare și resurse partajate

HyperlinkMode (tip TXLSSvgHyperlinkMode) cu xshmSafe adaugă regiuni transparente de lovire decupate după conținutul vizual; schemele externe permise sunt HTTP, HTTPS, mail, FTP și legăturile relative, în vreme ce țintele active, locale, UNC și cele cu caractere de control sunt omise; LinksInNewWindow adaugă protecția noopener noreferrer, iar sfaturile de ecran devin titluri SVG

Ieșire PNG, JPEG incrementară și TIFF multipagină

TXLSPageImageFormat selectează ieșirea PNG sau JPEG, iar TXLSPageImageExporter menține activă o singură sesiune de paginare eliberând prompt fiecare bitmap finalizat

SesiuneȘase supraîncărcări BeginExport acceptă intervale clasice sau XLSX, foi de lucru și registre de lucru; ExportNext scrie o pagină, iar EndExport eliberează sesiunea
TIFF multipaginăExportAllAsTiff scrie paginile logice selectate într-un flux sau fișier ca un singur TIFF comprimat LZW, păstrând semantică de progres, anulare și destinație atomică
Configurare paginăUseWorksheetPageSetup, Orientation, Margin, DefaultRowHeight, PaperWidthOverride și PaperHeightOverride
Ieșire rasterScale, ImageFormat și JpegQuality, în vreme ce ExportObjectAsPNG randează un singur obiect de desen într-un PNG deținut
Intervale compacteExportRange randează un interval clasic sau XLSX ca o singură imagine raster strâmtă, fără hârtie, margini, antete, subsoluri, titluri de imprimare sau întreruperi de pagină
Evenimente pe canvasBeforeRenderPage rulează după ștergerea fundalului, iar AfterRenderPage rulează după pictura registrului de lucru dar înainte de codificare; cadrele PNG, JPEG și TIFF împart aceeași cale de evenimente
StareActive, Aborted, TotalPageCount, PageCount și ExportedPageCount

PDF etichetat și PDF/A

TXLSPDFExport.TagMode activează structura automată de document, tabel, rând, celulă de antet, celulă de date și imagine informativă, cu identificatori de conținut marcat denși, locali paginii, mapări exacte de arbore-părinte, span-uri pentru celule unite și izolare a artefactelor; rândurile de titlu de imprimare și rândurile de antet ale tabelului devin celule de antet semantice, imaginile XLSX cu AltText nevid devin elemente Figure independente cu text alternativ Unicode, iar imaginile fără text alternativ rămân artefacte decorative

Fiecare instanță vizibilă de imagine informativă primește propriul element Figure și propriul identificator de conținut marcat, chiar când sarcini de imagine identice împart un singur XObject PDF; AltTextTitle nu înlocuiește textul alternativ lipsă, diagramele rămân artefacte, iar acest suport de structură focalizat nu pretinde conformitate PDF/UA completă

TXLSPDFExport.PDFAProfile selectează PDF/A-1, PDF/A-2 sau PDF/A-3 la nivelul de conformitate a sau b; criptarea, fonturile, atașamentele, transparența, semnăturile și metadatele incompatibile sunt validate înainte de a fi comis fluxul de ieșire

TXLSPDFExport.ExportCommentsAsAnnotations plasează textul comentariilor și autorul Unicode pe dreptunghiurile celulelor de origine, în timp ce ieșirea tradițională cu comentarii la final rămâne configurabilă independent

UsePDFA este comutatorul de compatibilitate pentru PDF/A-1b, în timp ce UseXRefStream selectează fluxuri de referință încrucișată acolo unde profilul ales le permite

Geometria și selecția paginilor

Cele șase supraîncărcări CalculatePageCount acceptă intervale clasice și XLSX, foi de lucru sau registre de lucru fără a construi obiecte PDF

PaperWidth și PaperHeight suprascriu dimensiunile hârtiei în puncte, LastPage închide intervalul de ieșire bazat pe 1, Orientation (tip TXLSPDFOrientation) selectează ieșirea portret sau peisaj, HidePrintObjects (o mulțime de TXLSPDFHidePrintObject: xlsPdfHideHeaders, xlsPdfHideFooters) suprimă benzile selectate de antet sau subsol, iar PageLayout (tip TXLSPDFPageLayout) setează aranjamentul inițial al paginilor în vizualizator

Mod de pagină și acțiune la deschidere pentru PDF

TXLSPDFExport.PageMode (tip TXLSPDFPageMode) stabilește modul în care un vizualizator PDF aranjează panourile la deschiderea documentului, prin xlsPdfModeDefault, xlsPdfModeUseOutlines, xlsPdfModeUseThumbs, xlsPdfModeFullScreen, xlsPdfModeUseOC și xlsPdfModeUseAttachments

OpenAction (tip TXLSPDFOpenAction) selectează comportamentul inițial al vizualizatorului, cu xlsPdfOpenNone, xlsPdfOpenPage sau xlsPdfOpenOutlines. Pentru xlsPdfOpenPage, OpenActionPage este pagina țintă bazată pe 1 (limitată la numărul de pagini), iar OpenActionZoom este factorul inițial de magnificare, unde 0 păstrează zoom-ul sau încadrarea implicită a vizualizatorului

Geometrie vectorială adaptivă partajată

XLSBuildEllipticArcCubics convertește un arc eliptic în segmente Bézier cubice prin impunerea recursivă a unei limite de planeitate alese de apelant; randarea PDF, SVG și bitmap folosește această geometrie partajată, astfel încât arcele mari sau foarte excentrice primesc mai multe segmente fără să penalizeze arcele simple

XLSDecodeVectorScene validează antetele EMF și WMF, alinierea și dimensiunile înregistrărilor, totalurile declarate, plasarea exactă a EOF și limitele de resurse fără să apeleze redarea de metafișiere a platformei; whitelist-ul nativ retransmite stivele de stare ale contextului de dispozitiv cu save și restore, maparea de fereastră și viewport combinată cu transformări globale, tabele de obiecte pentru pix, pensulă și pix extins inclusiv obiecte stoc, dreptunghiuri, elipse, lanțuri de linii, poligoane, polilinii și curbe Bézier cu stiluri de linie întreruptă, paranteze de cale cu treceri de umplere, trasare și combinate, dreptunghiuri rotunjite, arce, coarde, sectoare și arce de unghi prin conversie exactă arc-Bézier, umpleri și contururi de regiuni din dreptunghiuri RGNDATA delimitate, secvențe de text delimitate cu fonturi, culori și aliniere, și imagini stretch-DIB restrânse recodificate ca PNG prin Canvas și SVG; respinge înregistrările escape și lasă decuparea și înregistrările private căii de rezervă delimitate existente

Contururi PDF și callback-uri de pagină

Contururile PDF trăiesc în colecția Bookmarks (tip TXLSPDFBookmarks): Add și AddForSheet adaugă intrări, Delete elimină una, iar Count cu Items enumerează arborele. Fiecare intrare TXLSPDFBookmark suportă intrări părinte și copil (Children), lanțuri între frați, titluri Unicode, culori (Color), o țintă PageNumber, SheetName-ul sursă pentru marcajele de foaie de lucru, fanioanele bold sau italic (mulțime de TXLSPDFBookmarkStyle: xlsPdfBookmarkBold, xlsPdfBookmarkItalic) și descendenți expandați sau pliați; marcajele automate de foaie de lucru folosesc același model ierarhic, iar AutoSheetBookmarks comută generarea lor

BeforeNewPage poate ajusta fiecare dreptunghi de pagină, în vreme ce BeforeGeneratePage și AfterGeneratePage desenează conținut de fundal sau suprapunere prin ajutoarele publice de pagină AppendPageContent, FillPageRectangle, StrokePageRectangle și DrawPageText

Semnături și atașamente

TXLSPDFSignature configurează câmpuri de semnătură vizibile sau invizibile, în vreme ce CertificationPolicy creează opțional o semnătură de certificare DocMDP care permite fie nicio modificare, fie completarea și semnarea de formulare, fie completarea, semnarea și adaosul de adnotări; PDF/A-1 nu permite această funcționalitate PDF 1.5 și este respinsă înainte ca ieșirea să fie comisa

TXLSPDFCertificationPolicy oferă xlsPdfApprovalSignature, xlsPdfCertifyNoChanges, xlsPdfCertifyFormFillingAndSigning și xlsPdfCertifyFormFillingSigningAndAnnotations pentru a selecta explicit politica de semnătură

Un TXLSPDFSignDigestEvent primește rezumatul și returnează date CMS create de gazdă, astfel încât HotXLS nu are niciodată nevoie de o cheie privată

TXLSPDFExport.Signature atașează configurația semnăturii, iar profilele PDF/A-3 pot include fișiere asociate validate prin AddAttachment, care pune în coadă un TXLSPDFAttachment; supraîncărcarea detaliată acceptă un nume afișat Unicode, un tip MIME, o descriere, un timp de modificare, sarcina și o valoare TXLSPDFAttachmentRelationship de tip Source, Data, Alternative, Supplement sau Unspecified, în vreme ce AttachmentCount raportează totalul din coadă, iar AttachmentDuplicatePolicy (tip TXLSPDFAttachmentDuplicatePolicy) selectează cum sunt tratate numele identice

TXLSPDFSignature.ImageData, ImageFormat și ImageFit (tip TXLSPDFSignatureImageFit: contain, cover sau stretch) plasează un PNG în Form-ul de înfățișare normală înainte ca intervalul de octeți să fie înghețat; modurile contain, cover și stretch împart cache-ul de imagini al documentului, iar imaginile invalide eșuează înainte de semnare

Supraîncărcarea IXLSPDFAttachmentSource rămâne leneșă până la salvare, invocă fiecare sursă o singură dată per salvare și înghesuie cel mult 256 MiB înainte ca obiectul EmbeddedFile să fie creat, astfel încât eșecurile furnizorului lasă tranzacția de destinație neschimbată

Asamblarea finală scrie obiectele secvențial în destinație în loc să construiască un singur șir pentru tot documentul: exporturile nesemnate transmit direct în fluxuri forward-only, fiecare EmbeddedFile își referențiază dimensiunea în octeți printr-un obiect oblic /Length emis după sarcină, iar octeții furnizorului se copiază din spool în porții fixe; exporturile semnate se asamblează într-un spool de document delimitat care primește corecțiile pentru ByteRange și pentru conținutul semnăturii, un SHA-256 incremental pe cele două intervale acoperite și o singură copiere forward

Ieșirea PDF/A-3 scrie fiecare fișier asociat atât în arborele de nume EmbeddedFiles, cât și în vectorul AF al catalogului, cu un nume Unicode UF, un PDF Name MIME cu caractere de evadare, AFRelationship, dimensiunea în octeți, o dată de modificare opțională și o descriere opțională; PDF/A-1 și PDF/A-2 resping atașamentele din coadă înainte să comită ieșirea

Metadatele documentului

DocumentTitle, DocumentAuthor, DocumentSubject, DocumentKeywords și DocumentFileName populează dicționarele de informații și metadate PDF

Fonturi de rezervă

TXLSPDFExport.SetFontFallbackChain, AddFontFallback și ClearFontFallbackChains configurează niveluri de rezervă specifice familiei sursă și stilului; LoadedFallbackFontCount expune numărul de fețe font în cache și FontFallbackSelectionCacheCount numărul de decizii de rezervă per selecție memorate în cache, ambele pentru diagnosticare

TXLSPDFExport.FontSize stabilește dimensiunea implicită a textului în puncte, cu 9 ca valoare implicită

Selecția fonturilor de rezervă folosește acoperirea glifelor și păstrează mapările Unicode, scalarii suplimentari, clusterele de grafeme, clusterele de modelare și fețele TTC independente

OnGetFontDirectories poate returna unul sau mai multe directoare de fonturi separate prin punct și virgulă pentru o familie și un stil cerute; directoarele acceptate sunt căutate recursiv o singură dată, indexate după metadatele interne de familie și stil și memorate în cache pentru măsurătorile și desenul ulterioare

Politica de încorporare a fonturilor

TXLSPDFExport.FontEmbedding (tip TXLSPDFFontEmbedding) selectează încorporarea automată, subterifierea obligatorie, programul complet de font sau ieșirea doar cu tabel de corespondență, prin xlsPdfFontEmbedAuto, xlsPdfFontEmbedSubset, xlsPdfFontEmbedFull și xlsPdfFontEmbedNone; subterifierea obligatorie eșuează atomic când nu poate produce un subset valid, fețele TTC sunt convertite în fonturi de sine stătătoare, iar PDF/A respinge ieșirea doar cu tabel de corespondență

OnFontEmbed se declanșează o singură dată per față Unicode, înainte ca metricile, tabelul de caractere, modelarea și identificatorii de glife să fie rezolvați; setarea lui Handled acceptă modul per-font returnat și octeții de înlocuire opționali, iar lăsarea lui false păstrează politica documentului și fața originală

Fonturile OpenType de sine stătătoare cu contururi CFF se încorporează prin FontFile3 cu un flux OpenType și un descendent CIDFontType0; modurile automat și complet păstrează programul integral, iar subterifierea CFF obligatorie eșuează atomic pentru că nu poate păstra un subset valid

Fonturile încorporate care transportă date OpenType GPOS sau kern moștenite folosesc avansuri de glife poziționate pentru text simplu și complex, astfel încât măsurarea, încadrarea, alinierea și pozițiile de glife emise să împartă același rezultat de kerning

Progres și anulare

TXLSPDFExport.OnProgress și OnProgressEx raportează fazele de început, pagină și final; Cancel solicită anularea, iar Aborted raportează starea finală fără a comite un flux parțial

Consultați și