Dokumentace HotXLS

Pokročilé vykreslování a export

Cesty PDF, SVG, bitmap, metafile, náhledu a tisku sdílejí jeden model stránkování a backendově neutrální geometrii při zachování formátově specifických kodérů

Vlastní grafické backendy

TXLSGraphicsTextAlign definuje zarovnání textu vlevo, na střed a vpravo pro TXLSGraphicsBackend; stylované kreslicí operace přebírají zbývající sdílené výčty — styly písma (TXLSGraphicsFontStyles), konce čar (TXLSGraphicsLineCap), vzory čárkování (TXLSGraphicsLineDash) a svislé zarovnání textu (TXLSGraphicsTextVAlign)

Životní cyklus stránkyBeginPage a EndPage
PrimitivaFillRect, StrokeRect, DrawLine, DrawStyledLine, DrawEllipse, DrawPath, DrawText, DrawStyledText, DrawCellText a DrawImage
Vstupní bod stránkováníTXLSPaginationModel.RenderPageToBackend odešle jednu logickou stránku libovolné implementaci backendu

Implementace dostávají souřadnice v bodech, vyřešené efekty textu a obrázků, oříznutí a umístění kresby v rámci stránky, aniž by musely opakovat logiku rozvržení sešitu. Každý výkres na logické stránce přichází jako záznam TXLSPageDrawingPlacement, jehož Kind (TXLSPageDrawingKind: xpdkImage, xpdkChart, xpdkTextBox, xpdkShape, xpdkControl) říká backendu, co se zrovna kreslí; dlaždice pozadí listu přicházejí jako dekódovaná TXLSSheetBackgroundRenderData

Geometrie vykreslování patřící operaci

TXLSPaginationModel.RenderBackend volí identitu backendu, kterou zachytí následující volání Build, a RenderGeometry zpřístupňuje výslednou neměnnou kalibraci, generaci sešitu, backend a stav cache metrik s pevnou kapacitou; aktivní relace vykreslování se předává jako katalog TXLSRenderSession a zásada barev je TXLSRenderColorMode (xlsrcColor nebo xlsrcMonochrome)

Modely PDF používají xlsrgbPdf, SVG xlsrgbSvg, obrázky stránek xlsrgbBitmap, modely tisku a náhledu tisku xlsrgbPrintPreview a TXLSWorkbookViewer používá xlsrgbViewer; PaginationModel komponent SVG, obrázků, tisku i prohlížeče zpřístupňuje aktivní model pro diagnostiku, aniž by přecházelo vlastnictví

Klasické i XLSX vstupní body HTML zachytávají xlsrgbHtml; TXLSHTMLExport.RenderGeometry zpřístupňuje nejnovější snímek pořízený z Classic, zatímco TXLSXHtmlExportSession.RenderGeometry zpřístupňuje snímek udržovaný napříč všemi listy při přírůstkovém exportu

Výstup sloupců HTML převádí model šířky znaku sešitu přes maximální šířku číslice písma Normal a nastavené měřítko obrazovky, než vypustí pevnou délku v CSS pixelech; převod bodů a pixelů používá stejnou zachycovanou měřicí DPI

Každá operace si drží svou zachycenou kalibraci, i kdyby se sešit později změnil, a vykreslování nikdy nezapisuje výšky řádků ani šířky sloupců listu. Stránkování staví stránky z objektů TXLSLogicalPage, jejichž výkresy, orientace (TXLSPageOrientation: xpoPortrait nebo xpoLandscape) a umístění komentářů (TXLSPrintComments: xpcNone nebo xpcAtEnd) pocházejí z vyřešeného nastavení stránky

