HotPDF gali išmatuoti pakartotinai naudojamus elementus nepiešdamas, skaidyti pastraipų, eilučių, konteinerių ir pasirinktinių elementų į nuosavybės teisę turinčias tęsinius, kurti pakartotinai naudojamus puslapių sluoksnius, laikyti užbaigtus puslapius failu pagrįstoje saugykloje, taikyti pastraipų puslapių lūžių apribojimus ir pateikti ribotą diagnostiką
Pakartotinai naudojamo matavimo ir piešimo kontraktas
Paveldėkite iš THPDFLayoutElement ir realizuokite be šalutinio poveikio esančias Measure ir Draw procedūras; matavimas gauna tik THPDFLayoutConstraints, todėl neturi jokio puslapio ar dokumento piešimo paviršiaus
MeasureLayoutElement patikrina neigiamas dimensijas ir apskaičiuoja Fits centre pagal tokio pat pločio ir aukščio apribojimus, kokie naudojami išdėstymui
THPDFLayoutElementKind leidžia ElementKind klasifikuoti realizaciją kaip lekParagraph, lekRow, lekContainer arba lekCustom, o ElementPath pateikia stabilų diagnostikos kontekstą
Skaidymo ir perpildymo nuosavybė
Skaldomas elementas grąžina THPDFLayoutSplit, kuriame yra iškvietėjo nuosavybės teisę turintys išdėstyti ir perpildyti elementai; PlaceLayoutElement iš naujo išmato išdėstytą antraštę, nupiešia ją tik tada, kai telpa, ir perduoda uodegą į THPDFLayoutOverflow
THPDFLayoutOverflow įrašo šaltinio puslapį ir elemento kelią, pagal numatymą valdo tęsinį ir perduoda jį tiksliai per DetachElement
Deklaratyvūs puslapių sluoksniai
Registruokite atgalinius iškvietimus su AddPageLayer prieš BeginDoc, pasirinkdami plkBackground, plkHeader, plkFooter arba plkForeground
Kiekvienas atgalinis iškvietimas vykdomas tiksliai vieną kartą kiekviename puslapyje foninės, antraštės, dokumento turinio, poraštės ir priekinio plano tvarka ir izoliuojamas grafinės būsenos išsaugojimo bei atstatymo pora
RemovePageLayer pašalina vieną registraciją pagal identifikatorių, o ClearPageLayers atstato pakartotinai naudojamą kompoziciją prieš pradedant dokumento generavimą
THPDFPageLayerRegistration saugo stabilų identifikatorių, sluoksnio tipą ir objekto-metodo doroklę, kurią vidinė dokumento surikiuota registracijos sąrašas naudoja
Tiesioginis puslapių išvalymas
Prieš BeginDoc nustatykite ImmediateFlushLayout ataskaitoms, kurių puslapių skaičius iš anksto nežinomas
Uždarius puslapį, galutinį suspaustą arba nesuspaustą turinio srautą iš atminties perkelia nuosavybės teisę turintis laikinojo failo srautas, o PDF objektas išlieka prieinamas įprastam kryžminių nuorodų ir išteklių užbaigimui
ImmediateFlushedPageCount ir ImmediateFlushedBytes praneša išdėstyto turinio kiekį, o laikinieji failai pašalinami atlaisvinus juos valdančius srautus
Pastraipų puslapiavimas
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;
KeepWithNextperkelia pastraipą, kai ji sunaudotų paskutinę eilutę, kuri turėtų likti tolesniam turiniuiMinOrphanLinesneleidžia puslapio apačioje palikti per mažai pradinių eilučiųMinWidowLinespatraukia lūžį, kai kitame puslapyje liktų per mažai pabaigos eilučių- Automatinis tęsinys išlaiko šaltinio puslapio plotį, aukštį, šriftą, paraštes ir pastraipų parametrus
- Kai
ParaAutoAddPageyra false, perpildymas sustoja dabartiniame puslapyje ir sukurialdkOverflowdiagnostiką
Išdėstymo diagnostika
THPDFLayoutDiagnostic įrašo THPDFLayoutDiagnosticKind, šaltinio ir susijusio puslapio indeksus, paveiktą stačiakampį, eilučių skaičių ir anglišką priežastį kiekvienam išlaikytam sprendimui
THPDFLayoutDiagnosticArray grąžinamas su GetLayoutDiagnostics, o GetLayoutDiagnostic palaiko indeksuotą prieigą nekopijuodamas
LayoutDiagnosticLimit riboja išlaikomus įrašus, o LayoutDiagnosticDroppedCount praneša apie sprendimus, atmestus viršijus šią ribą
ldkAutomaticPageBreakpraneša apie įprastą tęsinįldkKeepWithNext,ldkOrphanControlirldkWidowControlnurodo apribojimą, patraukusį lūžįldkOverflownurodo turinį, sustabdytą išjungus automatinį puslapiavimąldkImmediateFlushnurodo uždarytą puslapį, perkeltą į failu pagrįstą saugykląldkPageLayernurodo užbaigtą deklaratyvaus puslapio sluoksnio eigą
Pastraipos kryptis
THPDFParagraphDirection pateikia pdAuto, pdLeftToRight ir pdRightToLeft
DetectParagraphDirection taiko pirmo stipraus simbolio skiriamąją gebą BMP ir papildomo plokštumos RTL scenarijams, todėl neutralūs priešdėliai ir antrinės krypties eilutės nepasirenka klaidingos bazinės krypties
Naudokite ConfigureParagraphDirection nuolatiniam pastraipos nustatymui arba THPDFPara.Direction savybę aktyviai pastraipai
PDF/UA pastraipų semantika
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 išleidžia standartinę /P pažymėto turinio seką su priskirtu MCID, puslapio tėvinio medžio sujungimu ir pasirinkinėmis /Lang bei /ActualText reikšmėmis
THPDFPaginationArtifactSubtype pateikia pasHeader, pasFooter, pasWatermark ir pasPageNumber, išleidžiamus kaip /Artifact turinį su /Type /Pagination ir atitinkamu standartiniu potipiu