Dokumentácia HotXLS

Pokročilé vykresľovanie a export

Cesty PDF, SVG, bitmapy, metafile, náhľadu a tlače zdieľajú jeden model stránkovania a backendovo neutrálnu geometriu, pričom každý formát si ponecháva svoj špecifický kodér

Vlastné grafické backendy

TXLSGraphicsTextAlign definuje zarovnanie textu vľavo, na stred a vpravo pre TXLSGraphicsBackend; štýlované kresliace volania používajú zvyšné zdieľané enumerátory — štýly písma (TXLSGraphicsFontStyles), koncovky čiar (TXLSGraphicsLineCap), čiarkované vzory (TXLSGraphicsLineDash) a zvislé zarovnanie textu (TXLSGraphicsTextVAlign)

Životný cyklus stránkyBeginPage a EndPage
PrimitívyFillRect, StrokeRect, DrawLine, DrawStyledLine, DrawEllipse, DrawPath, DrawText, DrawStyledText, DrawCellText a DrawImage
Vstupný bod stránkovaniaTXLSPaginationModel.RenderPageToBackend odošle jednu logickú stránku ľubovoľnej implementácii backendu

Implementácie dostávajú súradnice v bodoch, vyriešené efekty textu a obrázkov, orezanie a umiestnenie kresby v rámci stránky, bez toho, aby museli opakovať logiku rozloženia zošita. Každý kresliaci objekt na logickej stránke prichádza ako záznam TXLSPageDrawingPlacement, ktorého Kind (TXLSPageDrawingKind: xpdkImage, xpdkChart, xpdkTextBox, xpdkShape, xpdkControl) hovorí backendu, čo sa kreslí; dlaždice pozadia hárka prichádzajú dekodované ako TXLSSheetBackgroundRenderData

Geometria vykresľovania vlastnená operáciou

TXLSPaginationModel.RenderBackend vyberá identitu backendu, ktorú zachytí nasledujúce volanie Build, a RenderGeometry sprístupňuje výslednú nemennú kalibráciu, generáciu zošita, backend a obmedzený stav metrickej cache; aktívna relácia vykresľovania sa prenáša ako handle TXLSRenderSession a politika farieb je TXLSRenderColorMode (xlsrcColor alebo xlsrcMonochrome)

Modely PDF používajú xlsrgbPdf, SVG xlsrgbSvg, obrázky stránok xlsrgbBitmap, modely tlače a náhľadu tlače xlsrgbPrintPreview a TXLSWorkbookViewer používa xlsrgbViewer; PaginationModel komponentov SVG, obrázka, tlače a prehliadača sprístupňuje aktívny model na diagnostiku bez prenosu vlastníctva

Kľúčové body Classic a XLSX HTML zachytávajú xlsrgbHtml; TXLSHTMLExport.RenderGeometry sprístupňuje najnovšiu snímku Classic, zatiaľ čo TXLSXHtmlExportSession.RenderGeometry sprístupňuje snímku zachovanú naprieč všetkými hárkami inkrementálneho exportu

Výstup stĺpcov HTML prevádza model šírky znaku zošita cez maximálnu šírku číslice písma Normal a nakonfigurované škálovanie obrazovky, než emituje pevnú dĺžku v CSS pixeloch; prevod bodov a pixelov používa tú istú zachytenú meraciu DPI

Každá operácia si drží kalibráciu, ktorú zachytila, aj keby sa zošit neskôr zmenil, a vykresľovanie nikdy nezapisuje výšky riadkov ani šírky stĺpcov hárka. Stránkovanie stavia stránky z objektov TXLSLogicalPage, ktorých kresby, orientácia (TXLSPageOrientation: xpoPortrait alebo xpoLandscape) a umiestnenie komentárov (TXLSPrintComments: xpcNone alebo xpcAtEnd) vychádzajú z vyriešeného nastavenia strany