Logická stránka zpřístupňuje vše, co backend nebo callback potřebuje: identitu (DocumentPageNumber, SheetPageNumber, SheetName, vlastnící ClassicWorksheet nebo XlsxWorksheet), geometrii (PageWidth, PageHeight, Scale a hodnoty LeftMargin, RightMargin, TopMargin, BottomMargin, HeaderMargin a FooterMargin), obdélník dat (DataFirstRow, DataLastRow, DataFirstCol, DataLastCol) s tiskovými nadpisy (RepeatFirstRow, RepeatLastRow, RepeatFirstCol, RepeatLastCol), umístění pozadí (BackgroundOffsetX, BackgroundOffsetY), výstup mřížky (PrintGridlines, GridlineColor), šest textů pásů záhlaví a zápatí (LeftHeader, CenterHeader, RightHeader, LeftFooter, CenterFooter, RightFooter) a kostry řádků a sloupců stránky (RowCount s Rows a RowEdges, ColumnCount s Columns a ColumnEdges) plus její seznam výkresů (DrawingCount a Drawings). ExpandHeaderFooter vyhodnocuje formátové kódy záhlaví a zápatí vůči stránce a ExpandHeaderFooterStyled navíc vrací výchozí velikost písma v bodech a barvu, aby vlastní malíři dokázali napodobit vykreslení záhlaví, které používá Excel

Vykreslování pozadí listu

Prohlížeč sešitu zobrazuje platná pozadí listů Classic i XLSX jako opakující se dlaždice pod nevyplněnými buňkami, zatímco explicitní a podmíněné výplně buněk zůstávají nad pozadím

TXLSPaginationModel, TXLSSvgExport, TXLSPageImageExporter, TXLSPrintDocument, TXLSPDFExport, TXLSHTMLExport, TXLSXHtmlExportOptions a TXLSWorkbookViewer zpřístupňují ExportSheetBackgroundImages; výchozí hodnota je False pro výstup tisku, náhledu, metafile, PDF, SVG, bitmapy i HTML. Listy ukládají svá data v obrazovém formátu TXLSSheetBackgroundFormat a dekódované bajty se přenášejí jako TXLSSheetBackgroundResource indexovaný generací, DPI a barevným režimem

Zapnutý stránkovaný výstup ukotví fázi dlaždic ke souřadnicím listu napříč hranicemi stránek a pro relaci vykreslování si ponechá jeden dekódovaný obrázek na kombinaci listu, generace zdroje, backendu, DPI a barevného režimu; BackgroundDecodeCount zpřístupňuje celkový počet dekódování pro diagnostiku a poškozená data se přeskočí s diagnostikou sešitu. Aktivní TXLSRenderSession onu sdílenou cache spravuje sama: AcquireBackground získá (nebo jednou dekóduje) dlaždicová data TXLSSheetBackgroundRenderData pro list, DrawTiledBackground je vykreslí přes oříznutou oblast stránky a DecodeCount hlásí, kolik dat bylo zatím dekódováno

Politika zobrazování objektů sešitu

ObjectDisplayMode volí xlsodmShowAll, xlsodmShowPlaceholders nebo xlsodmHideAll pro sešity klasického XLS i XLSX; prohlížeč spotřebuje všechny tři stavy a v režimu zástupných symbolů používá levná políčka s typem, názvem, textem a alternativním textem

Exportéry PDF, SVG, bitmap, fyzického tisku a XLSX HTML se v režimu zástupných symbolů chovají ve výchozím stavu jako výstup plných objektů; pokud chcete políčka bez dekódování obrázků a sestavování scény grafu, nastavte ExportObjectPlaceholders na příslušném exportéru nebo v HTML volbách

xlsodmHideAll je dřívější globální uzávěrka, která zabraňuje sběru výkresů, rozšiřování rozsahů řízenému objekty, testování zásahů a vykreslování médií; pozadí listu, ikony podmíněného formátování, obrázky v záhlaví či zápatí, buňky a filtry tisku objektů specifické pro exportér zůstávají nezávislé

Osy dat grafů citlivé na kalendář

Grafy XLSX, jejichž osa kategorií používá xlsxAxisDate, mapují každou platnou kategorii přes systém dat od roku 1900 nebo 1904 podle sešitu a zachovávají skutečné vzdálenosti mezi řídkými daty místo rovnoměrného rozdělení bodových pozic

BaseTimeUnit řídí normalizaci na dny, měsíce nebo roky a MajorUnit, MinorUnit, MajorTimeUnit a MinorTimeUnit posouvají dílky po kalendářních jednotkách; měsíční a roční intervaly proto zůstávají zarovnané napříč různě dlouhými měsíci i přestupnými roky

