Ohraničené streamované rozvrhovanie

HotPDF dokáže merať opakovane použiteľné prvky bez kreslenia, rozdeliť odseky, riadky, kontajnery a vlastné prvky do vlastnených pokračovaní, skladať opakovane použiteľné vrstvy stránok, umiestniť dokončené stránky do úložiska zálohovaného súborom, aplikovať obmedzenia zalamovania stránok odsekov a vystaviť ohraničenú diagnostiku

Zmluva opakovane použiteľného merania a kreslenia

Odvodte od THPDFLayoutElement a implementujte Measure bez bočných efektov spolu s Draw; meranie prijíma iba THPDFLayoutConstraints, takže nemá kresliaciu plochu stránky ani dokumentu

MeasureLayoutElement validuje nezáporné rozmery a vypočíta Fits centrálne z rovnakých obmedzení šírky a výšky, ktoré sa používajú na umiestnenie

THPDFLayoutElementKind umožňuje ElementKind klasifikovať implementáciu ako lekParagraph, lekRow, lekContainer alebo lekCustom, zatiaľ čo ElementPath poskytuje stabilný diagnostický kontext

Vlastnenie rozdelenia a pretečenia

Rozdeliteľný prvok vracia THPDFLayoutSplit obsahujúci volajúcim vlastnené umiestnené prvky a prvky pretečenia; PlaceLayoutElement premeria umiestnenú hlavu, nakreslí ju iba vtedy, keď sa zmestí, a prenesie chvost do THPDFLayoutOverflow

THPDFLayoutOverflow zaznamená zdrojovú stránku a cestu prvku, predvolene vlastní pokračovanie a explicitne ho preniesite prostredníctvom DetachElement

Deklaratívne vrstvy stránok

Zaregistrujte spätné volania pomocou AddPageLayer pred BeginDoc výberom plkBackground, plkHeader, plkFooter alebo plkForeground

Každé spätné volanie sa spustí na stránke práve raz v poradí pozadia, hlavičky, obsahu dokumentu, päty a popredia a je izolované párom uloženia a obnovenia grafického stavu

RemovePageLayer odstráni jednu registráciu podľa identifikátora, zatiaľ čo ClearPageLayers resetuje opakovane použiteľnú kompozíciu pred začatím generovania dokumentu

THPDFPageLayerRegistration ukladá stabilný identifikátor, druh vrstvy a obsluhu object-method, ktorú interne používa usporiadaný registračný zoznam dokumentu

Okamžité vyprázdňovanie stránok

Nastavte ImmediateFlushLayout pred BeginDoc pre reporty, ktorých počet stránok nie je vopred známy

Pri zatvorení stránky sa jej konečný komprimovaný alebo nekomprimovaný obsahový stream presunie z pamäte do streamu vlastného dočasného súboru, pričom objekt PDF zostáva dostupný pre normálnu finalizáciu krížových referencií a zdrojov

ImmediateFlushedPageCount a ImmediateFlushedBytes hlásia množstvo umiestneného obsahu a dočasné súbory sa odstránia, keď sa uvoľnia streamy, ktoré ich vlastnia

Stránkovanie odsekov

ParagraphIndex := PDF.CreateParagraph(0, jtLeft, 36, 36, 36, 36);
PDF.ConfigureParagraphPagination(ParagraphIndex, True, 2, 2);
PDF.ConfigureParagraphDirection(ParagraphIndex, pdAuto);
PDF.BeginParagraph(ParagraphIndex);
PDF.CurrentParagraph.ShowUnicodeText(BodyText);
PDF.EndParagraph;

Diagnostika rozvrhovania

THPDFLayoutDiagnostic zaznamená THPDFLayoutDiagnosticKind, zdrojové a súvisiace indexy stránok, ovplyvnený obdĺžnik, počet riadkov a anglický dôvod pre každé zachované rozhodnutie

THPDFLayoutDiagnosticArray vracia GetLayoutDiagnostics, zatiaľ čo GetLayoutDiagnostic podporuje indexovaný prístup bez alokácie kópie

LayoutDiagnosticLimit obmedzuje zachované záznamy a LayoutDiagnosticDroppedCount hlási rozhodnutia zahozené po dosiahnutí tohto limitu

Smer odseku

THPDFParagraphDirection poskytuje pdAuto, pdLeftToRight a pdRightToLeft

DetectParagraphDirection aplikuje rozlíšenie podľa prvého silného znaku naprieč BMP a doplnkovými RTL skriptmi, takže neutrálne predpony a sekundárne smerné behy nezvolia nesprávny základný smer

Použite ConfigureParagraphDirection pre trvalé nastavenie odseku alebo vlastnosť THPDFPara.Direction pre aktívny odsek

Sémantika odsekov PDF/UA

Root := PDF.AddStructureElement('Document', nil);
Paragraph := PDF.BeginTaggedParagraph(Root, 'en-US', 'Accessible text');
PDF.CurrentPage.TextOut(36, 72, 0, WideString('Accessible text'));
PDF.EndTaggedParagraph;

PDF.BeginPaginationArtifact(pasHeader);
PDF.CurrentPage.TextOut(36, 20, 0, WideString('Running header'));
PDF.EndPaginationArtifact;

BeginTaggedParagraph emituje štandardnú sekvenciu označeného obsahu /P s prideleným MCID, zapojením stromu rodičovských stránok a voliteľnými hodnotami /Lang a /ActualText

THPDFPaginationArtifactSubtype poskytuje pasHeader, pasFooter, pasWatermark a pasPageNumber, emitované ako obsah /Artifact s /Type /Pagination a zodpovedajúcim štandardným podtypom

Súvisiace API