Apribotas srautinio pobūdžio išdėstymas

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;
  • KeepWithNext perkelia pastraipą, kai ji sunaudotų paskutinę eilutę, kuri turėtų likti tolesniam turiniui
  • MinOrphanLines neleidžia puslapio apačioje palikti per mažai pradinių eilučių
  • MinWidowLines patraukia 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 ParaAutoAddPage yra false, perpildymas sustoja dabartiniame puslapyje ir sukuria ldkOverflow diagnostiką

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ą

  • ldkAutomaticPageBreak praneša apie įprastą tęsinį
  • ldkKeepWithNext, ldkOrphanControl ir ldkWidowControl nurodo apribojimą, patraukusį lūžį
  • ldkOverflow nurodo turinį, sustabdytą išjungus automatinį puslapiavimą
  • ldkImmediateFlush nurodo uždarytą puslapį, perkeltą į failu pagrįstą saugyklą
  • ldkPageLayer nurodo 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

Susijusios API