Logická stránka expose všetko, čo backend alebo callback potrebuje: identitu (DocumentPageNumber, SheetPageNumber, SheetName, vlastnený ClassicWorksheet alebo XlsxWorksheet), geometriu (PageWidth, PageHeight, Scale a hodnoty LeftMargin, RightMargin, TopMargin, BottomMargin, HeaderMargin a FooterMargin), dátový obdĺžnik (DataFirstRow, DataLastRow, DataFirstCol, DataLastCol) s tlačovými nadpismi (RepeatFirstRow, RepeatLastRow, RepeatFirstCol, RepeatLastCol), umiestnenie pozadia (BackgroundOffsetX, BackgroundOffsetY), výstup mriežky (PrintGridlines, GridlineColor), šesť textov pásov hlavičky a päty (LeftHeader, CenterHeader, RightHeader, LeftFooter, CenterFooter, RightFooter) a kostry riadkov a stĺpcov stránky (RowCount s Rows a RowEdges, ColumnCount s Columns a ColumnEdges) plus jej zoznam kresieb (DrawingCount a Drawings). ExpandHeaderFooter vyrieši formátové kódy hlavičky a päty voči stránke a ExpandHeaderFooterStyled navyše reportuje počiatočnú veľkosť v bodoch a farbu, aby vlastní maliari vedeli zosúladiť vykreslenie hlavičky s Excelom

Vykresľovanie pozadia hárka

Prehliadač zošita zobrazuje platné pozadia hárkov Classic i XLSX ako opakujúce sa dlaždice pod nevyplnenými bunkami, zatiaľ čo explicitné a podmienené výplne buniek ostávajú nad pozadím

TXLSPaginationModel, TXLSSvgExport, TXLSPageImageExporter, TXLSPrintDocument, TXLSPDFExport, TXLSHTMLExport, TXLSXHtmlExportOptions a TXLSWorkbookViewer expose ExportSheetBackgroundImages; predvolená hodnota je False pre tlač, náhľad, metafile, PDF, SVG, bitmapu aj HTML výstup. Hárky ukladajú payload s formátom obrázka TXLSSheetBackgroundFormat a dekodované bajty sa prenášajú ako TXLSSheetBackgroundResource kľúčovaný generáciou, DPI a farebným režimom

Povolený stránkovaný výstup ukotvuje fázu dlaždíc na súradnice hárka naprieč hranicami stránok a pre reláciu vykresľovania uchováva jeden dekodovaný obrázok na kombináciu hárka, generácie zdroja, backendu, DPI a farebného režimu; BackgroundDecodeCount sprístupňuje celkový počet dekodovaní na diagnostiku a poškodené payloady sa preskakujú s diagnostikou zošita. Aktívna TXLSRenderSession spravuje zdieľanú cache sama: AcquireBackground získa (alebo raz dekóduje) dlaždicové TXLSSheetBackgroundRenderData pre hárok, DrawTiledBackground ich vykreslí cez orezanú oblasť stránky a DecodeCount reportuje, koľko payloadov zatiaľ dekódovala

Politika zobrazovania objektov zošita

ObjectDisplayMode vyberá xlsodmShowAll, xlsodmShowPlaceholders alebo xlsodmHideAll pre klasické XLS aj XLSX zošity; prehliadač spotrebúva všetky tri stavy a v režime placeholderov používa lacné rámečky s typom, názvom, textom a alternatívnym textom

Exportéry PDF, SVG, bitmapy, fyzickej tlače a XLSX HTML berú režim placeholderov štandardne ako výstup plných objektov; ak chcete rámečky bez dekodovania obrázkov alebo konštrukcie scény grafu, nastavte ExportObjectPlaceholders na príslušnom exportéry alebo vo voľbách HTML

xlsodmHideAll je skorá globálna brána, ktorá zabraňuje zberu kresieb, expanzii rozsahov poháňanej objektmi, hit testovaniu a renderovaniu médií; pozadia hárkov, ikony podmieneného formátovania, obrázky hlavičky či päty, bunky a filtrovacie tlačové objekty špecifické pre exportér ostávajú nezávislé

Dátové osi grafov orientované na kalendár

XLSX grafy, ktorých kategóriová os používa xlsxAxisDate, mapujú každú platnú kategóriu cez systém sériových dátumov 1900 alebo 1904 príslušného zošita a zachovávajú skutočnú vzdialenosť medzi riedkymi dátumami namiesto priraďovania rovnako veľkých bodových slotov

BaseTimeUnit riadi normalizáciu na dni, mesiace alebo roky a MajorUnit, MinorUnit, MajorTimeUnit a MinorTimeUnit posúvajú dieliky po kalendárnych jednotkách; mesačné a ročné intervaly preto ostávajú zarovnané naprieč nerovnakými dĺžkami mesiacov aj prestupnými rokmi