Stejná množina dílků s pevnou horní hranicí zásobuje souřadnicemi, popisky, dílky a požadovanými mřížkovými čarami výstup PDF, SVG, bitmapy, náhledu, tisku i prohlížeče postavený na stránkování, zatímco XLSX HTML používá sdílenou kalendářní aritmetiku pro svá vložená SVG grafy

Samostatný zapisovač PDF

TXLSPDFWriter vytváří dokumenty PDF, které nevznikly ze sešitu — faktury, jízdenky, štítky, překrývací formuláře; BeginDoc nastaví rámeček stránky s přesností na body, NewPage uzavře aktuální stránku a SaveToStream nebo SaveToFile dokument dokončí

Kreslicí metody používají body PDF od levého dolního rohu a barvy knihovny ve tvaru $00BBGGRR nebo $AABBGGRR; dostupná primitiva pokrývají FillRectangle, StrokeRectangle, ClipRectangle, MeasureText, SaveGraphicsState a RestoreGraphicsState pro plněné a obtažené obdélníky, čáry, elipsy, stylovaný text s přesným měřením šířky, afinní transformace, obdélníkové oříznutí a explicitní uložení či obnovení grafického stavu, zatímco PageWidth a PageHeight vrací aktuální rámeček stránky v bodech

Export SVG

TXLSSvgExport poskytuje sedm přetížení SaveAsSVG pro klasické a XLSX rozsahy, listy, sešity a připravené logické stránky, a navíc výstup pojmenovaných objektů tam, kde je podporován

UseWorksheetPageSetup, Orientation a Margin používají stejná rozhodnutí nastavení stránky jako výstup PDF a náhledu

TXLSSvgExport.PrintComments (typ TXLSPrintComments) volí, jak se komentáře buněk vypisují ve stránkovaném výstupu SVG; při xpcAtEnd poslední stránka listu připojí výpis komentářů (adresa buňky, autor a text) pod oblast dat, zatímco xpcNone komentáře vynechá

ExportPages posílá po jednom kompletním dokumentu SVG přes OnPage, hlásí počet potvrzených stránek přes ExportedPageCount a při zrušení z callbacku zastaví generování dalších stránek; IdPrefix vytváří deterministické jmenné prostory dokumentu a stránek pro cesty oříznutí, filtry, vzory a sdílené zdroje

HyperlinkMode (typ TXLSSvgHyperlinkMode) s xshmSafe přidává za vizuální obsah oříznuté průhledné zásahové oblasti; povolená externí schémata jsou HTTP, HTTPS, mail, FTP a relativní odkazy, zatímco aktivní, lokální, UNC a cíle s řídicími znaky se vynechají; LinksInNewWindow přidává ochranu noopener noreferrer a ToolTippy se stávají titulkem SVG

Přírůstkový výstup PNG, JPEG a vícestránkový TIFF

TXLSPageImageFormat vybírá výstup PNG nebo JPEG a TXLSPageImageExporter udržuje jednu relaci stránkování naživu a přitom promptně uvolňuje každou dokončenou bitmapu

RelaceŠest přetížení BeginExport přijímá klasické nebo XLSX rozsahy, listy a sešity; ExportNext zapíše jednu stránku a EndExport uvolní relaci
Vícestránkový TIFFExportAllAsTiff zapíše vybrané logické stránky do streamu nebo souboru jako jeden LZW komprimovaný TIFF a zachovává chování průběhu, zrušení a atomického cíle
Nastavení stránkyUseWorksheetPageSetup, Orientation, Margin, DefaultRowHeight, PaperWidthOverride a PaperHeightOverride
Rastrový výstupScale, ImageFormat a JpegQuality, zatímco ExportObjectAsPNG vykreslí jeden objekt výkresu do vlastněného PNG
Kompaktní rozsahyExportRange vykreslí klasický nebo XLSX rozsah jako jednu těsnou rasterizovanou bitmapu bez papíru, okrajů, záhlaví, zápatí, tiskových nadpisů ani zalomení stránek
Události plátnaBeforeRenderPage běží po vyčištění pozadí a AfterRenderPage po vykreslení sešitu, ale před kodováním; snímky PNG, JPEG i TIFF sdílejí stejnou cestu událostí
StavActive, Aborted, TotalPageCount, PageCount a ExportedPageCount

