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;
KeepWithNextposunie odsek, keď by spotreboval posledný riadok, ktorý by mal zostať pre nasledujúci obsahMinOrphanLineszabraňuje, aby na dne stránky zostalo príliš málo úvodných riadkovMinWidowLinesposunie zlom, keď by na ďalšej stránke zostalo príliš málo záverečných riadkov- Automatické pokračovanie zachováva šírku zdrojovej stránky, výšku, písmo, okraje a nastavenia odseku
- Ak je
ParaAutoAddPagefalse, pretečenie sa zastaví na aktuálnej stránke a vytvorí diagnostikuldkOverflow
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
ldkAutomaticPageBreakhlási bežné pokračovanieldkKeepWithNext,ldkOrphanControlaldkWidowControlidentifikujú obmedzenie, ktoré posunulo zlomldkOverflowidentifikuje obsah zastavený zakázaným automatickým stránkovanímldkImmediateFlushidentifikuje zatvorenú stránku presunutú do úložiska zálohovaného súboromldkPageLayeridentifikuje dokončený prechod deklaratívnej vrstvy stránky
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