Tá istá obmedzená kolekcia dielikov dodáva súradnice, popisky, dieliky a požadované čiary mriežky pre výstup PDF, SVG, bitmapy, náhľad, tlač a prehliadač postavený na stránkovaní, zatiaľ čo XLSX HTML používa zdieľanú kalendárnu aritmetiku pre svoj inline SVG graf

Samostatný zápisovač PDF

TXLSPDFWriter vytvára PDF dokumenty, ktoré nevznikli zo zošita — faktúry, lístky, štítky, prekryvné formuláre; BeginDoc nastaví rámeček stránky s presnosťou na body, NewPage uzatvorí aktuálnu stránku a SaveToStream alebo SaveToFile dokument dokončia

Kresliace metódy používajú PDF body od ľavého dolného roha a farby knižnice v tvare $00BBGGRR alebo $AABBGGRR; dostupné primitívy pokrývajú FillRectangle, StrokeRectangle, ClipRectangle, MeasureText, SaveGraphicsState a RestoreGraphicsState pre výplňové a obrysované obdĺžniky, čiary, elipsy, štýlovaný text s presným meraním šírky, afinné transformácie, obdĺžnikové orezanie a explicitné uloženie alebo obnovenie grafického stavu, pričom PageWidth a PageHeight reportujú aktuálny rámeček stránky v bodoch

Export SVG

TXLSSvgExport poskytuje sedem preťažení SaveAsSVG pre klasické a XLSX rozsahy, hárky, zošity a pripravené logické stránky, a navyše výstup pomenovaných objektov tam, kde je to podporované

UseWorksheetPageSetup, Orientation a Margin používajú rovnaké rozhodnutia nastavenia stránky ako výstup PDF a náhľad

TXLSSvgExport.PrintComments (typ TXLSPrintComments) vyberá, ako sa komentáre buniek emitujú pri stránkovanom SVG výstupe; pri xpcAtEnd posledná stránka hárka pripojí pod dátovú oblasť zoznam komentárov (adresa bunky, autor a text), zatiaľ čo xpcNone komentáre vynecháva

ExportPages posiela po jednom kompletnom SVG dokumente cez OnPage, reportuje počet odovzdaných stránok cez ExportedPageCount a pri zrušení callbackom zastaví skôr, než vygeneruje neskoršie stránky; IdPrefix vytvára deterministické namespace dokumentu a stránok pre cesty orezania, filtre, vzory a zdieľané zdroje

HyperlinkMode (typ TXLSSvgHyperlinkMode) s xshmSafe pridáva za vizuálny obsah orezané priehľadné zásahové oblasti; povolené externé schémy sú HTTP, HTTPS, mail, FTP a relatívne odkazy, zatiaľ čo aktívne, lokálne, UNC a ciele s riadiacimi znakmi sa vynechávajú; LinksInNewWindow pridáva ochranu noopener noreferrer a tipy obrazovky sa stanú SVG titulkami

Inkrementálny výstup PNG, JPEG a viacstránkového TIFF

TXLSPageImageFormat vyberá výstup PNG alebo JPEG a TXLSPageImageExporter udržiava jednu živú reláciu stránkovania a súčasne promptne uvoľňuje každú dokončenú bitmapu

ReláciaŠesť preťažení BeginExport prijíma klasické alebo XLSX rozsahy, hárky a zošity; ExportNext zapíše jednu stránku a EndExport uvoľní reláciu
Viacstránkový TIFFExportAllAsTiff zapíše vybrané logické stránky do toku alebo súboru ako jeden LZW-komprimovaný TIFF a zároveň zachová sémantiku priebehu, zrušenia a atomickej destinácie
Nastavenie stránkyUseWorksheetPageSetup, Orientation, Margin, DefaultRowHeight, PaperWidthOverride a PaperHeightOverride
Rastrový výstupScale, ImageFormat a JpegQuality; ExportObjectAsPNG vykreslí jeden kresliaci objekt do vlastneného PNG
Kompaktné rozsahyExportRange vykreslí klasický alebo XLSX rozsah ako jednu tesnú rastrovú bitmapu bez papiera, okrajov, hlavičiek, pät, tlačových nadpisov ani zalomení stránok
Udalosti canvasuBeforeRenderPage beží po vyčistení pozadia a AfterRenderPage po vykreslení zošita, ale pred kódovaním; snímkové rámce PNG, JPEG aj TIFF zdieľajú tú istú cestu udalostí
StavActive, Aborted, TotalPageCount, PageCount a ExportedPageCount

