Zaawansowane renderowanie i eksport
Ścieżki PDF, SVG, mapy bitowe, metafile, podgląd i wydruk korzystają ze wspólnego modelu paginacji i niezależnej od backendu geometrii, zachowując jednocześnie kodery specyficzne dla formatów
Niestandardowe backendy graficzne
TXLSGraphicsTextAlign definiuje wyrównanie tekstu do lewej, środka i prawej dla TXLSGraphicsBackend; rysowanie ze stylami przyjmuje pozostałe wspólne wyliczenia — style czcionki (TXLSGraphicsFontStyles), zakończenia linii (TXLSGraphicsLineCap), wzorce kreskowania (TXLSGraphicsLineDash) i pionowe wyrównanie tekstu (TXLSGraphicsTextVAlign)
| Page lifecycle | BeginPage i EndPage |
| Primitives | FillRect, StrokeRect, DrawLine, DrawStyledLine, DrawEllipse, DrawPath, DrawText, DrawStyledText, DrawCellTexti DrawImage |
| Pagination entry point | TXLSPaginationModel.RenderPageToBackend wysyła jedną stronę logiczną do dowolnej implementacji backendu |
Implementacje otrzymują współrzędne w punktach, rozstrzygnięte efekty tekstu i obrazów, przycinanie oraz umiejscowienie rysowania w obrębie strony, bez konieczności powtarzania logiki układu skoroszytu. Każdy obiekt rysowany na stronie logicznej dociera jako rekord TXLSPageDrawingPlacement , którego pole Kind (TXLSPageDrawingKind: xpdkImage, xpdkChart, xpdkTextBox, xpdkShape, xpdkControl) mówi backendowi, co dokładnie rysuje; kafle tła arkusza trafiają do backendu jako zdekodowane TXLSSheetBackgroundRenderData
Geometria renderowania należąca do operacji
TXLSPaginationModel.RenderBackend wybiera tożsamość backendu przechwytywaną przez następne wywołanie Build , a RenderGeometry udostępnia wynikową niemutowalną kalibrację, generację skoroszytu, backend oraz ograniczony stan pamięci podręcznej metryk; aktywna sesja renderowania jest przekazywana jako uchwyt TXLSRenderSession , a polityka kolorów to TXLSRenderColorMode (xlsrcColor albo xlsrcMonochrome)
Modele PDF używają xlsrgbPdf, eksport SVG — xlsrgbSvg, obrazy stron — xlsrgbBitmap, modele drukowania i podglądu wydruku — xlsrgbPrintPreview, a TXLSWorkbookViewer używa xlsrgbViewer; właściwość PaginationModel komponentów SVG, obrazu, druku i podglądu udostępnia aktywny model do celów diagnostycznych bez przenoszenia własności
Klasyczne i XLSX punkty wejścia HTML przechwytują xlsrgbHtml; TXLSHTMLExport.RenderGeometry udostępnia najnowszą klasyczną migawkę, natomiast TXLSXHtmlExportSession.RenderGeometry udostępnia migawkę zachowywaną w obrębie wszystkich arkuszy eksportu przyrostowego
Wyjście kolumn HTML przelicza model szerokości znaku skoroszytu przez maksymalną szerokość cyfry czcionki Normal i skonfigurowaną skalę ekranu, zanim wyemituje stałą długość w pikselach CSS; konwersja punktów na piksele korzysta z tej samej przechwyconej rozdzielczości DPI pomiaru
Każda operacja zachowuje swoją przechwyconą kalibrację nawet wtedy, gdy skoroszyt zmieni się później, a renderowanie nigdy nie zapisuje wysokości wierszy ani szerokości kolumn arkusza. Paginacja buduje strony z obiektów TXLSLogicalPage , których rysunki, orientacja (TXLSPageOrientation: xpoPortrait albo xpoLandscape) i umiejscowienie komentarzy (TXLSPrintComments: xpcNone albo xpcAtEnd) pochodzą z ustalonej konfiguracji strony
Strona logiczna udostępnia wszystko, czego potrzebuje backend lub wywołanie zwrotne: tożsamość (DocumentPageNumber, SheetPageNumber, SheetName, właścicielski ClassicWorksheet albo XlsxWorksheet), geometrię (PageWidth, PageHeight, Scaleoraz wartości LeftMargin, RightMargin, TopMargin, BottomMargin, HeaderMargini FooterMargin ), prostokąt danych (DataFirstRow, DataLastRow, DataFirstCol, DataLastCol) z tytułami wydruku (RepeatFirstRow, RepeatLastRow, RepeatFirstCol, RepeatLastCol), umiejscowienie tła (BackgroundOffsetX, BackgroundOffsetY), wyjście linii siatki (PrintGridlines, GridlineColor), sześć tekstów pasm nagłówka i stopki (LeftHeader, CenterHeader, RightHeader, LeftFooter, CenterFooter, RightFooter) oraz szkielety wierszy i kolumn strony (RowCount z Rows i RowEdges, ColumnCount z Columns i ColumnEdges) plus jej listę rysunków (DrawingCount i Drawings). ExpandHeaderFooter rozwija kody formatujące nagłówka i stopki względem strony, a ExpandHeaderFooterStyled raportuje dodatkowo początkowy rozmiar punktowy i kolor, dzięki czemu niestandardowi malarze mogą dopasować się do renderowania nagłówków samego Excela
Scalone komórki w natywnej paginacji
TXLSPaginationModel.RenderPageToBackend rozwiązuje scalony zakres do jego oryginalnego zakotwiczenia i maluje jeden widoczny prostokąt na fragment strony; komórki przykryte nie emitują zduplikowanego tekstu ani wewnętrznych linii siatki
Fragmenty XLSX współdzielą wypełnienie, wyrównanie, zawijanie, czcionkę i wyliczenie formatowania warunkowego zakotwiczenia, podczas gdy jawne zewnętrzne segmenty obramowań pozostają widoczne, a wewnętrzne obramowania scalenia są tłumione; fragmenty Classic współdzielą tekst i jednolite wypełnienie zakotwiczenia przez istniejącego malarza tekstu Classic
Obszar wydruku albo podział strony może przyciąć scalony zakres, a każdy widoczny fragment używa oryginalnego zakotwiczenia, nawet gdy leży ono poza obszarem wydruku; ukryte wiersze i kolumny wnoszą zerową rozpiętość, a powtarzane fragmenty tytułów wydruku używają tej samej polityki zakotwiczenia
Scalanie nie wymusza umieszczenia zakresu na jednej stronie, nie rozszerza obszaru wydruku i nie zmienia zapisanych wysokości wierszy ani szerokości kolumn; paginacja zachowuje istniejącą konfigurację strony i przycina każdy fragment do jego strony logicznej
Renderowanie tła arkusza
Przeglądarka skoroszytów wyświetla poprawne tła arkuszy klasycznych i XLSX jako powtarzające się kafle pod komórkami bez wypełnienia, natomiast jawne i warunkowe wypełnienia komórek pozostają nad tłem
TXLSPaginationModel, TXLSSvgExport, TXLSPageImageExporter, TXLSPrintDocument, TXLSPDFExport, TXLSHTMLExport, TXLSXHtmlExportOptionsi TXLSWorkbookViewer udostępniają ExportSheetBackgroundImages; domyślnie wartość to False dla wyjścia drukowanego, podglądu, metafile, PDF, SVG, bitmap i HTML. Arkusze przechowują swój ładunek z formatem obrazu TXLSSheetBackgroundFormat , a zdekodowane bajty wędrują jako TXLSSheetBackgroundResource indeksowany generacją, DPI i trybem kolorów
Włączone wyjście paginowane kotwiczy fazę kafli do współrzędnych arkusza ponad granicami stron i utrzymuje jeden zdekodowany obraz na arkusz, generację zasobu, backend, DPI i tryb kolorów w obrębie sesji renderowania; BackgroundDecodeCount udostępnia sumę dekodowań do celów diagnostycznych, a uszkodzone ładunki są pomijane z diagnostyką skoroszytu. Aktywna TXLSRenderSession zarządza tą współdzieloną pamięcią podręczną samodzielnie: AcquireBackground pobiera (lub dekoduje jednorazowo) kafelkowane TXLSSheetBackgroundRenderData dla arkusza, DrawTiledBackground maluje je w obrębie przyciętego regionu strony, a DecodeCount raportuje, ile ładunków zdekodowano do tej pory
Polityka wyświetlania obiektów skoroszytu
ObjectDisplayMode wybiera xlsodmShowAll, xlsodmShowPlaceholdersalbo xlsodmHideAll zarówno dla skoroszytów klasycznego XLS, jak i XLSX; przeglądarka obsługuje wszystkie trzy stany i w trybie zastępczym używa tanich pól z typem, nazwą, tekstem i tekstem alternatywnym
Eksportery PDF, SVG, bitmap, druku fizycznego i XLSX HTML traktują tryb zastępczy domyślnie jak pełne wyjście obiektów; ustaw ExportObjectPlaceholders na odpowiednim eksporterze lub opcjach HTML, aby żądać pól bez dekodowania obrazów ani budowania sceny wykresu
xlsodmHideAll to wcześniejsza globalna zapora, która blokuje kolekcjonowanie rysunków, rozszerzanie zakresów napędzane obiektami, testy trafienia i renderowanie mediów; tła arkuszy, ikony formatowania warunkowego, obrazki nagłówka lub stopki, komórki oraz specyficzne dla eksportera filtry obiektów wydruku pozostają niezależne
Odświeżanie danych źródłowych wykresów
Serializacja wykresów XLSX i współdzielone renderowanie wykresów rozwiązuje lokalne pamięci podręczne serii względem bieżącej generacji skoroszytu, więc edycje komórek źródłowych, przeliczanie i zmiany widoczności odświeżają wartości, kategorie, rozmiary bąbelków i nazwy serii związane z zakresami przed wyjściem
Zwykłe zakresy źródłowe muszą być pojedynczym wierszem albo kolumną lokalnych odwołań A1; cytowane nazwy arkuszy są obsługiwane, a niezakwalifikowany zakres rozwiązuje się względem arkusza posiadającego wykres; hierarchiczne poziomy kategorii zachowują swój oddzielny resolver prostokątnych zakresów
Tekst kategorii używa sformatowanego tekstu komórek, pamięci podręczne numeryczne zachowują puste sloty punktów dla pustek i tekstu nienumerycznego, komórki błędów zachowują swoje wyświetlane literały błędów, a daty używają systemu seryjnego 1900 albo 1904 skoroszytu; PlotVisibleOnly decyduje, czy ukryte wiersze i kolumny źródła są pomijane
Zaimportowane albo ręcznie wypełnione pamięci podręczne są zachowywane, gdy lokalne źródło nigdy nie zostało zmaterializowane, podczas gdy pamięci podręczne już zarządzane z lokalnych komórek czyszczą nieaktualne punkty po usunięciu; TXLSXChartSeries.RefreshDataCaches jawnie odświeża rozwiązywalne lokalne źródła, włącznie z pustym zakresem źródłowym
Odniesienia do zewnętrznych skoroszytów i nieobsługiwane wyrażenia odwołań zachowują swoje zapisane pamięci podręczne; odświeżanie pamięci podręcznej nie otwiera plików zewnętrznych ani nie wykonuje żądań sieciowych
Kalendarzowe osie dat na wykresach
TXLSXChartSeries.ResolveDataCaches rozwiązuje obsługiwane lokalne źródła serii dla bieżącej generacji, a RefreshDataCaches żąda jawnego odświeżenia, nawet gdy puste źródło nie ma historii komórek
Wykresy XLSX, których oś kategorii używa xlsxAxisDate , mapują każdą poprawną kategorię przez system dat seryjnych 1900 lub 1904 skoroszytu i zachowują rzeczywisty odstęp między rozrzuconymi datami zamiast przydzielać równe punkty
BaseTimeUnit steruje normalizacją do dnia, miesiąca lub roku, natomiast MajorUnit, MinorUnit, MajorTimeUniti MinorTimeUnit przesuwają znaczniki o jednostki kalendarzowe; interwały miesięczne i roczne pozostają więc wyrównane mimo nierównej długości miesięcy i lat przestępnych
Ten sam ograniczony zbiór znaczników dostarcza współrzędne, etykiety, znaczniki i żądane linie siatki do wyjścia PDF, SVG, bitmap, podglądu, druku i przeglądarki opartego na paginacji, natomiast XLSX HTML używa wspólnej arytmetyki kalendarzowej dla swojego osadzonego SVG wykresu
Niezależny moduł zapisu PDF
TXLSPDFWriter tworzy dokumenty PDF niemające źródła w skoroszycie, takie jak faktury, bilety, etykiety i formularze nakładkowe; BeginDoc ustawia ramkę strony z dokładnością do punktu, NewPage zamyka bieżącą stronę, a SaveToStream lub SaveToFile kończy dokument
Metody rysujące używają punktów PDF od lewego dolnego rogu i kolorów biblioteki w postaci $00BBGGRR albo $AABBGGRR ; dostępne prymitywy obejmują FillRectangle, StrokeRectangle, ClipRectangle, MeasureText, SaveGraphicsStatei RestoreGraphicsState dla wypełnianych i obrysowywanych prostokątów, linii, elips, tekstu ze stylami z dokładnym pomiarem szerokości, transformacji afinicznych, przycinania prostokątnego i jawnego zapisu lub przywracania stanu grafiki, natomiast PageWidth i PageHeight raportują bieżącą ramkę strony w punktach
Eksport SVG
TXLSSvgExport udostępnia siedem przeciążeń SaveAsSVG dla zakresów klasycznych i XLSX, arkuszy, skoroszytów oraz przygotowanych stron logicznych, a także zapis nazwanych obiektów tam, gdzie jest to obsługiwane
UseWorksheetPageSetup, Orientationi Margin stosują te same decyzje dotyczące konfiguracji strony co eksport PDF i podgląd wydruku
TXLSSvgExport.PrintComments (typ TXLSPrintComments) wybiera sposób emitowania komentarzy komórek dla paginowanego wyjścia SVG; przy wartości xpcAtEndostatnia strona arkusza dokleja listę komentarzy (adres komórki, autor i tekst) pod obszarem danych, a xpcNone pomija komentarze
ExportPages wysyła po jednym kompletnym dokumencie SVG przez OnPage, raportuje liczbę zatwierdzonych stron przez ExportedPageCounti zatrzymuje się przed wygenerowaniem późniejszych stron, gdy wywołanie zwrotne anuluje eksport; IdPrefix tworzy deterministyczne przestrzenie nazw dokumentu i stron dla ścieżek przycinania, filtrów, wzorców i zasobów współdzielonych
HyperlinkMode (typ TXLSSvgHyperlinkMode) z wartością xshmSafe dodaje przycięte przezroczyste regiony trafienia po treści wizualnej; dozwolone zewnętrzne schematy to HTTP, HTTPS, mail, FTP i łącza względne, natomiast cele aktywne, lokalne, UNC i zawierające znaki sterujące są pomijane; LinksInNewWindow dodaje ochronę noopener noreferrer , a podpowiedzi ekranowe stają się tytułami SVG
Przyrostowy eksport PNG, JPEG i wielostronicowy TIFF
TXLSPageImageFormat wybiera wyjście PNG lub JPEG, a TXLSPageImageExporter utrzymuje jedną sesję paginacji przy życiu, zwalniając każdą ukończoną mapę bitową bez zwłoki
| Session | Sześć przeciążeń BeginExport przyjmuje zakresy klasyczne lub XLSX, arkusze i skoroszyty; ExportNext zapisuje jedną stronę, a EndExport zamyka sesję |
| Multipage TIFF | ExportAllAsTiff zapisuje wybrane strony logiczne do strumienia lub pliku jako jeden skompresowany LZW plik TIFF, zachowując semantykę postępu, anulowania i atomowego celu |
| Page setup | UseWorksheetPageSetup, Orientation, Margin, DefaultRowHeight, PaperWidthOverridei PaperHeightOverride |
| Raster output | Scale, ImageFormati JpegQuality, natomiast ExportObjectAsPNG renderuje pojedynczy obiekt rysunkowy do należącej mapy PNG |
| Compact ranges | ExportRange renderuje zakres klasyczny lub XLSX jako jeden zwarty obraz rastrowy bez papieru, marginesów, nagłówków, stopek, tytułów wydruku ani podziałów stron |
| Canvas events | BeforeRenderPage działa po czyszczeniu tła, a AfterRenderPage po namalowaniu skoroszytu, lecz przed kodowaniem; klatki PNG, JPEG i TIFF dzielą tę samą ścieżkę zdarzeń |
| State | Active, Aborted, TotalPageCount, PageCounti ExportedPageCount |
Oznaczony PDF i PDF/A
TXLSPDFExport.TagMode włącza automatyczną strukturę dokumentu, tabeli, wiersza, komórki nagłówkowej, komórki danych i informacyjnego obrazka, z gęstymi lokalnymi identyfikatorami oznaczonej treści, dokładnymi mapowaniami drzewa nadrzędnego, zakresami scalonych komórek i izolacją artefaktów; wiersze tytułów wydruku i wiersze nagłówków tabel stają się semantycznymi komórkami nagłówkowymi, obrazki XLSX z niepustym AltText stają się niezależnymi elementami Figure z tekstem alternatywnym Unicode, a obrazki bez tekstu alternatywnego pozostają dekoracyjnymi artefaktami
Każda widoczna instancja informacyjnego obrazka otrzymuje własny element Figure i własny identyfikator oznaczonej treści, nawet gdy identyczne ładunki obrazów dzielą jeden obiekt XObject PDF; AltTextTitle nie zastępuje brakującego tekstu alternatywnego, wykresy pozostają artefaktami, a to skupione wsparcie struktury nie rości sobie prawa do pełnej zgodności z PDF/UA
TXLSPDFExport.PDFAProfile wybiera PDF/A-1, PDF/A-2 lub PDF/A-3 na poziomie zgodności a lub b; niezgodne szyfrowanie, czcionki, załączniki, przezroczystość, podpisy i metadane są weryfikowane przed zatwierdzeniem strumienia wyjściowego
TXLSPDFExport.ExportCommentsAsAnnotations umieszcza tekst autora i komentarza w Unicode na prostokątach komórek źródłowych, natomiast tradycyjne wyjście komentarzy na końcu pozostaje niezależnie konfigurowalne
UsePDFA to przełącznik zgodności dla PDF/A-1b, a UseXRefStream wybiera strumienie krzyżowych odwołań tam, gdzie wybrany profil na to pozwala
Geometria strony i wybór zakresu
Sześć przeciążeń CalculatePageCount przyjmuje zakresy klasyczne i XLSX, arkusze lub skoroszyty bez budowania obiektów PDF
PaperWidth i PaperHeight zastępują wymiary papieru w punktach, LastPage zamyka jednobazowy przedział wyjściowy, Orientation (typ TXLSPDFOrientation) wybiera wyjście pionowe lub poziome, HidePrintObjects (zbiór TXLSPDFHidePrintObject: xlsPdfHideHeaders, xlsPdfHideFooters) pomija wybrane pasma nagłówka lub stopki, a PageLayout (typ TXLSPDFPageLayout) ustawia początkowy układ stron w podglądzie
Tryb stron PDF i akcja otwarcia
TXLSPDFExport.PageMode (typ TXLSPDFPageMode) ustawia sposób rozmieszczenia paneli przez przeglądarkę PDF przy otwarciu dokumentu, przez xlsPdfModeDefault, xlsPdfModeUseOutlines, xlsPdfModeUseThumbs, xlsPdfModeFullScreen, xlsPdfModeUseOCi xlsPdfModeUseAttachments
OpenAction (typ TXLSPDFOpenAction) wybiera początkowe zachowanie przeglądarki przez xlsPdfOpenNone, xlsPdfOpenPagealbo xlsPdfOpenOutlines. Dla xlsPdfOpenPagewartością OpenActionPage jest strona docelowa liczona od 1 (ograniczana do liczby stron), a OpenActionZoom jest początkowym współczynnikiem powiększenia, przy czym 0 zachowuje domyślny zoom lub dopasowanie przeglądarki
Współdzielona adaptacyjna geometria wektorowa
XLSBuildEllipticArcCubics przekształca łuk eliptyczny na segmenty krzywych Bézier stopnia trzeciego przez rekurencyjne wymuszanie granicy płaskości wybranej przez wołającego; renderowanie PDF, SVG i bitmap korzysta z tej wspólnej geometrii, dzięki czemu duże lub silnie ekscentryczne łuki otrzymują więcej segmentów bez karania prostych łuków
XLSDecodeVectorScene waliduje nagłówki EMF i WMF, wyrównanie i rozmiary rekordów, deklarowane sumy, dokładne umiejscowienie EOF oraz limity zasobów bez wywoływania odtwarzania metafile platformy; natywna biała lista odtwarza stosy stanu kontekstu urządzenia z zapisem i przywracaniem, mapowanie okna i portu widzenia łączone z transformacjami świata, tablice obiektów piór, pędzli i piór rozszerzonych wraz z obiektami magazynowymi, prostokąty, elipsy, łańcuchy linii, wielokąty, linie łamane i krzywe Bézier ze stylami kreskowania, nawiasy ścieżek z przejściami wypełnienia, obrysu i łączonym obrysem-z-wypełnieniem, zaokrąglone prostokąty, łuki, cięciwy, wycinki i łuki kątowe przez dokładną konwersję łuku na Bézier, wypełnienia i obrysy regionów z ograniczonych prostokątów RGNDATA, ograniczone ciągi tekstu z czcionkami, kolorami i wyrównaniem oraz ograniczone obrazy stretch-DIB rekodowane jako PNG przez Canvas i SVG; odrzuca rekordy ucieczki i pozostawia przycinanie oraz rekordy prywatne istniejącemu ograniczonemu zastępstwu
Konspekt PDF i wywołania zwrotne stron
Konspekt PDF żyje w kolekcji Bookmarks (typ TXLSPDFBookmarks): Add i AddForSheet dopisują wpisy, Delete usuwa jeden, a Count z Items wyliczają drzewo. Każdy wpis TXLSPDFBookmark obsługuje wpisy nadrzędne i podrzędne (Children), łańcuchy rodzeństwa, tytuły Unicode, kolory (Color), cel PageNumber , źródłową nazwę SheetName dla zakładek arkuszy oraz flagi pogrubienia i kursywy (zbiór TXLSPDFBookmarkStyle: xlsPdfBookmarkBold, xlsPdfBookmarkItalic), plus rozwinięte lub zwinięte elementy podrzędne; automatyczne zakładki arkuszy używają tego samego modelu hierarchii, a AutoSheetBookmarks przełącza ich generowanie
BeforeNewPage może dostosować każdą ramkę strony, natomiast BeforeGeneratePage i AfterGeneratePage rysują treść tła lub nakładki przez publiczne pomocniki strony AppendPageContent, FillPageRectangle, StrokePageRectanglei DrawPageText
Podpisy i załączniki
TXLSPDFSignature konfiguruje widoczne lub niewidoczne pola podpisu, natomiast CertificationPolicy opcjonalnie tworzy podpis certyfikacji DocMDP zezwalający na brak zmian, wypełnianie formularzy i podpisywanie albo wypełnianie, podpisywanie i adnotacje; PDF/A-1 nie zezwala na tę funkcję PDF 1.5 i jest odrzucany przed zatwierdzeniem wyjścia
TXLSPDFCertificationPolicy udostępnia xlsPdfApprovalSignature, xlsPdfCertifyNoChanges, xlsPdfCertifyFormFillingAndSigningi xlsPdfCertifyFormFillingSigningAndAnnotations do jawnego wyboru polityki podpisu
Zdarzenie TXLSPDFSignDigestEvent odbiera skrót i zwraca dane CMS utworzone przez hosta, dzięki czemu HotXLS nigdy nie potrzebuje klucza prywatnego
TXLSPDFExport.Signature dołącza konfigurację podpisu, a profile PDF/A-3 mogą zawierać zwalidowane powiązane pliki przez AddAttachment, który kolejkuje TXLSPDFAttachment; szczegółowe przeciążenie przyjmuje nazwę wyświetlaną Unicode, typ MIME, opis, czas modyfikacji, ładunek i wartość TXLSPDFAttachmentRelationship równą Source, Data, Alternative, Supplement albo Unspecified, natomiast AttachmentCount raportuje łączną liczbę w kolejce, a AttachmentDuplicatePolicy (typ TXLSPDFAttachmentDuplicatePolicy) wybiera sposób obsługi identycznych nazw
TXLSPDFSignature.ImageData, ImageFormati ImageFit (typ TXLSPDFSignatureImageFit: contain, cover albo stretch) umieszczają PNG w normalnym wyglądzie Form przed zamrożeniem zakresu bajtów; tryby contain, cover i stretch dzielą pamięć podręczną obrazów dokumentu, a nieprawidłowe obrazy zawodzą przed podpisaniem
Przeciążenie IXLSPDFAttachmentSource pozostaje leniwe do chwili zapisu, wywołuje każde źródło raz na zapis i buforuje na dysku co najwyżej 256 MiB przed utworzeniem obiektu EmbeddedFile, dzięki czemu awarie dostawcy pozostawiają transakcję docelową nietkniętą
Finalna kompilacja zapisuje obiekty sekwencyjnie do celu zamiast budować jeden cały dokument jako string: eksporty niepodpisane strumieniują wprost do strumieni tylko-do-przodu, każdy EmbeddedFile odwołuje swój rozmiar bajtów przez pośredni obiekt /Length emitowany po ładunku, a bajty dostawcy kopiowane są z bufora stałymi porcjami; eksporty podpisane kompilują się do ograniczonego bufora dokumentu, który przyjmuje łatki ByteRange i zawartości podpisu, przyrostowy SHA-256 po dwóch objętych zakresach oraz pojedynczą kopię do przodu
Wyjście PDF/A-3 zapisuje każdy powiązany plik zarówno w drzewie nazw EmbeddedFiles, jak i w tablicy AF katalogu, z nazwą UF Unicode, escapowaną nazwą PDF typu MIME, AFRelationship, rozmiarem bajtów, opcjonalną datą modyfikacji i opcjonalnym opisem; PDF/A-1 i PDF/A-2 odrzucają załączniki z kolejki przed zatwierdzeniem wyjścia
Metadane dokumentu
DocumentTitle, DocumentAuthor, DocumentSubject, DocumentKeywordsi DocumentFileName wypełniają słowniki informacji i metadanych PDF
Zastępowanie czcionek
TXLSPDFExport.SetFontFallbackChain, AddFontFallbacki ClearFontFallbackChains konfigurują poziomy zastępcze dla rodziny źródłowej i stylu; LoadedFallbackFontCount udostępnia liczbę buforowanych krojów, a FontFallbackSelectionCacheCount liczbę buforowanych decyzji zastąpienia per wybór — obie do celów diagnostycznych
TXLSPDFExport.FontSize ustawia domyślny rozmiar tekstu w punktach, z wartością domyślną 9
Wybór czcionki zastępczej opiera się na pokryciu glifów i zachowuje mapowania Unicode, skalary uzupełniające, klastry grafemów, klastry kształtowania oraz samodzielne kroje TTC
OnGetFontDirectories może zwrócić jeden lub więcej katalogów czcionek rozdzielonych średnikiem dla żądanej rodziny i stylu; zaakceptowane katalogi są przeszukiwane rekurencyjnie jednorazowo, indeksowane po wewnętrznych metadanych rodziny i stylu oraz buforowane do późniejszego pomiaru i rysowania
Polityka osadzania czcionek
TXLSPDFExport.FontEmbedding (typ TXLSPDFFontEmbedding) wybiera automatyczne osadzanie, wymagane podzbiory, pełny program czcionki albo wyjście tylko z mapą przez xlsPdfFontEmbedAuto, xlsPdfFontEmbedSubset, xlsPdfFontEmbedFulli xlsPdfFontEmbedNone; wymagane tworzenie podzbioru zawodzi atomowo, gdy nie da się wyprodukować poprawnego podzbioru, kroje TTC są konwertowane na samodzielne czcionki, a PDF/A odrzuca wyjście tylko z mapą
OnFontEmbed uruchamia się raz na krój Unicode, zanim ustalone zostaną jego metryki, mapa znaków, kształtowanie i identyfikatory glifów; ustawienie Handled akceptuje zwrócony tryb per czcionka i opcjonalne bajty zastępujące, pozostawienie wartości false zachowuje politykę dokumentu i oryginalny krój
Samodzielne czcionki OpenType z konturami CFF osadzają się przez FontFile3 ze strumieniem OpenType i potomkiem CIDFontType0 ; tryby automatyczny i pełny zachowują kompletny program, natomiast wymagane podzbiory CFF zawodzą atomowo, ponieważ nie potrafią zachować poprawnego podzbioru
Osadzone czcionki niosące dane OpenType GPOS lub starsze kern używają pozycjonowanych przesunięć glifów dla tekstu prostego i złożonego, więc pomiar, zawijanie, wyrównanie i emitowane pozycje glifów dzielą ten sam wynik kerningu
Postęp i anulowanie
TXLSPDFExport.OnProgress i OnProgressEx raportują fazy rozpoczęcia, strony i zakończenia; Cancel żąda anulowania, a Aborted raportuje stan końcowy bez zatwierdzania częściowego strumienia