Tagovaný PDF a PDF/A

TXLSPDFExport.TagMode povoluje automatickou strukturu dokumentu, tabulek, řádků, buněk záhlaví, datových buněk a informačních obrázků s hustými identifikátory označeného obsahu lokálními pro stránku, přesnými mapováními stromu rodičů, rozsahy sloučených buněk a izolací artefaktů; řádky tiskových nadpisů a řádky záhlaví tabulky se stávají sémantickými buňkami záhlaví, obrázky XLSX s neprázdným AltText se stávají samostatnými prvky Figure s alternativním textem v Unicode a obrázky bez alternativního textu zůstávají dekorativními artefakty

Každá viditelná instance informačního obrázku dostane vlastní prvek Figure a identifikátor označeného obsahu, i když si stejná data obrázku sdílejí jeden XObject PDF; AltTextTitle nenahrazuje chybějící alternativní text, grafy zůstávají artefakty a tato cílená podpora struktury netvrdí úplnou shodu s PDF/UA

TXLSPDFExport.PDFAProfile vybírá PDF/A-1, PDF/A-2 nebo PDF/A-3 na úrovni shody a nebo b; nekompatibilní šifrování, písma, přílohy, průhlednost, podpisy a metadata jsou ověřeny před potvrzením výstupního streamu

TXLSPDFExport.ExportCommentsAsAnnotations umísťuje text autora a komentáře v Unicode na obdélníky zdrojových buněk, zatímco tradiční výstup komentářů na konci zůstává nezávisle konfigurovatelný

UsePDFA je přepínač kompatibility pro PDF/A-1b, zatímco UseXRefStream vybírá streamy křížových referencí tam, kde to zvolený profil umožňuje

Geometrie stránky a výběr

Šest přetížení CalculatePageCount přijímá klasické a XLSX rozsahy, listy nebo sešity bez vytváření objektů PDF

PaperWidth a PaperHeight přepisují rozměry papíru v bodech, LastPage uzavírá výstupní interval číslovaný od 1, Orientation (typ TXLSPDFOrientation) volí výšku nebo šířku stránky, HidePrintObjects (množina TXLSPDFHidePrintObject: xlsPdfHideHeaders, xlsPdfHideFooters) potlačuje vybrané pásy záhlaví nebo zápatí a PageLayout (typ TXLSPDFPageLayout) nastavuje počáteční uspořádání stránek v prohlížeči

Režim stránek PDF a akce při otevření

TXLSPDFExport.PageMode (typ TXLSPDFPageMode) nastavuje, jak PDF prohlížeč při otevření dokumentu uspořádá panely, pomocí xlsPdfModeDefault, xlsPdfModeUseOutlines, xlsPdfModeUseThumbs, xlsPdfModeFullScreen, xlsPdfModeUseOC a xlsPdfModeUseAttachments

OpenAction (typ TXLSPDFOpenAction) volí počáteční chování prohlížeče pomocí xlsPdfOpenNone, xlsPdfOpenPage nebo xlsPdfOpenOutlines. U xlsPdfOpenPage je OpenActionPage cílová stránka číslovaná od 1 (oříznutá na počet stránek) a OpenActionZoom počáteční faktor zvětšení, kde 0 ponechá výchozí přiblížení nebo přizpůsobení prohlížeče

Sdílená adaptivní vektorová geometrie

XLSBuildEllipticArcCubics převádí eliptický oblouk na kubické Bézierovy segmenty rekurzivním vynucením volajícím zvolené meze plochosti; vykreslování PDF, SVG i bitmap používá tuto sdílenou geometrii, takže velké nebo silně excentrické oblouky dostanou více segmentů bez pokuty pro jednoduché oblouky