Tagovaný PDF a PDF/A

TXLSPDFExport.TagMode zapína automatickú štruktúru dokumentu, tabuliek, riadkov, buniek hlavičky, dátových buniek a informačných obrázkov s hustými identifikátormi označeného obsahu lokálnymi pre stránku, presnými mapovaniami stromu rodičov, span zlúčených buniek a izoláciou artefaktov; riadky tlačových nadpisov a hlavičkové riadky tabuliek sa stanú sémantickými bunkami hlavičky, obrázky XLSX s neprázdnym AltText sa stanú samostatnými elementmi Figure s alternatívnym textom v Unicode a obrázky bez alternatívneho textu ostávajú dekoratívnymi artefaktmi

Každá viditeľná inštancia informačného obrázka dostane vlastný element Figure a identifikátor označeného obsahu, aj keď sa rovnaké obrazové payloady delia o jeden XObject PDF; AltTextTitle nenahrádza chýbajúci alternatívny text, grafy ostávajú artefaktmi a táto cielená podpora štruktúry netvrdí, že ide o úplnú zhodu s PDF/UA

TXLSPDFExport.PDFAProfile vyberá PDF/A-1, PDF/A-2 alebo PDF/A-3 na úrovni zhody a alebo b; nekompatibilné šifrovanie, písma, prílohy, priehľadnosť, podpisy a metadáta sú overené pred odovzdaním výstupného toku

TXLSPDFExport.ExportCommentsAsAnnotations umiestňuje text autora a komentára v Unicode na obdĺžniky zdrojových buniek, pričom tradičný výstup komentárov na konci zostáva nezávisle konfigurovateľný

UsePDFA je prepínač kompatibility pre PDF/A-1b, zatiaľ čo UseXRefStream vyberá cross-reference streamy tam, kde ich zvolený profil povoľuje

Geometria a výber stránok

Šesť preťažení CalculatePageCount prijíma klasické a XLSX rozsahy, hárky alebo zošity bez vytvárania PDF objektov

PaperWidth a PaperHeight prepisujú rozmery papiera v bodoch, LastPage uzatvára výstupný interval od jednotky, Orientation (typ TXLSPDFOrientation) vyberá výstup na výšku alebo na šírku, HidePrintObjects (množina TXLSPDFHidePrintObject: xlsPdfHideHeaders, xlsPdfHideFooters) potláča vybrané pásy hlavičky alebo päty a PageLayout (typ TXLSPDFPageLayout) nastavuje počiatočné usporiadanie stránok v prehliadači

Režim stránok PDF a otváracia akcia

TXLSPDFExport.PageMode (typ TXLSPDFPageMode) nastavuje, ako PDF prehliadač usporiada panely pri otvorení dokumentu, cez xlsPdfModeDefault, xlsPdfModeUseOutlines, xlsPdfModeUseThumbs, xlsPdfModeFullScreen, xlsPdfModeUseOC a xlsPdfModeUseAttachments

OpenAction (typ TXLSPDFOpenAction) vyberá počiatočné správanie prehliadača pomocou xlsPdfOpenNone, xlsPdfOpenPage alebo xlsPdfOpenOutlines. Pri xlsPdfOpenPage je OpenActionPage cieľová stránka od jednotky (osekaná na počet stránok) a OpenActionZoom počiatočný faktor zväčšenia, pričom 0 ponecháva predvolené priblíženie alebo fit prehliadača

Zdieľaná adaptívna vektorová geometria

XLSBuildEllipticArcCubics prevedie eliptický oblúk na kubické Bézierove segmenty rekurzívnym vynucovaním hranice plochosti zvolenej volajúcim; PDF, SVG aj bitmapové vykresľovanie používajú túto zdieľanú geometriu, takže veľké alebo silne excentrické oblúky dostanú viac segmentov bez toho, aby za to jednoduché oblúky zaplatili

