Przenośne wyjście headless
Dostępne od wersji 2.384.100 jako ograniczony potok wyjścia z jawnymi API przechwytu i renderowania
Przechwyć obsługiwany prostokąt ze skoroszytu Classic XLS albo XLSX w Windows, przetransferuj jego niezmienną migawkę i wyrenderuj PDF, SVG albo PNG na Linuksie lub macOS z Free Pascal i natywnym Cairo
Adapter przechwytu korzysta z silnika skoroszytu; przechwyt w Windows używa swojej domyślnej usługi geometrii, podczas gdy natywny przechwyt na Linuksie i macOS może dostarczyć jawną usługę geometrii FreeType/HarfBuzz opartą na plikach fontów wybranych przez aplikację
Oddzielny natywny konsument przyjmuje sceny lxPortableRender przez lxPortableCairo, bez Excela i sesji pulpitu; jego API geometrii też korzysta z istniejących przenośnych jednostek widoku skoroszytu i geometrii renderowania
Konsument przyjmuje niezmienną scenę albo strumień transferu; wymagania platformowe dla wczytywania i obliczania skoroszytów są opisane osobno w wsparciu Free Pascal
Przechwyt prostokąta istniejącego skoroszytu
CaptureXLSPortableRenderSnapshot w lxPortableWorkbookCapture przyjmuje IXLSWorkbook albo IXLSXWorkbookOwner, z jawnymi albo domyślnymi TXLSPortableRenderLimits; dwa kolejne przeciążenia przyjmują jawne limity, po których następuje provider IXLSRenderGeometry ograniczony do widoku przechwytu
SheetIndex i włączna Row1, Col1, Row2, Col2 są numerowane od 1; powstała migawka przechowuje pozycje numerowane od zera względem przechwyconego prostokąta
program CaptureRectangle;
{$APPTYPE CONSOLE}
uses SysUtils, Classes, lxHandleX, lxPortableRender,
lxPortableWorkbookCapture;
var
Workbook: TXLSXWorkbook;
Owner: IXLSXWorkbookOwner;
Snapshot: IXLSPortableRenderSnapshot;
Stream: TFileStream;
begin
Workbook := TXLSXWorkbook.Create;
Owner := Workbook;
if Workbook.Open('report.xlsx') <> 1 then
raise Exception.Create('Cannot open report.xlsx');
Snapshot := CaptureXLSPortableRenderSnapshot(Owner, 1, 1, 1, 30, 6);
Stream := TFileStream.Create('report.hxrs', fmCreate);
try
SaveXLSPortableRenderSnapshot(Snapshot, Stream,
XLSDefaultPortableRenderLimits);
finally
Stream.Free;
end;
Owner := nil;
end.
Trzymaj interfejs właściciela przy życiu podczas korzystania z obiektu skoroszytu; zwalniaj interfejs zamiast ręcznie niszczyć skoroszyt posiadany przez interfejs
Dla Classic XLS użyj TXLSWorkbook i IXLSWorkbook z lxHandle z tym samym wywołaniem przechwytu
Przechwyt czyta istniejące pamięci podręczne formuł i odrzuca dowolną formułę w prostokącie bez pamięci podręcznej; nigdy nie przelicza jawnie, nie pobiera danych zewnętrznych ani nie rejestruje nowych stylów w skoroszycie źródłowym
Przelicz jawnie przed przechwytem, gdy aplikacja potrzebuje świeżych wyników formuł; istniejąca pamięć podręczna jest renderowana tak, jak została zapisana, więc przechwyt nie poświadcza jej świeżości
Operacja trzyma widok odczytu i sprawdza generację skoroszytu przed zwróceniem; zwrócona migawka jest odłączona od własności skoroszytu i pozostaje użyteczna po zwolnieniu skoroszytu
Wygląd i granice przechwytu
Migawka zawiera sformatowany tekst wyświetlany, wymiary fizyczne w punktach, rozwiązane kolory RGB, obsługiwane fonty i wyrównania komórek, wypełnienia, obramowania i kompletne scalone prostokąty; ukryte wiersze i kolumny mają rozmiar zerowy
Obsługiwany wygląd fontów obejmuje pogrubienie, kursywę, pojedyncze podkreślenie i przekreślenie; obsługiwany wygląd komórek obejmuje wypełnienia pełne, wyrównanie poziome lewe/środkowe/prawe, wyrównanie pionowe górne/środkowe/dolne, zawijanie, zmniejszanie i kolejność czytania od prawej do lewej
Obramowania skoroszytu cienkie, średnie, grube, włosowe, podwójne, kropkowane, kreskowe i średnio-kreskowe mapują się na przenośne style obramowań i szerokości punktowe; inne style obramowań są odrzucane
Obsługiwany rich text niesie efektywne fonty przebiegów, rozmiary punktowe, kolory RGB, pogrubienie, kursywę, pojedyncze podkreślenie, przekreślenie oraz indeks górny lub dolny na poziomie przebiegu; zwykłe efekty fontów komórki kontur/cień/pionowe, nieobsługiwane style podkreślenia, gradientowe albo wzorzyste wypełnienia, obramowania ukośne, wcięcia, rotacja tekstu i nieobsługiwane wyrównania są odrzucane
Prostokąt przechwytu musi zawierać każdą scaloną komórkę w całości; przycięte, nakładające się albo niespójne scalenia i niezgodne style wzdłuż scalonej krawędzi zewnętrznej są odrzucane
Tła arkuszy i nieobsługiwane rodzaje arkuszy odrzucają przechwyt; obsługiwane obrazy PNG/JPEG i zwykłe kształty tekstowe prostokąt/elipsa w obu fasadach skoroszytu są przechwytywane jako uporządkowane obiekty sceny, razem z obrazami komórek XLSX, checkboxami Boolean i opisanym poniżej obsługiwanym podzbiorem zapamiętanych wykresów XLSX; nieobsługiwane wykresy, presety kształtów, WordArt, transformacje grupowe, kontrolki pływające, Slicery, Timeline i sparkline są odrzucane, gdy ich rozwiązane ślady przecinają prostokąt
Nieobsługiwana treść z pewnym rozwiązaniem śladu poza prostokątem może współistnieć z przechwytem; nierozwiązywalny ślad rysunku jest odrzucany zamiast cichego pominięcia potencjalnie nakładającej się treści
Stylizacja tabel Classic przecinająca prostokąt jest odrzucana; wbudowane i obsługiwane niestandardowe sekcje Table XLSX są rozwiązywane w odłączonym kontekście stylów, z pasami o rozmiarze sekcji i bezpośrednimi nadpisaniami formatu komórek
Dla obsługiwanych zaimportowanych sekcji Table z pełnym albo niejawnym różnicowym wypełnieniem RGB bgColor dostarcza widoczne tło; sam RGB fgColor pozostawia odziedziczone tło bez zmian, a sekcja niosąca oba kolory używa swojego koloru tła
Zaimportowane sekcje Table zawierające wygląd, którego typowane podsumowanie nie potrafi przedstawić, są odrzucane, gdy dana sekcja ma zastosowanie, łącznie z podkreśleniem, formatami liczb, jawnie wyczyszczonym pogrubieniem/kursywą, schematami fontów, jawnym wzorem braku wypełnienia i nieobsługiwanymi postaciami kolorów; niepowiązana sekcja poza przechwyconym prostokątem nie blokuje przechwytu
Obsługiwane formatowanie warunkowe jest aplikowane bez ewaluacji formuł: zapamiętane porównania liczbowe albo datowe względem literałowych granic liczbowych, literałowe wyrażenia Boolean lub liczbowe, reguły zawierania/prefiksu/sufiksu tekstu, puste i błędy; wygląd wyższego priorytetu wygrywa per obsługiwana właściwość, a XLSX StopIfTrue zatrzymuje reguły dopasowania niższego priorytetu
Tekstowe reguły Classic wymagają literałowej igły tekstowej i dopasowują zapamiętane komórki tekstowe; tekstowe reguły XLSX korzystają ze swoich zapisanych kryteriów tekstowych
Obsługiwany różnicowy wygląd obejmuje rozwiązane kolory motywu z tint oraz zwykłe kolory indeksowane; zaimportowane kolory automatyczne, tint spoza motywu, wypełnienie różnicowe niosące jednocześnie kolor pierwszego planu i tła oraz nieobsługiwane obramowanie, wyrównanie, przekreślenie albo inna nieprzedstawialna różnicowa cecha wyglądu są odrzucane, gdy pasująca reguła ma zastosowanie
Formuły warunkowe wymagające ewaluacji, reguły agregujące albo zależne od dat, skale kolorów, paski danych i zestawy ikon są odrzucane tam, gdzie zostaną napotkane; liczby nakładających się reguł formatowania warunkowego są ograniczone
Konwersja Date1904 wybiera mający zastosowanie surowy sekcji formatu liczbowego przed aplikacją offsetu kalendarza; nieaktywne sekcje kalendarza nie zmieniają zwykłego wyświetlania liczbowego, a wartości Boolean pozostają Boolean
Wybrana sekcja kalendarza Date1904 połączona z warunkami formatu albo konstrukcjami czasu upływu jest odrzucana; cudzysłowowe albo escapowane separatory sekcji też są odrzucane, a ta granica nie blokuje wybranej zwykłej sekcji liczbowej tylko dlatego, że inna sekcja jest formatem kalendarza
Rich text i uporządkowane sceny rysunków
TXLSPortableCell.RichText to tablica rekordów TXLSPortableTextRun zawierających Text, FontFamily, FontSizePoints, FontStyles, ColorRGB i BaselineShiftPoints; sklejony tekst przebiegów musi być dokładnie równy tekstowi wyświetlanemu komórki
Przebiegi XLSX dziedziczą pominięte właściwości z efektywnego fontu przechwyconej komórki, łącznie z obsługiwaniem tabelą i formatowaniem warunkowym; jawnie przypisane flagi false oraz jawne wartości none/baseline/automatic koloru nadpisują dziedziczenie
Natywne ciągi współdzielone i ciągi inline zachowują granice przebiegów i białe znaki; nieobsługiwane natywne potomkowie fontów, atrybuty, przestrzenie nazw, rozbudowane kolory motywu/indeksowane i adnotacje fonetyczne są odrzucane zamiast cicho gubić widoczny wygląd
Przebiegi Classic rozwiązują swoje zapisane indeksy fontów BIFF do pełnych efektywnych fontów przebiegów; metadane fonetyczne i nieobsługiwane fonty przebiegów są odrzucane, a przechwyt zachowuje generację skoroszytu i pule stylów
Tekstowe kształty Classic czytają istniejące właściwości OfficeArt i przebiegi fontów TXO bez tworzenia wraperów rysunków i bez zmiany skoroszytu; kotwice korzystają z rzeczywistych wymiarów wierszy/kolumn i offsetów, obsługiwane pełne wypełnienia i kontury zachowują kolory i szerokości, a osadzone bajty PNG/JPEG są odłączane przed transferem
Tekst prostokąta korzysta z natywnych marginesów 7,2 pkt poziomego i 3,6 pkt pionowego; tekst elipsy dodatkowo korzysta ze swojego wpisanego prostokąta tekstu, utrzymując zwykły tekst wewnątrz konturu kształtu w obu fasadach skoroszytu
Zaimportowane kontenery Classic prostokąt i elipsa zachowują swój typowany tekst i formatowanie; pominięte metadane natywnego kształtu albo grupy bez rozwiązalnego śladu odrzucają przechwyt jawnie, podczas gdy nieznane rekordy ogona obiektu, rozszerzenia rysunków, rotacja, wypełnienia niepełne i nieobsługiwane style linii odrzucają przecinający obiekt
Zaimportowane kotwice XLSX dwóch komórek prostokąta i elipsy obsługują jawne pełne wypełnienia RGB z alfą, kontury pełne albo kreskowe/kropkowane, fizyczne offsety kotwic i pojedynczy zwykły akapit rich text; każdy przebieg zachowuje swój efektywny krój, rozmiar punktowy, kolor, pogrubienie, kursywę, pojedyncze podkreślenie i przekreślenie, łącznie z jawnym resetem pogrubienia albo kursywy
Czytnik zaimportowanych kształtów rezerwuje surowy bufor roboczy XML przed parsowaniem i kooperacyjnie sprawdza budżety elementów, bajtów i tekstu; zachowuje kolejność rysunków skoroszytu i dzierżawy odczytu bez tworzenia modeli kształtów albo nieobecnych komórek
Nieznane natywne właściwości kształtów, efekty, motywy, rotacje, transformacje grupowe, wiele akapitów i nieobsługiwane rodzaje kotwic są odrzucane jawnie; rozwiązany nieobsługiwany ślad poza prostokątem przechwytu nie blokuje żądanego regionu
Indeks górny i dolny na poziomie przebiegu korzystają z dwóch trzecich rozmiaru fontu przebiegu i przesunięcia linii bazowej jednej trzeciej jego pierwotnego rozmiaru punktowego; granica stylu przecinająca klastra kształtowania Unicode albo sekwencja CRLF przechodząca przez niezgodne granice przebiegów jest odrzucana podczas natywnego układu
TXLSPortableSceneObject niesie Kind, punktowe X, Y, Width, Height, prostokąt przycinania, kolory i krycie wypełnienia/konturu, opcjonalne punkty ścieżki, komórkę tekstową albo zakodowane bajty rastra i wymiary
TXLSPortableSceneKind zawiera xpskRectangle, xpskEllipse, xpskPolyline, xpskPolygon, xpskText, xpskPNG i xpskJPEG; kolejność tablicy to kolejność rysowania, przy czym późniejsze obiekty przykrywają wcześniejsze
Dodatkowe przeciążenie CreateXLSPortableRenderSnapshot przyjmuje tablicę TXLSPortableSceneObjects; odpytaj IXLSPortableRenderSceneSnapshot o numerowane od zera Objects i ObjectCount, których gettery zwracają odłączone kopie, łącznie z tablicami przebiegów, punktów i rastrów
Obrazy komórek i ścieżki checkboxów poprzedzają rysunki pływające; rysunki pływające zachowują kolejność skoroszytu, fizyczne kotwice i przycinanie viewportu, a kształty tekstowe korzystają z minor font motywu o 11 punktach z marginesami tekstu 7,2 punkta poziomym i 3,6 punkta pionowym
Obrazy PNG i JPEG są dekodowane natywnie po preflight nagłówka, rozmiaru pikseli i bajtów; obsługiwane obrazy pływające zachowują przezroczystość i geometrię rozciągania, podczas gdy obrazy komórek mieszczą się w komórce albo kompletnym scalonym prostokącie z zachowanym współczynnikiem proporcji
Przycinanie, rotacja, cienie, regulacja luminancji/gammy, kafelkowanie, towarzysze SVG i żywe powiązania kamery pozostają nieobsługiwane; zachowany XML obrazów jest walidowany względem obsługiwanego wyglądu, więc ukryte obrazy, nieznane zagnieżdżone metadane, właściwości w obcych przestrzeniach nazw, nieprostokątna geometria obrazów i niemodelowane transformacje są odrzucane tylko wtedy, gdy ich ślad nachodzi na przechwyt
Checkboxy komórek Boolean używają neutralnej motywowo wektorowej ramki i opcjonalnego znacznika wyboru, łącznie z efektywnymi kontrolkami odziedziczonymi z formatów wierszy i kolumn; żądany marszruta komórek jest ograniczana przed przemierzeniem, inne rodzaje kontrolek oraz puste albo nie-Boolean wartości checkboxów są odrzucane, a obsługiwane sceny komórkowe wyciszają skalarne Boolean albo tekst zapasowy błędu obrazu
Domyślny checkbox to metadane wstawiania i nie tworzy Boolean dla nieobecnej komórki; jawne czyszczenie kontrolki bezpośredniej komórki maskuje kontrolkę odziedziczoną, podczas gdy odczyty przechwytu zachowują rzadką nieobecność i generację skoroszytu
XLSReadPortableImageDimensions waliduje ograniczony PNG IHDR albo obsługiwana ośmiobitowa klatkę JPEG sekwencyjną/progressive i zwraca zadeklarowaną szerokość i wysokość; dekodowanie pozostaje odpowiedzialnością renderera
IXLSPortableSceneCaptureSource.ReadPortableSceneObjects korzysta ze współrzędnych skoroszytu numerowanych od 1 i punktowych współrzędnych sceny względem zakresu, waliduje zakres i kooperacyjne limity oraz zwraca skonsumowane liczby bajtów, tekstu i elementów; HasPortableCellScene identyfikuje komórki, których wyświetlanie skalarne jest zastępowane przez przechwyconą scenę
Natywny układ: CellCount liczy komórki siatki, a LineCount obejmuje też obiekty scen tekstowych; CellIndex linii obiektu tekstowego to CellCount plus jego numerowana od zera sekwencja wśród obiektów scen tekstowych, podczas gdy GetCellGeometry pozostaje ograniczone do komórek siatki
Skalarne migawki dalej serializują się jako HXRSNP01; migawki zawierające przebiegi albo obiekty scen serializują się jako HXRSNP02, a loader akceptuje obie wersje z tym samym kontraktem niezmiennej własności i wycofania pozycji wejścia
Połączony budżet elementów liczy zapisane komórki, przebiegi rozbudowane, obiekty scen i punkty ścieżek; limity bajtów obejmują etapowane i odłączone tablice, tekst, zakodowane ładunki rastra i ograniczoną inspekcję natywnych metadanych przed alokacją
Przenośne API migawki
| Symbol | Kontrakt |
|---|---|
EXLSPortableRender | Wyjątek podnoszony dla nieprawidłowych danych migawki, nieobsługiwanego wyglądu przechwytu, niedostępnego natywnego backendu, limitów zasobów albo błędów renderowania |
TXLSPortableFontStyle, TXLSPortableFontStyles | xpfsBold, xpfsItalic, xpfsUnderline i xpfsStrikeout, łączone jako zbiór |
TXLSPortableHorizontal, TXLSPortableVertical | xphLeft, xphCenter, xphRight oraz xpvTop, xpvCenter, xpvBottom |
TXLSPortableBorderStyle, TXLSPortableBorder | xpbsNone, xpbsSolid, xpbsDashed, xpbsDotted i xpbsDouble; każde obramowanie niesie Style, WidthPoints i ColorRGB |
TXLSPortableCell | Numerowane od zera Row/Column, dodatnie RowSpan/ColumnSpan, wyświetlany Text, FontFamily, FontSizePoints, FontStyles, TextColorRGB, FillColorRGB, HasFill, WrapText, ShrinkToFit, RightToLeft, Horizontal, Vertical i cztery rekordy LeftBorder/TopBorder/RightBorder/BottomBorder |
TXLSPortableCells, TXLSPortableSizes | Tablice dynamiczne zapisanych komórek oraz fizycznych rozmiarów wierszy/kolumn w punktach |
TXLSPortableRenderLimits | MaxGridCells, MaxStoredCells, MaxBytes i MaxTextCharacters ograniczają konstrukcję, przechwyt i serializację |
XLSDefaultPortableRenderLimits | Zwraca 2000000 komórek siatki, 2000000 komórek zapisanych, 67108864 bajtów i 16777216 znaków tekstu UTF-16 |
XLSDefaultPortableCell | Inicjalizuje rozpiętość jednej komórki z Calibri o 11 punktach i domyślnym wyglądem zerowym; ustaw jej pozycję i żądany wygląd przed konstrukcją |
CreateXLSPortableRenderSnapshot | Waliduje i kopiuje generację, wysokości wierszy, szerokości kolumn i zapisane komórki do odłączonego niezmiennego interfejsu; komórki muszą być unikalne, w kolejności wiersz-główna, w granicach i mieć nienakładające się rozpiętości |
IXLSPortableRenderSnapshot | Tylko do odczytu: Generation, RowCount, ColumnCount, CellCount, numerowane od zera RowHeightPoints, ColumnWidthPoints i skopiowane rekordy Cells |
| Metody getter migawki | GetGeneration, GetRowCount, GetColumnCount, GetCellCount, GetRowHeight, GetColumnWidth i GetCell ujawniają te same wartości; nieprawidłowy dostęp indeksowany podnosi wyjątek |
SaveXLSPortableRenderSnapshot | Waliduje i serializuje jedną migawkę do ograniczonego prywatnego bufora, po czym kopiuje kompletny ładunek HXRSNP01 albo HXRSNP02 do podanego strumienia w jego bieżącej pozycji |
LoadXLSPortableRenderSnapshot | Czytuje wersjonowaną migawkę little-endian ze ścisłym tekstem UTF-8, waliduje liczby, geometrię, style i rozpiętości oraz odrzuca dane końcowe; błąd przywraca pozycję strumienia wejścia |
Wszystkie limity muszą być dodatnie; zwalidowane maksimum to 2000000 komórek siatki/zapisanych, 1073741824 bajtów i 268435456 znaków tekstu, przy wymiarach nie większych niż 1048576 wierszy na 16384 kolumn
MaxGridCells liczy cały prostokąt, łącznie z niezapisanymi pustymi komórkami; CellCount liczy zapisane widoczne komórki i kotwice scaleń i może być mniejsze
Generation rejestruje generację źródła albo wartość dostarczoną przez aplikację; to metadane, a nie żywe łącze do skoroszytu ani automatyczne sprawdzenie świeżości
Renderowanie natywne i jawne fonty
XLSPortableCairoBackendAvailable raportuje dostępność skompilowanego natywnego backendu; natywne wyjście wymaga Free Pascal na Linuksie lub macOS, z bibliotekami Cairo, FreeType, HarfBuzz i FriBidi dostępnymi dla procesu
Budowanie macOS linkuje cztery natywne biblioteki jawnie; prywatny prefiks zależności i jawna ścieżka loadera procesu potomnego potrafią je dostarczyć bez zmian we wspólnych ustawieniach kompilatora czy profilach powłoki
Windows Delphi XE5, Win32 i Win64 potrafi skompilować przenośne interfejsy i korzystać z serializacji migawek, ale natywne przygotowanie układu Cairo raportuje tam niedostępność backendu
Przekaż jawny łańcuch fontów do PrepareXLSPortableCairoLayout; renderer najpierw próbuje dopasować rodzinę i styl pogrubienie/kursywa, potem fallbacki tego samego stylu w podanej kolejności, wymagając pokrycia glifów dla każdego obsługiwanego klastra tekstu
Dostarcz rzeczywiste pliki regular, bold, italic i bold-italic wymagane przez przechwyconą treść; nie ma odkrywania fontów systemowych ani syntetycznego podstawiania bold/italic, a brakujące pliki, mapowania stylów albo pokrycie glifów są odrzucane
Bajty fontów są przechwytywane przed kształtowaniem, więc zmiana pliku wpływa na późniejsze układy, podczas gdy istniejący układ zachowuje przechwycone bajty; FaceIndex wybiera nieujemny krój w pliku albo kolekcji fontów
Operacje natywne są serializowane dla bezpieczeństwa krójów FreeType; niezmienne migawki i inspekcja przygotowanego układu nie wymagają żywego skoroszytu
Fonts[0].FamilyName := 'Calibri'; Fonts[0].FileName := '/srv/fonts/Regular.ttf'; Fonts[0].FaceIndex := 0; Fonts[0].Bold := False; Fonts[0].Italic := False;
Tutaj Calibri to jawny alias rodziny dla wybranego pliku, co pozwala na mapowanie fontów kontrolowane przez aplikację; przy mapowaniu na inny font badaj metryki wyjścia
Renderer obsługuje twarde łamanie wierszy, rozwinięcie tabulatora o cztery spacje, dwukierunkowe uporządkowanie akapitu, kształtowane ligatury i znaki diakrytyczne łączne, zachłanne zawijanie i zmniejszanie-dopasowanie; zawijanie ma pierwszeństwo przed zmniejszaniem
Zawijanie zachowuje zaimplementowane granice klastrów znaków diakrytycznych łącznych, selektorów wariacji, ZWJ i wiramy oraz faworyzuje spacje i spacje ideograficzne; nie jest to pełna implementacja grafemów UAX #29 ani algorytm łamania wierszy Unicode, a granice zawijania regional-indicator i Hangul-Jamo nie są gwarantowane
Rozmiary fontów rozwiązują się do 1/64 punkta, a tekst jest przycinany do granic komórek; PDF osadza jawne fonty z logicznymi mapowaniami tekstu, SVG korzysta z wektorowych ścieżek glifów, a PNG rysuje te same pozycjonowane glify w żądanym DPI
Przygotowanie i inspekcja układu
| Symbol | Kontrakt |
|---|---|
TXLSPortableFontFile, TXLSPortableFontFiles | Jedno jawne mapowanie zawiera FamilyName, FileName, FaceIndex, Bold i Italic; tablica dynamiczna jest uporządkowana i zawiera od 1 do 64 mapowań |
TXLSPortableCairoFormat, TXLSPortableOutputFiles | xpcfPDF, xpcfSVG albo xpcfPNG oraz tablica nazw plików wyjściowych zwrócona przez zapis plikowy |
TXLSPortableCairoOptions | Szerokość/wysokość strony, cztery marginesy, padding komórek i raster DPI, plus limity strony, glifów, linii, układu, wyjścia, fontów, kształtowania i rysowania |
XLSDefaultPortableCairoOptions | Inicjalizuje każdą opcję ograniczonymi wartościami domyślnymi; użyj go przed nadpisaniem poszczególnych pól |
PrepareXLSPortableCairoLayout | Waliduje i kopiuje migawkę, przechwytuje jawne bajty fontów i zwraca posiadany przygotowany TXLSPortableCairoLayout; zwalniaj go przez Free |
TXLSPortableCairoLayout | Ujawnia PageCount, LineCount, CellCount, GetTextLine, GetCellGeometry, SaveToStream, Save i Destroy |
TXLSPortableTextLineInfo | Skopiowany rekord linii ma CellIndex, GlyphCount, XPoints, BaselinePoints, WidthPoints, FontSizePoints i logiczny Text |
TXLSPortableCellGeometry | Skopiowany prostokąt ma XPoints, YPoints, WidthPoints i HeightPoints w pełnym układzie |
GetTextLine(Index), GetCellGeometry(Index) | Indeksowana inspekcja numerowana od zera dla przygotowanych linii i zapisanych komórek; nieprawidłowe indeksy są odrzucane |
Paginacja przycina stałe kafle obszaru druku w kolejności najpierw-w-dół-potem-w-poprzek; komórka albo fragment tekstu przecinający granice stron pojawia się na każdej przecinanej stronie, bez automatycznego dopasowywania całych komórek, powtarzania tytułów wydruku arkusza ani interpretacji ustawień strony skoroszytu
Opcje i granice renderera
| Pola | Domyślne i znaczenie |
|---|---|
PageWidthPoints, PageHeightPoints | 595 na 842 punkty |
MarginLeftPoints, MarginTopPoints, MarginRightPoints, MarginBottomPoints | Po 36 punktów; marginesy muszą zostawiać dodatni prostokąt druku |
CellPaddingPoints, RasterDPI | 2 punkty i 96 DPI; DPI wpływa na wymiary PNG |
MaxPages, MaxGlyphs, MaxLines | 256 stron, 2000000 kształtowanych glifów i 200000 linii tekstu |
MaxLayoutBytes | 268435456 bajtów dla ograniczonej pracy układu i sprawdzeń powierzchni rastra |
MaxOutputBytes | 268435456 bajtów na bufor wyjścia renderowania, obejmujący kompletny PDF albo jedną stronę SVG/PNG, a nie sumę osobnych plików stron |
MaxFontBytes | 134217728 bajtów w poprzek jawnych plików wejścia fontów dla jednego układu |
MaxShapedCharacters, MaxDrawOperations | Po 16000000, ograniczając pracę kształtowania i pracę rysowania per strona na komórkę |
Nieprawidłowa albo nieskończona geometria i nie dodatnie budżety pracy są odrzucane; wymiary stron są ograniczone do 100000 punktów, a raster DPI do 1200, z dodatkowymi sprawdzeniami bajtów, liczb i powierzchni rastra przed renderowaniem
Natywna pula bajtów fontów dla całego procesu dodatkowo dopuszcza co najwyżej 256 odrębnych buforów i 256 MiB; identyczne bajty mogą dzielić zapis, a pojemność jest zwalniana dopiero wtedy, gdy rzeczywiście posiadany przez Cairo krój fontu zwolni swój bufor
Zwalniaj każdy układ po skończeniu; biblioteka nie resetuje współdzielonych pamięci podręcznych Cairo, a logicznie ukończony układ może pozostawić bajty fontów rezydentne, dopóki natywne Cairo nadal posiada krój
Zapis wyjścia i obsługa błędów
SaveToStream(Stream, Format, PageIndex = 0) zapisuje wszystkie strony dla PDF, wymagając PageIndex = 0; SVG i PNG zapisują wybraną stronę numerowaną od zera
Serializacja migawki i natywne renderowanie kończą się w prywatnych ograniczonych buforach przed kopiowaniem do strumienia celu; błędy walidacji albo renderowania go zachowują, ale błąd zapisu strumienia wywołującego może pozostawić częściowe bajty i podąża za własnym zachowaniem błędów tego strumienia
Save(FileName, Format) zapisuje jeden plik PDF albo jeden plik SVG/PNG na stronę i zwraca ich ścieżki; nazwy wielostronicowe wstawiają -0001, -0002 i kolejne sufiksy przed rozszerzeniem
Istniejące cele plikowe albo katalogowe są odrzucane; każdy zapis etapuje wszystkie strony, publikuje wyłączne nowe cele i usuwa własne wyjścia etapowane/opublikowane przy błędzie
System plików musi obsługiwać natywne operacje wyłącznego etapowania i publikacji linków; osobne zapisy PDF, SVG i PNG to osobne operacje i nie tworzą połączonej transakcji
Samodzielny konsument Linuksa
Tests/Portable/RenderPortableSnapshot.pas to kompletny konsument, który wczytuje migawkę, przygotowuje jeden układ i zapisuje wszystkie trzy formaty; buduj go na Linuksie z zainstalowanymi przenośnymi jednostkami i bibliotekami natywnymi
fpc -Mdelphiunicode -Fu/path/to/HotXLS/Lib RenderPortableSnapshot.pas ./RenderPortableSnapshot report.hxrs /srv/output/report fonts.tsv 595 842 96
fonts.tsv to tekst UTF-8 z czterema polami rozdzielonymi tabulatorami na mapowanie: alias rodziny, absolutna ścieżka fontu Linuksa, indeks kroju i jedna z wartości regular, bold, italic albo bolditalic
Calibri /srv/fonts/Regular.ttf 0 regular Calibri /srv/fonts/Bold.ttf 0 bold Calibri /srv/fonts/Italic.ttf 0 italic Calibri /srv/fonts/BoldItalic.ttf 0 bolditalic
Używaj rzeczywistych zainstalowanych albo dostarczonych przez aplikację plików fontów i wybierz nową bazę wyjścia, bo istniejące pliki celowe są odrzucane; dołącz dodatkowe fallbacki tego samego styla dla pism niepokrytych pierwszym mapowaniem
Stream := TFileStream.Create('report.hxrs', fmOpenRead or fmShareDenyWrite);
try
Snapshot := LoadXLSPortableRenderSnapshot(Stream,
XLSDefaultPortableRenderLimits);
finally
Stream.Free;
end;
Options := XLSDefaultPortableCairoOptions;
Layout := PrepareXLSPortableCairoLayout(Snapshot, Fonts, Options);
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;
Nagrywanie zapamiętanych wykresów
XLSRecordCachedChartScene w lxPagination nagrywa punktowe prymitywy istniejącego renderera układu wykresów do niezmiennej przenośnej reprezentacji sceny; jego źródłem musi być odłączony TXLSXChart bez posiadającego arkusza i bez zachowanego natywnego XML, więc nagrywanie nie potrafi rozwiązać odwołań arkuszowych ani odświeżyć pamięci podręcznych skoroszytu
Bieżący podzbiór obsługuje wykresy kolumnowe, słupkowe, liniowe, punktowe, kołowe, pierścieniowe i zwykłe obszarowe o jednej serii z jedną podstawową grupą wykresu, skończonymi liczbowymi pamięciami podręcznymi wartości i ściśle rosnącymi ograniczonymi indeksami pamięci podręcznej; pamięci podręczne kategorii scatter zawierają liczbowe współrzędne X, podczas gdy pozostałe rodziny korzystają z zapisanych etykiet kategorii
Pamięci podręczne wartości wykresów kolumnowych, słupkowych, liniowych i obszarowych muszą mieć ciągłe indeksy numerowane od zera; rzadkie luki wartości kategorii są odrzucane, a nagrywanie nigdy nie rozwija brakujących indeksów do dużej tablicy
Wykresy słupkowe zachowują poziomą geometrię i etykiety kategorialne; wykresy kołowe i pierścieniowe korzystają z legend kategorii, honorują FirstSliceAng i HoleSize oraz pomijają osie liczbowe, podczas gdy zwykłe obszarowe wykresy o jednej serii zachowują wypełniony wielokąt wokół zerowej linii bazowej
Serie liniowe i punktowe obsługują niezależną widoczność linii, jawny kolor RGB i szerokość punktową przez LineVisible, LineColorRGB i LineWidthPoints; LineStyleSet, LineColorSet i LineWidthSet odróżniają ustawienia jawne od dziedziczonych domyślnych, a EffectiveLineVisible rozwiązuje istniejącą konwencję serii tylko z wypełnieniem
Markery obsługują automatyczne kółko, jawne kółko albo brak markera; jawny MarkerSize od 2 do 72 ustawia średnicę punktową, a MarkerFillSet i MarkerBorderSet odróżniają jawne czarne RGB równe zero od automatycznego wyboru koloru; segmenty łączące są malowane przed nieprzezroczystymi markerami danych
Jawne obramowania markerów bez zapisanej szerokości korzystają ze zwykłej linii 0,75 punkta, podczas gdy próbki legend ograniczają średnicę kółka do 6 punktów; żądane fonty tytułów są zapisywane na rzeczywistym przebiegu rich text, jak i na jego domyślnych właściwościach tekstu, zachowując widoczny rozmiar, kolor i wyróżnienie, gdy Excel eksportuje wykres
Nieobsługiwane rodziny wykresów, obszarowe wykresy stosowane albo wieloseryjne, kołowe wieloseryjne, style galerii, zaokrąglone narożniki, drugorzędne albo połączone grupy wykresu, osie dat, niestandardowe formaty liczb, osie logarytmiczne, niestandardowe zachowanie przecięcia, obrócony tekst, linie trendu, słupki błędów, hierarchiczne kategorie, etykiety danych, inne kształty markerów i brakujące pamięci podręczne wartości podnoszą EXLSPortableRender przed renderowaniem
Niestandardowe fonty znaczników osi wartości, drobne siatki, jawne jednostki głównych/drobnych, nieprawidłowe jawne kolory serii i nieobsługiwane pozycje osi są odrzucane; legendy słupkowe wymagają obecnie zwykłego rozmieszczenia po prawej, a wykresy kołowe wymagają skończonej niezerowej zapamiętanej sumy i ograniczonej geometrii z wczesną zachowawczą rezerwacją bufora roboczego na łuki
Zwrócona tablica zachowuje prymitywną kolejność rysowania, jawne kolory, fonty, wyrównanie tekstu, krycie i granice przycinania wykresu; rachunek elementów, bajtów i tekstu obejmuje zachowawcze rezerwacje bufora roboczego renderera, a kooperacyjne sprawdzenia pamięci podręcznej poprzedzają alokację tablicy roboczej
XLSValidateCachedChartSceneModel wykonuje ten sam ograniczony preflight pamięci podręcznej i wyglądu na modelu bez rozwiązywania komórek arkusza; mostek przechwytu XLSX korzysta z tego sprawdzenia przed klonowaniem i nagrywa obsługiwane autorskie modele wykresów z lokalnymi jednowymiarowymi odwołaniami A1, fizycznymi natywnymi offsetami kotwic, przycinaniem zakresów i kolejnością rysowania
Platformowo neutralny moduł nagrywający mieszka w lxPortableChart; istniejące punkty wejścia lxPagination dzielą te same ciała układu i nagrywania prymitywów, zachowując zachowanie renderera Windows i zgodne niezmienne bajty scen oraz rachunek budżetu dla każdej obsługiwanej rodziny
Natywny przechwyt skoroszytu na Linuksie i macOS korzysta z jawnego przeciążenia geometrii opisanego poniżej; zaimportowane wypełnienie RGB serii, tło obszaru wykresu, tło wykresu i obramowanie wykresu są odzyskiwane z ich własnych właściwości kształtu rozwiązanych w przestrzeni nazw, więc zagnieżdżony kolor serii nie potrafi nadpisać tła wykresu
Zachowany zaimportowany ChartML jest akceptowany tylko wtedy, gdy jego strumień elementów, atrybutów i znaczącego tekstu rozwinięty w przestrzeni nazw pasuje do obsługiwanej typowanej rekonstrukcji; aliasy przestrzeni nazw i kolejność atrybutów się normalizują, podczas gdy niemodelowane natywne rozszerzenia, obce atrybuty i nieobsługiwany wygląd są konserwatywnie odrzucane
Budżety robocze surowego XML i rekonstrukcji są sprawdzane przed klonowaniem i projekcją; tylko odłączona kopia czyści swój zwalidowany zachowany XML, a źródło zachowuje metadane natywne, zapis komórek, treść pamięci podręcznej i generację
Przechwyt przemierza leżący pod spodem porządek rysunków OfficeArt, łącznie z ramkami wykresów nieobecnymi w publicznym wraperze Shapes, i odrzuca przecinającą nieobsługiwaną ramkę zamiast cicho ją pomijać
Zapamiętane wykresy Classic ze zadeklarowanym wyglądem
Przechwyt Classic BIFF8 obsługuje siedem powyższych zwykłych rodzin wykresów, gdy ich rekordy rdzenia, lokalne zapisane wartości, jawne skale liniowe i wygląd dają się przedstawić; czyta zachowane rekordy i dostępne pamięci podręczne formuł bez ewaluowania formuł, rozwijania rzadkiego zapisu albo klonowania skompilowanych drzew formuł
Użyj TXLSWorkbook.CreateReadOnlyViewWithChartAppearance(Source, Limits, Geometry), aby utworzyć osobny widok tylko do odczytu z zamrożonym zbiorem wartości TXLSClassicChartAppearanceDeclaration dostarczanych przez IXLSClassicChartAppearanceSource; Geometry jest opcjonalne w Windows i dostarcza jawnych natywnych pomiarów fontów na Linuksie lub macOS
TXLSClassicChartAppearanceDeclarations to tablica dynamiczna prymitywnych deklaracji, których aplikacja może użyć do implementacji tego źródła
Przekaż ten skonfigurowany widok do CaptureXLSPortableViewRenderSnapshot(View, SheetIndex, Row1, Col1, Row2, Col2, Limits); współrzędne są numerowane od 1, a adapter przywraca aktywny arkusz wywołującego, gdy przechwyt się zakończy albo zostanie odrzucony
Zwykłe punkty wejścia przechwytu dalej odrzucają nierozwiązane efektywne fonty układu albo legendy Classic; odrębny punkt wejścia widoku korzysta z już zamrożonych deklaracji i providera geometrii
| Składnik deklaracji | Kontrakt |
|---|---|
Generation, SheetIndex, ObjectId | Przypięta generacja skoroszytu, indeks arkusza numerowany od 1 i rzeczywista zapisana tożsamość obiektu wykresu; nieaktualne generacje, brakujące albo powtórzone tożsamości i tożsamości należące do innego obiektu są odrzucane |
HasChartSize, ChartWidthPoints, ChartHeightPoints | Jawny skończony dodatni rozmiar ramki wykresu w punktach; zachowuje zapisany początek kotwicy i kolejność rysowania, podczas gdy flaga fałszywa utrzymuje wymiary wyprowadzone z kotwicy |
HasPlotInnerRectangle, PlotInnerRectangle | Jawny wewnętrzny prostokąt wykresu, wykluczający etykiety i tytuły osi; wymagany dla tej ścieżki zadeklarowanego wyglądu |
HasTitleRectangle, TitleRectangle | Jawny prostokąt tytułu, gdy wykres ma tytuł; tekst źródłowy, rodzina fontu, wyróżnienie i kolor dalej pochodzą ze zwalidowanych rekordów rdzenia |
HasLegendRectangle, LegendRectangle | Zadeklarowane granice legendy, gdy legenda występuje |
HasLegendFontSize, LegendFontSizePoints | Jawny efektywny rozmiar punktowy wywołującego dla obecnej legendy; rodzina fontu rdzenia, wyróżnienie i kolor są zachowywane |
TXLSPortableChartRectangle | Left, Top, Width i Height to skończone punkty względem przechwyconej ramki wykresu; aktywne prostokąty wymagają dodatnich wymiarów wewnątrz tej ramki |
Count, GetCount, ReadDeclaration | Źródło raportuje ograniczoną liczbę i zwraca jeden prymitywny rekord dla każdego indeksu numerowanego od zera, dopóki widok jest skonfigurowany; deklaracje są kopiowane przed późniejszym przechwytem |
Te wartości to wygląd deklarowany przez wywołującego, a nie automatyczny układ Excela albo wnioskowane skalowanie fontów; uzyskuj je ze niezależnie sprawdzonego źródła albo zdefiniowanego przez aplikację układu i przeglądaj wyjście z jawnym natywnym mapowaniem fontów używanym do renderowania
Jawne wymiary ramki i wewnętrzne granice wykresu muszą zostawić wystarczająco miejsca dla zwalidowanych fontów etykiet osi; niewystarczające miejsce na etykiety jest odrzucane zamiast przycinania tekstu albo stosowania dopasowanego współczynnika skali
Aplikacje trzymają właściciela skoroszytu przy życiu do zwolnienia widoku; pożyczony widok trzyma dzierżawę odczytu i zachowuje źródło deklaracji, podczas gdy powstała niezmienna migawka nie zachowuje ani skoroszytu, ani providera
Obsługiwana projekcja rdzenia obejmuje literałowe pełne wypełnienia, widoczne pełne linie, markery kołowe, tekst tytułu i legendy, rozmieszczenie kategorii i ograniczone jawne znaczniki liczbowe; automatyczne skale, nierozwiązany automatyczny wygląd markerów, wygładzanie, nieznane rozbudowane rozszerzenia, obce albo nieliniowe odwołania serii i nieprzedstawialne style punktów są odrzucane przed wyjściem
Deklarowanie geometrii albo rozmiaru legendy nie upoważnia do ignorowania nieznanych rozszerzeń wykresu ani niezwalidowanych stylów; limity bajtów, tekstu, zapisanych komórek i scen pozostają skuteczne dla zachowanych danych źródłowych, deklaracji, odłączonych pamięci podręcznych i miejsca roboczego nagrywania
Dodatkowe przeciążenia XLSValidateCachedChartSceneModel i XLSRecordCachedChartScene przyjmują TXLSCachedChartSceneAppearance dla odłączonego modelu; zainicjalizuj go przez XLSDefaultCachedChartSceneAppearance przed ustawieniem jawnych kontrolek
Niżej poziomowy XLSReadClassicChartScene w lxClassicChartScene zwraca należący do wywołującego odłączony TXLSXChart, prymitywny wygląd i liczniki budżetu z zachowanego TXLSCustomChart, jego dokładnego kalkulatora źródła i dzierżawionego TXLSClassicChartSceneSource; zwolnij zwrócony model po nagraniu
TXLSClassicChartSceneSource.ReadAppearance dostarcza prymitywną deklarację, ReadCell czyta ograniczone przypięte lokalne zapisane wartości, ReadFont wypełnia podany styl tekstu ograniczonymi efektywnymi danymi fontu rdzenia, a PaletteColor rozwiązuje jawne zapisane wpisy palety; implementacje aplikacji muszą zachować przypięte źródło i honorować każdą przydzieloną kwotę bajtów i znaków
| Składnik wyglądu sceny | Znaczenie |
|---|---|
SeriesMarkerSizePoints | Ograniczone średnice punktowe per seria, łącznie z wartościami ułamkowymi; zero zachowuje rozmiar markera modelu, a niezerowe nadpisanie musi być od 2 do 72 punktów |
OverrideBorder, BorderColorRGB, BorderWidthPoints | Jawny wygląd konturu ramki wykresu |
AxisColorRGB, TickColorRGB, GridlineColorRGB, AxisWidthPoints, TickWidthPoints, GridlineWidthPoints | Jawne farby i szerokości punktowe osi, znaczników i głównej siatki |
AreaFillOpacity, SeriesFillAlpha | Krycie obszaru i alfa wypełnienia serii |
UseAxisTickControls, CategoryBetween | Zwalidowane jawne kontrolki osi i rozmieszczenie kategorialne |
TitleOffsetXPoints, TitleOffsetYPoints | Skończone offsety aplikowane do zwykłej pozycji tytułu nagrywarki |
OverridePlotInnerRectangle, OverrideTitleRectangle, OverrideLegendRectangle, PlotInnerRectangle, TitleRectangle, LegendRectangle | Literałowe prostokąty punktowe względem ramki wykresu |
PieRadiusRatio | Promień wykresu kołowego jako ograniczony ułamek mniejszego wymiaru wykresu |
Prymitywy wykresów podążają za istniejącą polityką układu HotXLS; wygląd galerii wykresów wymagający niemodelowanych domyślnych Excela pozostaje jawną granicą nieobsługiwaną
Bezpośredni natywny przechwyt skoroszytu
CreateXLSPortableCairoRenderGeometry(Fonts, Calibration, Generation, Backend, Options, CacheCapacity) zwraca IXLSRenderGeometry oparty na tych samych jawnych plikach fontów, FreeType, HarfBuzz i kształtowaniu tekstu co natywne wyjście; szerokości kolumn korzystają z rzeczywiście zmierzonej maksymalnej szerokości cyfry z kalibracją skoroszytu
Provider posiada odłączone bajty fontów i ograniczoną pamięć podręczną metryk, sprawdza budżety fontów i układu przed alokacją oraz waliduje żądania pomiarów przed zmianą stanu pamięci podręcznej; pełna pamięć podręczna może zwracać pomiary poza cache bez rozszerzania poza swoją pojemność
Przechwyt weryfikuje, że generacja providera i wszystkie pola kalibracji pasują do bieżącego widoku skoroszytu tylko do odczytu, zachowuje providera dla tego widoku i pozostawia domyślną fabrykę geometrii skoroszytu bez zmian; zwykła domyślna geometria natywna pozostaje jawną granicą GDI
Przechwyć generację przez jawnie zwolniony widok przed utworzeniem providera; zachowanie tymczasowego wyniku interfejsu potrafi utrzymać jego dzierżawę odczytu do końca otaczającego zakresu
View := Owner.CreateReadOnlyView; Generation := View.Generation; View := nil; Geometry := CreateXLSPortableCairoRenderGeometry(Fonts, Workbook.CaptureRenderCalibration, Generation, xlsrgbBitmap, XLSDefaultPortableCairoOptions, 4096); Snapshot := CaptureXLSPortableRenderSnapshot(Owner, 1, 1, 1, 30, 6, XLSDefaultPortableRenderLimits, Geometry);
Natywni konsumenci kompilują się z LX_PORTABLE_CORE i odpowiadającymi zależnościami natywnymi; wywołania Windows do natywnej fabryki geometrii Cairo są odrzucane jawnie, podczas gdy przechwyt w Windows może korzystać ze swojej istniejącej fabryki geometrii przez te same ograniczone przeciążenia
Rzeczywisty przechwyt natywny obsługuje opisane powyżej skalarny modelowany, rich text, obsługiwany raster, zwykłe kształty i siedem zapamiętanych rodzin wykresów; przechwyt wykresów zachowuje pierwotny zaimportowany ChartML, zapamiętane punkty, rzadki zapis komórek, zapis spakowany i generację skoroszytu
Dla niezmiennych obszarów druku, marginesów, skalowania dopasowaniem albo procentem, powtarzanych tytułów, ręcznych podziałów i paginacji komórek całych albo scalonych zobacz przenośne plany wydruku
Zaawansowany mostek przechwytu
IXLSRenderCaptureSource w lxSemanticSnapshot to wewnętrzny interfejs koordynacji implementowany przez obsługiwane widoki skoroszytu tylko do odczytu; zwykłe aplikacje powinny wywoływać przeciążenia przechwytu oparte na właścicielu
TXLSClassicReadOnlyWorkbookView i TXLSXReadOnlyWorkbookView implementują IXLSRenderCaptureSource, łącznie z ośmioma metodami renderowania poniżej; te klasy koordynują przechwyt przez widoki tylko do odczytu, a adapter zarządza ich czasem życia, podczas gdy aplikacje zachowują interfejs właściciela skoroszytu i wywołują CaptureXLSPortableRenderSnapshot
Ich istniejąca metoda TryReadCell dostarcza migawkę zapisanej komórki przez widok tylko do odczytu; metody renderowania dodają odłączony wygląd i geometrię dla przechwytu przenośnego
| Składnik albo pomocnik | Cel |
|---|---|
ValidateRenderRange | Sprawdza granice prostokąta numerowane od 1 i ślady nieobsługiwanego wyglądu przed przechwytem |
ReadRenderStyle | Zwraca odłączone metadane TXLSSemanticCellStyle i flagę obecności rich textu dla komórki numerowanej od 1 |
IXLSRenderRichTextCaptureSource, ReadRenderRichText | Opcjonalne rozszerzenie widoku zwracające ograniczone odłączone TXLSRenderTextRuns; każdy TXLSRenderTextRun zawiera Text i efektywny semantyczny Style, korzystając z podanego stylu bazowego i dodatnich kwot przebiegów/bajtów bez materializowania komórek i bez modyfikacji puli stylów |
RenderRowHeightPoints, RenderColumnWidthPoints | Zwracają fizyczną geometrię, zwijając ukryte wymiary do zera |
IXLSRenderGeometryCaptureSource, SetRenderCaptureGeometry | Opcjonalne rozszerzenie widoku zachowujące jawnego providera dopiero po walidacji generacji i kalibracji; nieprawidłowe providery pozostawiają zachowanego providera widoku bez zmian |
ReadRenderMerge | Raportuje kompletny włączny prostokąt scalenia numerowany od 1 zawierający komórkę |
ResolveRenderColor | Rozwiązuje semantyczny wygląd motywu/indeksowany/RGB na przenośny kolor RGB, korzystając z podanego domyślnego tam, gdzie to obsługiwane |
RenderDate1904, RenderRightToLeft | Ujawniają system daty skoroszytu i kontekst kolejności czytania arkusza |
XLSRenderCaptureLiteral | Rozpoznaje obsługiwany podzbiór literałów Boolean, skończonej liczby albo prostego tekstu w cudzysłowach dla przechwytu bez ewaluacji |
XLSRenderCaptureIntersects | Testuje zakresy lokalne A1 rozdzielone białym znakiem względem prostokąta numerowanego od 1, odrzucając nierozwiązaną składnię zakresu |
XLSRenderCaptureCondition | Ewaluuje obsługiwany podzbiór warunków względem istniejącego skalara; kody operatorów porównania od 1 do 8 oznaczają między, nie-między, równe, nierówne, większe, mniejsze, większe-lub-równe i mniejsze-lub-równe |
XLSRenderCaptureApplyDxf | Aplikuje obsługiwany odłączony różnicowy wygląd z maską AppliedSlots, aby zachować formatowanie wyższego priorytetu |
TXLSDxfStyle._MarkRenderUnsupportedAppearance, TXLSDxfStyle._HasRenderUnsupportedAppearance | Metody koordynacji importu z prefiksem wewnętrznym rejestrują i badają wygląd, którego typowany model różnicowy nie potrafi bezpiecznie renderować; Assign zachowuje znacznik, a przechwyt odrzuca oznaczony pasujący styl |
Te pomocniki mostku potrafią podnieść EXLSSemanticSnapshot; publiczny adapter przechwytu tłumaczy ten wyjątek na EXLSPortableRender