XLSDecodeVectorScene ověřuje hlavičky EMF a WMF, zarovnání a velikosti záznamů, deklarované součty, přesné umístění EOF a limity zdrojů, aniž by volala přehrávání metafile platformy; nativní whitelist přehrává zásobníky stavu kontextu zařízení s save a restore, mapování okna a viewportu kombinované se světovými transformacemi, tabulky objektů per, štětců a rozšířených per včetně skladových objektů, obdélníky, elipsy, řetězce čar, mnohoúhelníky, lomené čáry a Bézierovy křivky se styly čárkování, závorky cest s průchody výplně, obtažení a kombinovaného obtažení s výplní, zaoblené obdélníky, oblouky, tětivy, výseče a úhlové oblouky přes přesný převod oblouku na Bézier, výplně a ohraničení regionů z omezených obdélníků RGNDATA, omezené úseky textu s písmy, barvami a zarovnáním a omezené obrázky stretch-DIB znovu zakódované jako PNG přes Canvas a SVG, odmítá escape záznamy a ponechává oříznutí a privátní záznamy na stávajícím omezeném záložním řešení

Osnovy PDF a callbacky stránek

Osnovy PDF žijí v kolekci Bookmarks (typ TXLSPDFBookmarks): Add a AddForSheet přidávají položky, Delete jednu odebere a Count s Items vyjmenovávají strom. Každá položka TXLSPDFBookmark podporuje nadřazené a podřazené položky (Children), řetězce sourozenců, tituly v Unicode, barvy (Color), cíl PageNumber, zdrojové SheetName pro záložky listu a příznaky tučného nebo kurzívního řezu (množina TXLSPDFBookmarkStyle: xlsPdfBookmarkBold, xlsPdfBookmarkItalic) plus rozbalené nebo sbalené potomky; automatické záložky listů používají stejný model hierarchie a AutoSheetBookmarks přepínají jejich generování

BeforeNewPage může upravit rámeček každé stránky, zatímco BeforeGeneratePage a AfterGeneratePage kreslí obsah pozadí nebo překrytí přes veřejné pomocné metody stránky AppendPageContent, FillPageRectangle, StrokePageRectangle a DrawPageText

Podpisy a přílohy

TXLSPDFSignature konfiguruje viditelná nebo neviditelná pole podpisu, zatímco CertificationPolicy volitelně vytvoří certifikační podpis DocMDP povolující žádné změny, plnění a podepisování formulářů, nebo plnění, podepisování a anotace formulářů; PDF/A-1 tuto funkci PDF 1.5 nepovoluje a odmítne ji dřív, než se potvrdí výstup

TXLSPDFCertificationPolicy poskytuje xlsPdfApprovalSignature, xlsPdfCertifyNoChanges, xlsPdfCertifyFormFillingAndSigning a xlsPdfCertifyFormFillingSigningAndAnnotations pro explicitní volbu politiky podpisu

Událost TXLSPDFSignDigestEvent obdrží otisk a vrací data CMS vytvořená hostitelem, takže HotXLS nikdy nepotřebuje soukromý klíč

TXLSPDFExport.Signature připojuje konfiguraci podpisu a profily PDF/A-3 mohou přes AddAttachment obsahovat ověřené přidružené soubory, které zařadí položku TXLSPDFAttachment; detailní přetížení přijímá zobrazovaný název v Unicode, MIME typ, popis, čas změny, data a hodnotu TXLSPDFAttachmentRelationship Source, Data, Alternative, Supplement nebo Unspecified, zatímco AttachmentCount hlásí celkový počet zařazených příloh a AttachmentDuplicatePolicy (typ TXLSPDFAttachmentDuplicatePolicy) volí, jak se nakládá s duplicitními názvy

TXLSPDFSignature.ImageData, ImageFormat a ImageFit (typ TXLSPDFSignatureImageFit: contain, cover nebo stretch) umístí PNG do Form normálního vzhledu dřív, než se zmrazí rozsah bajtů; režimy contain, cover a stretch sdílejí cache obrázků dokumentu a neplatné obrázky selžou ještě před podepsáním