XLSDecodeVectorScene overuje hlavičky EMF a WMF, zarovnanie a veľkosti záznamov, deklarované súčty, presné umiestnenie EOF a limity zdrojov bez volania prehrávania metafile platformy; natívny whitelist prehráva zásobníky stavu device contextu s save a restore, mapovanie okna a viewportu kombinované so svetovými transformáciami, tabuľky objektov peria, štetca a rozšíreného per vrátane stock objektov, obdĺžniky, elipsy, reťazce čiar, mnohouholníky, lomené čiary a Bézierove krivky s čiarkovanými štýlmi, zátvorky ciest s výplňou, obrysom a kombinovanými priechodmi výplne a obrysu, zaoblené obdĺžniky, oblúky, tetivy, výseky a uhlové oblúky cez presný prevod oblúka na Bézierove segmenty, výplne a obrysy oblastí z obmedzených obdĺžnikov RGNDATA, obmedzené textové behy s písmami, farbami a zarovnaním a obmedzené stretch-DIB obrázky znovu zakódované ako PNG cez Canvas a SVG, odmieta escape záznamy a orezávanie aj súkromné záznamy necháva na existujúcom obmedzenom záložnom riešení

Osnovy PDF a callbacky stránok

Osnovy PDF žijú v kolekcii Bookmarks (typ TXLSPDFBookmarks): Add a AddForSheet pridávajú položky, Delete jednu odoberie a Count s Items enumerujú strom. Každá položka TXLSPDFBookmark podporuje nadradené a podradené položky (Children), reťazce súrodencov, tituly v Unicode, farby (Color), cieľ PageNumber, zdrojový SheetName pre osnovy hárkov a príznaky tučného alebo kurzívneho písma (množina TXLSPDFBookmarkStyle: xlsPdfBookmarkBold, xlsPdfBookmarkItalic), plus rozbalených alebo zbalených potomkov; automatické osnovy hárkov používajú ten istý model hierarchie a AutoSheetBookmarks prepína ich generovanie

BeforeNewPage môže upraviť rámeček každej stránky, zatiaľ čo BeforeGeneratePage a AfterGeneratePage kreslia obsah pozadia alebo prekrytia cez verejné pomôcky stránky AppendPageContent, FillPageRectangle, StrokePageRectangle a DrawPageText

Podpisy a prílohy

TXLSPDFSignature konfiguruje viditeľné alebo neviditeľné polia podpisu, pričom CertificationPolicy voliteľne vytvorí certifikačný podpis DocMDP povoľujúci žiadne zmeny, len vypĺňanie a podpisovanie formulárov, alebo vypĺňanie, podpisovanie a anotácie; PDF/A-1 túto funkciu PDF 1.5 nepovoľuje a taká kombinácia sa odmietne skôr, než sa výstup odovzdá

TXLSPDFCertificationPolicy poskytuje xlsPdfApprovalSignature, xlsPdfCertifyNoChanges, xlsPdfCertifyFormFillingAndSigning a xlsPdfCertifyFormFillingSigningAndAnnotations na explicitný výber politiky podpisu

TXLSPDFSignDigestEvent prijíma digest a vracia hostiteľom vytvorené dáta CMS, takže HotXLS nikdy nepotrebuje súkromný kľúč

TXLSPDFExport.Signature pripája konfiguráciu podpisu a profily PDF/A-3 môžu cez AddAttachment obsahovať validované priradené súbory, ktorý zaradí do frontu TXLSPDFAttachment; detailné preťaženie prijíma zobrazovaný názov v Unicode, MIME typ, popis, čas úpravy, payload a hodnotu TXLSPDFAttachmentRelationship Source, Data, Alternative, Supplement alebo Unspecified, pričom AttachmentCount reportuje celkový počet vo fronte a AttachmentDuplicatePolicy (typ TXLSPDFAttachmentDuplicatePolicy) vyberá zaobchádzanie s rovnakými názvami

TXLSPDFSignature.ImageData, ImageFormat a ImageFit (typ TXLSPDFSignatureImageFit: contain, cover alebo stretch) umiestnia PNG do normálneho vzhľadu Form skôr, než sa byte range zmrazí; režimy contain, cover a stretch zdieľajú cache obrázkov dokumentu a neplatné obrázky zlyhajú pred podpisom

