HTML5-innlasting av paginert media
THPDFHTMLImporter.RenderHTML5 konverterer tolerant HTML5-oppmerking og utskrifts-CSS til paginert PDF-innhold samtidig som den kompakte eldre RenderHTML-banen bevares
CSS-lengder og importørens Margin, BaseFontSize, ListIndent og BlockSpacing er i punkter, så begge rendererne produserer samme side uansett hva THotPDF.Resolution er satt til; din egen tegning før og etter importen bruker fortsatt 1/Resolution tomme
Deklarasjon
function RenderHTML5(
const HTML: WideString;
const AuthorStyleSheet: WideString = ''
): Boolean;
function HPDFRenderHTML5Document(
Doc: THotPDF;
const HTML: WideString;
const AuthorStyleSheet: WideString = '';
MarginPt: Single = 72;
const FontName: AnsiString = 'Arial';
FontSize: Single = 12
): Boolean;
Profilkontrakt
HTML5ProfileVersion returnerer 1, og HTML5ProfileMilestones rapporterer parser- og kaskade, paginert layout, tabeller og skjemaer samt avgrensede ressurser
- Tolerant DOM aksepterer vanlige utelatte slutt-tagger, bevarer tekstrekkefølge, hopper over inaktive dokumentregioner og håndhever
MaxDOMNodes - Kaskaden støtter type-, klasse-, ID-, likhetsattributt-, descendens- og direkte-barn-velgere, kildeorden, spesifisitet, inline-erklæringer,
!important,@media printog@page-margener - Paginert layout støtter blokkflyt, overskrifter, lister, rammer, bakgrunner, boksavstand, eksplisitte sideskift, tabeller, bilder og automatisk paginering ved overløp
- Tekstinndata, knapper, avkrysningsbokser, radioknapper, tekstområder og valg-kontroller rendres som statiske utseender eller native AcroForm-felt når
CreateAcroFormser aktivert
Målte avsnitt og retning
Avsnitt brytes ved hjelp av gjeldende fonts målte bredder, inkludert fontbytter, fete og kursiv runer, bokstavavstand, ordavstand, eksplisitte linjeskift og østasiatiske tegngrenser; justering og dekorasjon anvendes separat på hver resulterende linje
direction: ltr, direction: rtl og HTML-attributten dir velger avsnittretning; dir="auto" bruker det første sterke tegnets Unicode-retning
På Windows løses toveis skriptruner med Uniscribe og sorteres om på tvers av stilgrenser, mens den eksisterende PDF-tekstmotoren håndterer glyf-shaping innenfor hver run; dokumentets retning, visningspreferanser og lagret sideteksttilstand gjenopprettes etter linjen
Inline retningsoverstyringer, bdi og bdo bruker foreløpig avsnittsorden og produserer en hdkLayoutFallback-diagnostikk; unicode-bidi er utenfor denne profilen, og skript-shaping følger fortsatt dokumentets shaping-konfigurasjon
Avsnittfragmentering
widows og orphans er arvede positive heltall, begge med standardverdien 2; pagineringen bruker målte linjebokser i stedet for et estimert antall tegn
Importøren flytter et avsnitt eller justerer splittingen slik at ønsket minimum antall linjer gjenstår før og etter et sideskift; break-inside: avoid holder et avsnitt samlet når det passer på en fersk side
Når en side ikke kan innfri den etterspurte begrensningen, gjør renderingen fremgang ved å slakke begrensningen og registrere hdkPaginationConstraint; hvert sidefragment mottar sin egen bakgrunn og ramme
Valgfri orddeling
hyphens: none undertrykker vilkårlige brytninger, og standardverdien hyphens: manual bruker U+00AD eller ­; en synlig bindestrek sendes bare ut når den valgte brytningen brukes
hyphens: auto kaller i tillegg OnHyphenate med ordet og den arvede HTML lang-verdien; uten en callback beholder den manuelle brytninger og rapporterer en layout-fallback, fordi ingen språkordbok følger med
Brytningsposisjoner teller UTF-16-kodeenheter fra ordets start; ugyldige, utenfor gyldig område, surrogatsplittende og enkle kombinerende-tegn-splittende posisjoner ignoreres
THPDFHTMLHyphenationEvent = procedure(
Sender: TObject;
const WordText, Language: WideString;
var BreakPositions: TArray<Integer>
) of object;
Avgrensede flex- og grid-bokser
display: flex støtter row, row-reverse, column og column-reverse; rad-barn bruker eksplisitte bredder eller deler gjenværende bredde, og positive flex-grow-verdier vekter tilleggsområdet
Rader støtter justify-content start, end, center, space-between, space-around og space-evenly, pluss start-, end-, center- og stretch-tverraksejustering; kolonneflyt støtter naturlig vertikal layout og sender en diagnostikk for ustøttet fasthøyde-fordeling eller tverraksejustering
display: grid støtter positive fastlengde- og fr-kolonnespor, inkludert avgrenset repeat(n, tracks) med opptil 64 kolonner; celler plasseres i kildeorden, fyller én rad om gangen
grid-column: span N og grid-column-end: span N lar et barn okkupere sammenhengende spor og mellomliggende mellomrom; et element som ikke passer i gjeldende rad flyttes til neste rad, og spenn større enn sporantallet gir en layout-fallback
flex-wrap: wrap starter en ny linje når neste elements eksplisitte bredde og mellomrom ikke passer; hver linje anvender uavhengig flex-grow og justify-content, mens row-reverse og RTL reverserer posisjoner innenfor hver linje uten å flytte elementer mellom linjer
gap godtar én eller to lengder, med uavhengige row-gap- og column-gap-overstyringer; parallelle rader forblir på én side og sjekkes før maling
Parallelle barn støtter tekstblokker med inline-styling, rekursivt nestede vanlige beholderbokser med padding, rammer og bakgrunner, nestede flex- og grid-containere, bilder, og statiske eller native skjemakontroller
Bilder bruker callback-leverte eller data-URI-byte, beholder sitt iboende sideforhold når ingen høyde er angitt, og dekodes én gang per DOM-node; preflight og fallback gjenbruker det samme cachete bildet uten å bruke en ny ressursforespørsel
Alle underbokser måles før noen parallelle rad males, så ustøttet eller overdimensjonert innhold faller tilbake til vertikal sideflyt uten å gjenta tidligere malte rader; nestet planlegging begrenses til 64 nivåer og bruker det eksisterende layoutoperasjonsbudsjettet
Ombrytende barn uten eksplisitt bredde opptar én komplett linje; tabeller og lister inne i parallelle barn, flex basis og shrink, wrap-reverse, iboende sporstørrelse, grid-radspor og radspenn, og eksplisitt grid-plassering forblir utenfor denne profilen og produserer observerbar diagnostikk
Diagnostikk for ustøttet CSS
Diagnostics eksponerer poster med Kind, Subject, Value og MessageText; OnDiagnostic mottar samme informasjon under rendering
Ukjente egenskaper, ustøttede verdier, ustøttede velgere og ustøttede at-regler ignoreres med en diagnostikk, inkludert deklarasjoner i ellers ubrukte stilarkregler; pseudo-velgere hoppes over i stedet for å behandles som vanlige typevelgere
StrictCSS, deaktivert som standard, utløser EHPDFHTMLUnsupportedCSS ved en diagnostikk; tidligere innhold kan allerede være sendt ut, så kallere som krever alt-eller-ingenting-import bør bruke et separat dokument
MaxDiagnostics har standardverdien 256 og begrenser beholdte poster; DiagnosticCount og callback-levering forblir observerbare etter at lagringsgrensen er nådd, og en ikke-posytiv grense deaktiverer postlagring
Avgrensede ressurser
Eksterne stilark, bilder og @font-face-fonter deaktiveres med mindre OnResource leverer deres bytes, så HTML-innlasting åpner aldri en fil- eller nettverkstilkobling implisitt
@font-face støtter én url(...)-kilde, valgfri format('truetype') eller format('opentype'), et familienalias, normal eller kursiv stil, og normal, bold, 400 eller 700 vekt; font-display godtar standardpolicyene fordi frakoblet innlasting henter ressurser synkront
Fonter må være innbyggbare TrueType- eller OpenType sfnt-ressurser med et ASCII Windows-familienavn på høyst 31 tegn; WOFF, fontsamlinger, local(...), variable deskriptorer og kildelister produserer diagnostikk
Godtatte fonter registreres privat i prosessminnet på Windows og forblir eid av dokumentet til det ødelegges, så å frigjøre importøren før EndDoc ugyldiggjør ikke utsatt fontinnebygging
data:-ressurser og tilbakeringingsresultater deler grensene for MaxResources, MaxResourceBytes og MaxTotalResourceBytes
MaxDecodedImageBytes har standardverdien 128 MiB og begrenser uavhengig den dekodete bildecachen til fire byte per piksel; BMP- og PNG-dimensjoner sjekkes før dekoding, og hvert godtatt bilde sjekkes før det beholdes
MaxDOMNodes, MaxCSSRules og MaxLayoutOperations begrenser parsing, kaskade-konstruksjon og layout-arbeid uavhengig
THPDFHTMLResourceEvent = procedure(
Sender: TObject;
const URI: WideString;
ResourceKind: THPDFHTMLResourceKind;
var Data: TBytes;
var ContentType: string;
var Handled: Boolean
) of object;
Statistikk
THPDFHTMLImportStatistics rapporterer profilversjonen, analyserte noder, CSS-regler, layout-operasjoner, sideskift, tabeller, skjemakontroller, ressursforespørsler, aksepterte og avviste innlastinger, aksepterte ressurs-bytes, målte tekstlinjer, orddelte linjer, diagnostikk, flex-containere og grid-containere
OnLineLayout mottar linjens nullbaserte side- og avsnittlinjeindekser, origo, målt bredde og høyde, logisk tekst, retning og orddelingsflagg etter at den faktiske PDF-teksten er sendt ut
Hvert RenderHTML5-kall tilbakestiller statistikk-oppføringen, og budsjettbrudd reiser EHPDFHTMLImportBudget
Eksempel
Importer := THPDFHTMLImporter.Create(Doc);
try
Importer.CreateAcroForms := True;
Importer.MaxResources := 16;
Importer.RenderHTML5(
'<style>@page { margin: 36pt } ' +
'table { width: 100% }</style>' +
'<h1>Invoice</h1>' +
'<table><tr><td>Total</td><td>42</td></tr></table>' +
'<input name="approved" type="checkbox">'
);
finally
Importer.Free;
end;
Se også: THPDFPage.TextOutHTML, Deklarativ layout-DOM, Støtte for AcroForm