Přetížení s IXLSPDFAttachmentSource zůstává líné do uložení, zavolá každý zdroj jednou za uložení a před vytvořením objektu EmbeddedFile napíše na dočasný disk nanejvýš 256 MiB, takže selhání poskytovatele zanechá transakci cíle nedotčenou

Závěrečné sestavení zapisuje objekty do cíle postupně místo skládání jednoho řetězce pro celý dokument: exporty bez podpisu proudí přímo do streamů umožňujících jen dopisování, každý EmbeddedFile odkazuje na svou velikost v bajtech přes nepřímý objekt /Length vydaný za daty a bajty poskytovatele se kopírují z dočasného souboru v pevných dávkách; exporty s podpisem se sestavují do omezeného dočasného souboru dokumentu, který obdrží záplaty ByteRange a obsahu podpisu, inkrementální SHA-256 přes dva kryté rozsahy a jedinou kopii dopředu

Výstup PDF/A-3 zapisuje každý přidružený soubor do stromu jmen EmbeddedFiles i do pole AF katalogu, s názvem UF v Unicode, escapovaným PDF Name MIME typu, AFRelationship, velikostí v bajtech, volitelným datem změny a volitelným popisem; PDF/A-1 a PDF/A-2 odmítnou zařazené přílohy dřív, než potvrdí výstup

Metadata dokumentu

DocumentTitle, DocumentAuthor, DocumentSubject, DocumentKeywords a DocumentFileName naplňují informační slovníky a metadata PDF

Náhradní písma

TXLSPDFExport.SetFontFallbackChain, AddFontFallback a ClearFontFallbackChains konfigurují úrovně náhrady specifické pro zdrojovou rodinu písma a styl; LoadedFallbackFontCount zpřístupňuje počet řezů v cache a FontFallbackSelectionCacheCount počet uložených rozhodnutí o náhradě pro jednotlivé volby, obojí pro diagnostiku

TXLSPDFExport.FontSize nastavuje výchozí velikost textu v bodech, implicitně 9

Výběr náhrady používá pokrytí glyfů a zachovává mapování Unicode, doplňkové skaláry, shluky grafémů, tvarovací shluky a samostatné řezy TTC

OnGetFontDirectories může pro požadovanou rodinu a styl vrátit jeden nebo více adresářů písem oddělených středníkem; přijaté adresáře se jednou projdou rekurzivně, seindexují podle interních metadat rodiny a stylu a uloží do cache pro následné měření a kreslení

Politika vkládání písem

TXLSPDFExport.FontEmbedding (typ TXLSPDFFontEmbedding) volí automatické vkládání, požadované řezení podmnožiny, kompletní fontový program, nebo výstup jen s mapami pomocí xlsPdfFontEmbedAuto, xlsPdfFontEmbedSubset, xlsPdfFontEmbedFull a xlsPdfFontEmbedNone; požadované řezení selže atomicky, když nelze vyrobit platnou podmnožinu, řezy TTC se převedou na samostatná písma a PDF/A odmítá výstup jen s mapami

OnFontEmbed se vyvolá jednou za řez Unicode, než se vyhodnotí jeho metrika, znaková mapa, tvarování a identifikátory glyfů; nastavení Handled přijme vrácený režim pro dané písmo a volitelná nahrazující data, zatímco ponechání false zachová politiku dokumentu a původní řez

Samostatná písma OpenType s CFF obrysy se vkládají přes FontFile3 se streamem OpenType a potomkem CIDFontType0; automatický a plný režim ponechávají kompletní program, zatímco požadované řezení CFF atomicky selže, protože nedokáže zachovat platnou podmnožinu

Vložená písma nesoucí OpenType data GPOS nebo starší kern používají pozicované posuny glyfů pro jednoduchý i složitý text, takže měření, zalamování, zarovnání a vypuštěné pozice glyfů sdílejí stejný výsledek kerningu

Průběh a zrušení

TXLSPDFExport.OnProgress a OnProgressEx hlásí fáze začátku, stránky a konce; Cancel vyžaduje zrušení a Aborted hlásí konečný stav bez potvrzení částečného streamu

Viz také