Preťaženie IXLSPDFAttachmentSource ostáva lazy do uloženia, zavolá každý zdroj raz na uloženie a naplní najviac 256 MiB skôr, než sa vytvorí objekt EmbeddedFile, takže zlyhania providera ponechajú transakciu destinácie nezmenenú

Záverečné zostavenie zapisuje objekty do destinácie sekvenčne namiesto stavby jedného reťazca celého dokumentu: nepodpísané exporty prúdia priamo do dopredných tokov, každý EmbeddedFile odkazuje na svoju veľkosť v bajtoch nepriamym objektom /Length emitovaným za payloadom a bajty providera sa kopírujú zo spoolu v pevných dávkach; podpísané exporty sa skladajú do obmedzeného spoolu dokumentu, ktorý prijme patche ByteRange a obsahu podpisu, inkrementálny SHA-256 cez dva pokryté rozsahy a jediné dopredné kopírovanie

Výstup PDF/A-3 zapisuje každý priradený súbor do stromu názvov EmbeddedFiles aj do poľa AF katalógu, s Unicode názvom UF, escapovaným MIME PDF Name, AFRelationship, veľkosťou v bajtoch, voliteľným dátumom úpravy a voliteľným popisom; PDF/A-1 a PDF/A-2 odmietnu prílohy vo fronte skôr, než sa výstup odovzdá

Metadáta dokumentu

DocumentTitle, DocumentAuthor, DocumentSubject, DocumentKeywords a DocumentFileName napĺňajú slovníky informácií a metadát PDF

Fallback písiem

TXLSPDFExport.SetFontFallbackChain, AddFontFallback a ClearFontFallbackChains konfigurujú úrovne fallbacku pre zdrojové rodiny a špecifické štýly; LoadedFallbackFontCount sprístupňuje počet cacheovaných strihov písma a FontFallbackSelectionCacheCount počet cacheovaných rozhodnutí o fallbacku pre jednotlivé výbery, obe na diagnostiku

TXLSPDFExport.FontSize nastavuje predvolenú veľkosť textu v bodoch, predvolene 9

Výber fallbacku používa pokrytie glyfov a zachováva Unicode mapovania, doplnkové skaláry, zhluky grafém, zhluky tvarovania a samostatné strihy TTC

OnGetFontDirectories môže pre požadovanú rodinu a štýl vrátiť jeden alebo viac adresárov písiem oddelených bodkočiarkou; akceptované adresáre sa raz prehľadajú rekurzívne, indexujú sa podľa interných metadát rodiny a štýlu a cacheujú sa pre nasledovné meranie aj kreslenie

Politika vkladania písiem

TXLSPDFExport.FontEmbedding (typ TXLSPDFFontEmbedding) vyberá automatické vloženie, povinné subsetovanie, kompletný fontový program alebo výstup len s mapou cez xlsPdfFontEmbedAuto, xlsPdfFontEmbedSubset, xlsPdfFontEmbedFull a xlsPdfFontEmbedNone; povinné subsetovanie atómovo zlyhá, keď nemožno vyprodukovať platnú subset, strihy TTC sa prevedú na samostatné písma a PDF/A odmieta výstup len s mapou

OnFontEmbed vystrelí raz na Unicode strih skôr, než sa vyriešia jeho metriky, mapovanie znakov, tvarovanie a identifikátory glyfov; nastavenie Handled prijme vrátený režim pre jednotlivé písma a voliteľné nahradzujúce bajty, zatiaľ čo ponechanie false zachová politiku dokumentu a pôvodný strih

Samostatné OpenType písma s CFF obrysmi sa vkladajú cez FontFile3 so streamom OpenType a potomkom CIDFontType0; automatický a plný režim zachovávajú kompletný program, zatiaľ čo povinné CFF subsetovanie atómovo zlyhá, pretože nedokáže zachovať platnú subset

Vložené písma nesúce OpenType údaje GPOS alebo legacy kern používajú poziciované posuny glyfov pre jednoduchý aj zložitý text, takže meranie, zalamovanie, zarovnanie a emitované pozície glyfov sa delia o ten istý výsledok kerningu

Priebeh a zrušenie

TXLSPDFExport.OnProgress a OnProgressEx hlásia fázy začiatku, stránky a konca; Cancel požaduje zrušenie a Aborted hlási konečný stav bez odovzdania čiastočného toku

Pozri tiež