Native Linux Cairo-renderer
HPDFHeadlessCairoDevice renderer en indlæst PDF-side til en RGB-PNG med Cairo-billedoverflader og FreeType uden en displayserver eller PDF-reader
Lever en seriell lånt view fra THPDFHeadlessDocument.GetRenderAccess(PageIndex) og hold det dokument indlæst og uændret, indtil renderingen returnerer
Document := THPDFHeadlessDocument.Create;
try
Document.LoadFromFile('input.pdf');
Options := THPDFHeadlessRenderOptions.Default;
Info := HPDFRenderHeadlessPagePNGFile(
Document.GetRenderAccess(0), 'page.png', Options);
finally
Document.Free;
end;
Runtime-afhængigheder
Native Linux bruger libcairo.so.2, libfreetype.so.6 og standardfont-providerens Fontconfig-afhængighed; installér egnede fonts til Helvetica-, Times- og Courier-substitution
HOTPDF_CAIRO_LIBRARY og HOTPDF_FREETYPE_LIBRARY kan vælge eksplicitte kompatible biblioteksstier før den første rendering; succesfulde moduler forbliver indlæst, fordi native font-caches kan tilbageholde destruktions-callbacks
Hosten skal holde sin HotPDF-eksekverbare, DLL- eller pakkekode indlæst, mens de native caches kan tilbageholde HotPDF font-destruktions-callbacks; at aflæsse et hostmodul uafhængigt af cache-levetiden er uden for denne profil
Windows bruger kompatible libcairo-2.dll og libfreetype-6.dll gennem samme bro; runtime-binaries og deres licensering leveres af applikationen
ICCBased-farver indlæser derudover liblcms2.so.2; JPEG bruger libturbojpeg.so.0, og JPEG 2000 bruger en OpenJPEG 2.5-kompatibel libopenjp2.so.7; disse afhængigheder indlæses kun for tilsvarende inputs
HOTPDF_LCMS_LIBRARY, HOTPDF_TURBOJPEG_LIBRARY og HOTPDF_OPENJPEG_LIBRARY tilsidesætter disse stier; Windows-standarder er lcms2.dll, turbojpeg.dll og openjp2.dll
Renderingsprofil
Understøttet indhold inkluderer path-opbygning og -maling, nonzero- og even-odd-fyldregler, clipping, nestet graphics state, CTM-transformer, linjestil, DeviceGray/RGB/CMYK-farver, normal alpha og gentagne Form XObjects med egne ressourcer, Matrix og BBox
Linjebredder må være nul: PDF hairlines anmodet af 0 w eller ExtGState LW=0 bruger én-pixels device space-streg; negative bredder afvises
ExtGState D og content-stream d-operatoren deler afgrænset dash-validering: solide tomme mønstre, odd-længde-repetition, nul-længde-indgange, fraktionelle længder og signede faser understøttes
Et dash-mønster tillader højst 256 finitære ikke-negative længder op til 1e9 med mindst én positiv længde, når ikke-tomt, og en finitær fase med absolut værdi højst 1e9; hvert element forbruger operationsarbejde, og midlertidigt lager deltager i working byte-admission
Operand-arrays accepterer PDF-kommentarer, inklusive numeriske dash-arrays og TJ-tekstarrays; misdannede leksikalske værdier og manglende afsluttende klammer beholder af den delte scanner og afvises af rendereren i stedet for stille at forsvinde
Vandret tekst bruger den delte glyph-fortolker til tekstmatricer, eksplicitte PDF-bredder, kanoniske Helvetica/Times/Courier-advances, tegn- og ordafstand, vandret skala og TJ-justeringer
Indlejrede understøttede fontprogrammer bruger FreeType med opløste glyph-ID'er; Unicode ToUnicode-mappings forbliver tilgængelige gennem dokumentets tekst-API, mens standardfont raster-former afhænger af installerede substitutter
Komposittekst understøtter Identity-H, Identity-V, eksplicitte indlejrede encoding CMap-streams samt indbyggede UniJIS-, UniGB-, UniCNS- og UniKS UCS2/UTF16 vandrette og lodrette mappings; separat installerede CMap-ressourcer er ikke krævet
Lodret glyph-maling honorerer default og eksplicitte DW2/W2-placeringsvektorer, text rise, vandret skala, tekst- og grafikmatricer samt TJ-forskydning; UTF-16-mappings accepterer supplementary tegnkoder
Alle otte tekst rendering modes understøttes, inklusive lodrette fill/stroke/usynlige outlines akkumuleret i clip ved ET; indlejrede encoding CMap-streams beholder deres WMode og ikke-identitets CID-mappings
Transparente kombinerede fill-and-stroke-operationer bruger objekt knockout-komposition, så overlappende fyld ikke lækker gennem stregen; Type3 glyph-procedurer afvikler egne afgrænsede ressourcer og fontmatricer
Billeder accepterer 1/2/4/8/16-bit samples og Decode-arrays, stencil, eksplicitte, color-key og soft masks, forskelligt store masker og Matte-genopretning; manglende Interpolate bruger nearest-neighbor-sampling, og true vælger bilineær sampling
JPX-codestreams accepterer signede eller unsignede kildekomponenter op til 26 bits, inklusive blandet præcision, subsampling og eksplicit opacitet, og normaliserer til afgrænsede 8- eller 16-bit samples; billed-dictionaryens BitsPerComponent og ikke-stencil Decode-indgange ignoreres for JPX-billeder som krævet af PDF billedprofilen
Indekserede paletter og validerede ICCBased profil-til-sRGB-transformer understøttes for billeder og path-farver; DeviceCMYK uden profil beholder den simple enhedskonvertering
ICCBased-transformer accepterer Gray-, RGB-, CMYK-, Lab- og XYZ-profilsignaturer og validerer strengt det deklarerede komponentantal og komponentintervaller
Lab-profil-operander bruger fysiske L a b-koordinater med standardintervaller [0 100 -128 127 -128 127]; XYZ-operander bruger fysiske X Y Z-koordinater med et default unsigned 1.15-interval [0 65535/32768] pr. komponent
XYZ-profil-input er en native kompatibilitetsudvidelse og indebærer ikke arkiverings-PDF-konformitet; Lab- og XYZ-kildeprofiler vælger ikke et understøttet transparency blending-rum
En ICC-streams Range kræver to finitære ordnede værdier pr. komponent og afgrænser farveoperander; rå billed Decode-standarder og Indexed-oplagsværdier bruger disse komponentintervaller
CalGray, CalRGB og Lab understøtter paths, tekst, billeder og Indexed-palette-baser; parametre valideres strengt, CalRGB Matrix-indgange følger PDF-kolonneorden, og Lab-komponenter og billed Decode-standarder bruger de deklarerede intervaller
CIE-farver bruger Bradford kromatisk adaptation og relativ sRGB-output; BlackPoint-metadata valideres, mens yderligere black point-kompensation og rendering intent-tilstandspolitikker forbliver separate udvidelser
Separation- og DeviceN-sammensatte farver beholder én til toogtredive tint-komponenter for paths, tekst, Indexed-baser og pakkede billeder; enheds- eller CIE-alternative farver bruger afgrænsede sampled, eksponentielle, stitching- eller calculator-tint-funktioner
ICCBased Lab/XYZ og CalGray/CalRGB/Lab alternative farvekilder beholder deres fysiske koordinater gennem tint-transformen inden konvertering til et understøttet transparency-gruppe
Multidimensionelle sampled tint-funktioner understøtter lineær og kubisk interpolation, Domain, Encode, Decode, output Range og pakkede sample-dybder op til 32 bits; kubisk evaluering udvider den eksisterende scalar fire-knot-konvention med tensorprodukter med lineær fallback for korte dimensioner samt afgrænset arbejde og cancellation
Se Native sampled farvefunktioner for interpolationskonventioner og separate formel- og reader-evidence
Separation None og DeviceN-rum med kun None-colorants bidrager hverken med farve eller knockout-form; blandede None-komponenter når stadig den alternative tint-transform
Separation All anvender sin tint på hver tilgængelig output-colorant med neutral RGB-sideoutput og bevarer hver proceskomponent inden for CMYK-grupper
CMYK-grupper modtager originale fire-komponent alternative tint-værdier inden blending; spot separation-plader, NChannel proces/colorant-valg og mixing-hint-simulering forbliver separate udvidelser
Den terminale billed-callback bevarer dokumentdekryptering og foregående streamfiltre inden native JPEG-, JPEG 2000-, CCITT- eller JBIG2-dekodning; JBIG2 understøtter aritmetisk og Huffman tekst, MMR og delte globale dictionaries
JPEG 2000 understøtter subsamplede og signede komponenter, udledt farve- og sample-deklaration, indlejrede ICC-profiler, eksplicitte farverum-overrides samt separat eller tilknyttet opacitet gennem SMaskInData; dets komponentværdier normaliseres til otte eller seksten bits, og dets billed Decode-array ignoreres
Indlejrede eller eksplicitte Lab/XYZ ICC-profiler bruger fysiske komponentintervaller; tilknyttet opacitet fjernes fra normaliserede gemte samples inden anvendelse af den fysiske koordinatafbildning og bevarer Lab-offsetkanaler
Graphics state SMask understøtter Alpha- og Luminosity-grupper, baggrundsfarver, Form-matricer, gemt-tilstand-gendannelse samt sampled, eksponentielle, stitching- og afgrænsede calculator transfer-funktioner; et billeds egen soft mask tilsidesætter graphics state soft mask
Alle seksten standard PDF blend modes understøttes; Form- og sidegrupper understøtter isoleret og ikke-isoleret komposition, objekt knockout samt DeviceGray-, DeviceRGB-, DeviceCMYK-, CalGray-, CalRGB- eller én-, tre- og fire-komponent ICCBased blending-rum
Kalibrerede grupper beholder native komponentværdier indtil en gruppegrænse og accepterer enheds- eller Lab-kildefarver gennem inverse kalibrerede transformer; Lab selv er ikke et gyldigt blending-rum
Kalibrerede Luminosity-masker beholder deres gruppekoordinater og evaluerer CIE XYZ-Y inklusive gruppeopacitet og baggrundsfarver, før transfer-funktionen anvendes
Knockout-komposition holder objektets geometriske form adskilt fra soft mask-opacitet; stencil-huller bevarer foregående objekter, mens en maskeret path erstatter dem gennem hele sin malede geometri
Nestede knockout-grupper beholder foreningen af deres børns geometriske former, inklusive nul-opacitets-objekter; ikke-isoleret børnegrupper bruger den omsluttende knockout-gruppes startbaggrund
CMYK-grupper bevarer komplementære CMY- og sorte komponenter i separate afgrænsede billedplaner og konverterer det kombinerede resultat ved gruppegrænser; ikke-separable blend modes beholder eller erstatter sort efter den valgte tilstand
Ikke-isolerede grupper rendererer et ekstra afgrænset opacitetsgennemløb, fjerner startbaggrunds-bidraget og anvender indkommende gruppe-alpha og blend mode én gang; sidetransparensgrupper bruger en isoleret overflade inden komposition på sidebaggrunden
En ikke-isoleret Form nedarver sit omsluttende blending-rum; en eksplicit gruppe CS-indgang skifter ikke startbaggrunden til et andet rum
Eksisterende normale annotation-appearances tilpasses fra deres transformerede BBox til Rect; RenderAnnotations=false udelader appearances i begge anvendelser
Usage er som standard hruView, som springer Hidden- og NoView-annotationer over samt ukendte annotationstyper med Invisible sat; ISO 32000 standard annotationstyper, inklusive PDF 2.0 RichMedia og Projection, med understøttede normale appearances forbliver synlige, når kun Invisible er sat
RichMedia- og Projection-accept dækker eksisterende statiske normale appearances med gyldige medieaktiver eller en tilknyttet default 3D-view; medieafspilning og interaktiv 3D-aktivering er uden for denne raster-sti
hruPrint maler kun annotationer med Print sat og Hidden ryddet; Invisible undertrykker ukendte annotationstyper i begge anvendelser, NoView undertrykker ikke printing, og NoZoom ændrer ikke printet appearance-størrelse
Når en normal-appearance mangler, renderes understøttet annotation-metadata gennem en midlertidig appearance; se native annotation fallback for geometri, Unicode FreeText, statiske ikoner og resterende grænser
Til view-output fjerner annotations-NoZoom render-skalaen fra appearance-størrelse, mens UserUnit bevares; NoRotate holder den tilpassede appearance opretstående gennem siderotation i begge anvendelser, og begge bevarer det transformerede øvre-venstre Rect-anker og sideclippet
Tekst-annotationer med eksisterende normale appearances opfører sig som NoZoom og NoRotate i view-output uanset eksplicitte flag; print-output beholder deres NoRotate-adfærd, mens NoZoom ignoreres
Usage styrer statisk raster-synlighed og annotationsgeometri; kun-interaktionsflag skaber ikke hover- eller redigeringsadfærd, og den eksisterende extraction-tilladelses-callback forbliver krævet uden at give printtilladelse
Optional content i statisk output
Rendering forbruger katalogens default OCProperties/D-konfiguration, initialiserer gruppestates fra BaseState, anvender ON- og OFF-overrides og bruger matchende Intent-værdier ved synlighedsvurdering
Medlemskabs-dictionaries understøtter AnyOn, AllOn, AnyOff og AllOff; rekursive VE-udtryk understøtter And, Or og enkelt-operand Not med VE med forrang over den enklere politik
Null-, utilgængelige og forældede gruppe-referencer har ingen medlemskabseffekt; grupper uden for konfigurationens intents styrer ikke synlighed, og et medlemskab eller udtryk uden relevante grupper efterlader indhold synligt
Nestet /OC markeret indhold, billed- og Form XObjects samt annotationer respekterer den resulterende tilstand; skjulte markerede sektioner opdaterer stadig farver, matricer, clipping og tekstposition, mens skjulte hele XObjects og annotationer kan springes over
Almindelige marked-content property-dictionaries forbliver brugbare, inklusive nestede inline-værdier; content-arrays bevarer marked-content-tilstand på tværs af deres komponentstreams, og børnstreams beholder egen marked-content-nesting
Selvstændig endelig form-rasterisering bruger default-konfigurationen i både view- og print-tilstande uden automatisk at anvende interaktive AS usage-anbefalinger som specificeret i ISO 32000-1:2008 afsnit 8.11.4.5; eksplicit ViewerState aktiverer View-, Print-, Export-, Zoom-, Language- og User-anbefalinger med persistent manuel markering og midlertidig eventtilstand
Manglende optional content-properties eller et nil lånt katalog efterlader optional content-strukturer uden synlighedseffekt; misdannede live medlemskaber, udtrykscyklusser samt konfigurerede arbejds-, hukommelses- eller rekursionsgrænser fejler inden PNG-publicering
Affîne appearance-matricer og ikke-nul BBox-originer beholder deres normale tilpasning under disse flag; en ekstrem lille render-skala kan stadig gøre Cairos startsidematrix numerisk ikke-invertibel
Den renderede side bruger MediaBox/CropBox-skæringen, nedarvede sidebokse og kvartdrejet Rotate samt sidens UserUnit; skala 1 giver én pixel pr. effektiv sidepoint med overfladedimensioner rundet opad
sh-operatoren maler funktionsbaserede, axiale og radiale shadings (ShadingTypes 1–3) med to-input-domæner, shading-matricer, radial-cirkel-valg, Extend-endpoints, BBox og eksisterende path-clips
Understøttede farvefunktioner og scalar funktions-arrays konverterer gennem enheds-, kalibrerede, ICC Lab/XYZ- og Separation/DeviceN-kildefarver; aktuell fyld-opacitet, blend modes, graphics state soft masks og transparency-gruppe knockout gælder den resulterende shading
Aktuel path og farve bevares; shading Background ignoreres af sh, og AntiAlias er et enhedshint med pixel-center farvesampling
Ikke-understøttede ExtGState-indgange og ikke-understøttede indholdsoperatorer forbliver uden for denne profil
Trekant-mesh shadings
ShadingTypes 4 og 5 maler free-form og lattice Gouraud trekant-meshes med kantgenbrug, vilkårlig lattice-geometri, byte-justerede vertex-records, koordinatpræcision op til 32 bits og komponentpræcision op til 16 bits
Vertex-komponenter interpoleres ved device pixel-centre inden farvekonvertering; en valgfri ét-input funktion eller komponentfunktions-array evaluerer den interpolerede parameter, inklusive kalibrerede, ICC og specielle farverum
Indekserede kilder runder interpolerede indeks til nærmeste palette-indgang; hexadecimale opslagsstrenge dekodes én gang med whitespace, blandede case-cifre og ulige sidste nibble-padding, mens literal opslagsstrenge beholder deres dekodede bytes
Aktuelle transformer, clipping, BBox, fyld-opacitet, blend mode, soft masks, ikke-malende colorants og gruppe knockout gælder det fuldførte mesh; tilbageholdte stream-bytes, den midlertidige sideoverflade og to lattice-rækker deltager i working memory-admission
Vertex-parsing, trekant-rasterisering og funktioner deler samlede operationer og cancellation-polling; misdannede eller afklippede records og ufuldstændige lattice-rækker fejler inden output-publicering
Fokuseret accept tjekker lukkede barycentriske ligninger og separate MuPDF- og Poppler-outputs; bevisfiler beholder reader-forskelle for vertex-padding, ubrugte flagbits og mesh-gennemsigtighed og bruger eksplicitte alternative reader-ligninger for ikke-malende farver og normaliserede Indexed-værdier
Coons- og tensor-patch meshes
ShadingTypes 6 og 7 maler kubiske Coons-grænser og tensor-kontrolnet med foregående kant-genbrug, byte-justerede records, low-two-bit flag-semantik og samme koordinat- og komponentpræcisioner som trekant-meshes
Hjørnekomponenter interpoleres bilineært i patch-parametre før valgfrie funktioner og farvekonvertering; Coons-grænser hæves til et ækvivalent bikubisk Bernstein-net, hvis andenafledte-grænser vælger subdivisioner med højst 0,125 output-pixel geometrifejl
Polynomiel inversion forfiner pixelparametre; foldet dækning vælger største v-parameter og derefter største u-parameter ved ens v, mens senere patches erstatter tidligere farver, før den fuldførte shading modtager objekttransparens
Den delte mesh-kompositor anvender clipping, BBox, shading-mønstre, ikke-malende colorants, opacitet, blending, soft masks og gruppe knockout; to subdivisions-rækker samt per-pixel parameter- og orden-arrays deltager i aktiv working byte-admission
Kontrolpunkt-parsing, subdivision, rasterisering og farvefunktioner deler operationsgrænser og cancellation; fokuseret accept bruger uafhængige Coons- og tensor-ligninger og kubiske rødder for foldede patches med reader-fejl registreret separat fra almindelig RGB ligningsside-verifikation
Nedarvet teksttilstand
Form-, Type3- og mønster-børnstreams nedarver den gældende font-objekt, fontstørrelse, tegnafstand, ordafstand, vandret skala, leading, rendering mode og rise fra deres start graphics state; en børnressource med samme fontnavn erstatter ikke en nedarvet font, før en lokal Tf vælger den
Gemt graphics state gendanner tekstparametre, og TD- og dobbelte citat-operatorer beholder deres leading- og afstandsendringer for efterfølgende børnstreams; hvert barn starter med egne tekstmatricer
Uafhængige annotation-appearances starter fra default tekstparametre uden at beholde sidste teksttilstand fra sideindhold
Type3-tekst i rendering mode 3 bidrager ikke med synlig glyph-grafik; fokuseret Type3 nestet-tekst-bevis beholder MuPDFs default-parameter-afvigelse separat fra de nedarvet-tilstand-ligninger, mens Poppler følger de nedarvede parametre i de fixtures
Tiling- og shading-mønstre
Mønster-farverum understøtter farvede og ufarvede tiling-mønstre, TilingType 1–3, shading-mønstre, PatternMatrix, celle-BBox, positiv eller negativ afstand, mønster-valg, gemt-tilstand-gendannelse samt fill- eller stroke-maling
Ufarvede mønstre henter komponenter fra et understøttet base-farverum og kan male billed-stencils; eksplicitte farveændringer, farvede billeder og direkte shadings inde i en ufarvet definition er ugyldigt PDF-indhold og afvises også gennem nestede Forms og Type3-procedurer
Valgte mønstre beholder standard-koordinatrummet for den content-stream, der opløste deres definition; senere cm-operationer og et nedarvet mønster brugt inde i en Form erstatter ikke den origin
Definitioner starter med parentens initiale understøttede graphics state og default transparensparametre; tiling-definitioner danner en ikke-isoleret ikke-knockout-gruppe, mens shading-definitioner bruger objekt knockout
Transparente og overlappende tiling-celler evalueres mod den aktuelle baggrund; indkommende objekt-alpha og blend mode anvendes én gang ved maling af det fuldførte mønster, inklusive nestede mønstre, tekst, streger og billedmasker
Shading-mønster ExtGState udvider understøttede shading-parametre, inklusive opacitet og soft masks; Background males før shadingen, BBox clipper begge bidrag, og ikke-malende None-farver bidrager hverken med farve eller form
Mønster-evaluering tillader to sideoverflader og dekodet celleindhold, begrænser synlig celle-enumeration til det aktuelle clip og poller cancellation under cellerendering og fjernelse af baggrundsbidraget
Fokuserede fixtures sammenligner lukkede koordinat-, farve- og kompositions ligninger med native pixels og uafhængig reader-output; bevisfiler beholder reader-forskelle for nedarvede Form mønster-originer, shading-mønster ExtGState-opacitet og ikke-malende None-farver med separate almindelige vektor-ligningssider for de tilfælde
CID-keyed CFF-fonte
Indlejrede CIDFontType0-fonte opløser rigtige CFF-CID'er i selvstændige og OpenType-containere, inklusive ikke-identitets-mappings, CID 65535, indlejrede Encoding CMaps, lodrette W2-originer, transformerede outlines og tekstclipping
Selvstændige CFF-faces indlæses efter CID, og SFNT-wrappede faces indlæses efter kompakt glyph-indeks; broen bruger det korrekte FreeType face-layout til Linux LP64 og Windows LLP64
En ikke-mapset tegnkode eller fraværende anmodet CID konsulterer notdefchar og notdefrange for den originale kode og bruger derefter den obligatoriske CID 0-glyph, hvis erstatningen mangler; intervaller har konstante CID-mål, og tegnindgange har forrang, mens tilstedeværende glyphs beholder deres anmodede CID
Fokuseret accept bruger deklarerede polygon-konturer og origin-ligninger for 28 gyldige kilder med separate MuPDF- og Poppler-sammenligninger og almindelige RGB-ligningssider
Bevisfiler beholder reader-forskelle for CID-keyed OpenType glyph-valg og udeladte notdef-substitutioner; udeladelses-alternativet måles separat og erstatter ikke den krævede native kilde-ligning
Grænser og cancellation
Eksakte indbyggede Type0-encodings dækker alle 200 bundtede encoding-navne: Identity-H og Identity-V, seksten UCS2- og UTF16-mappings samt 182 yderligere legacy- og Unicode-maps med fladtrykte lodrette tegn-overrides
Blandede én- til fire-byte operander bruger per-byte codespace-grænser og longest-prefix ugyldig kode-genopretning; UTF8- og UTF32-dekodning og omvendt encoding bevarer supplementary scalars og signifikante førende nul-bytes
Encoding- og ToUnicode-streams opløser body usecmap- og dictionary UseCMap-navne eller -streams med dictionary-forrang og lokale tegn-, interval-, Unicode-sekvens- og notdef-overrides
Hvert barn CMap beholder egen skriveretning med vandret som standard, når WMode udelades; eksplicit lodret tilstand vælger nedarvede mappings og fontens lodrette metrics
CMap-nedarvning bruger thread-local nestede dybdegrænser uden at ændre THPDFCMapBounds-layout; cyklusser, misdannede parents og overdreven dybde fejler inden output-publicering, og finally-blokke gendanner grænser efter cancellation eller exceptions
Fokuseret bevis beholder navngivne UTF8- og UTF32 kildefejl i en uafhængig reader uden de indbyggede tabeller, verificerer separate indlejrede map-companions og registrerer kildetekst-forskelle, når flere koder vælger samme CID
Tests/Linux/Run-HeadlessLegacyCMapAcceptance.sh bygger og tester eksakte encoding-intervaller, blandet-bredde kilde-PDF'er, nestet rendering, trådisolering og cancellation-genopretning på native Linux
Tests/Linux/Run-HeadlessLegacyCMapWindowsAcceptance.py afvikler matchende native Windows-eksekverbare, registrerer kilde-, binær-, PNG- og diagnostik-hashes og overfører derefter faste optagelser til native Linux-lager til separate MuPDF- og Poppler-tjek
De pakkede maps bevarer deres ressource-hashes og komplette redistributionsmeddelelser; behold CMap data-licensen sammen med kilde- og binære distributioner
Hexadecimale escapes i PDF name-værdier og indholds-navneoperander dekodes én gang inden opløsning af fonts, farverum, blend modes og ressourcer; en literal hash produceret af dekodning forbliver en del af det semantiske navn
Den delte font-dekoder anvender disse semantikker på font dictionary-værdier, navngivne encodings, Differences glyph-navne og CIDToGIDMap uden at ændre lånte objekter eller dekode strengværdier
Escapede renderernavne bruger lineær dekodning, midlertidig working byte-admission, samlede operationsgrænser og cancellation-polling; fokuseret accept sammenligner ækvivalente native PNG-bytes og tekst plus uafhængig MuPDF- og Poppler-output
Shading raster-arbejde og farvefunktioner deler samlede operationsgrænser og cancellation-polling; den midlertidige overflade og en eksakt-koordinat-cache på højst 8.192 konverterede farver deltager i aktiv working byte-admission
Fokuseret shading-accept bruger lukkede geometri/funktion/farve-ligninger og separate vektor-ligningssider og beholder reader-forskelle for BBox-clipping, degenereret geometri, farvekonvertering, specielle colorant-navne og knockout-tessellering
Options afgrænser overfladepixels, aktive managede buffere, kumulative dekodede bytes, encodede PNG-bytes, token- og operator-arbejde samt rekursiv eller graphics state-dybde
Font-dekodning bruger konservative admissionsrationer: 32 MiB overgangskapacitet, 64 gange dekodet font-stream-størrelse, 128 gange rekursivt tjekkede array-pladser og dobbelt den tilbageholdte decoder-estimat i det aktive aggregat
CID-tabeller admitterer 65.536 tilbageholdte indgange; enumeration afgrænser rigtige charstrings, og notdef-arrays deltager i decoder deep-copy og tilbageholdt-byte-bogholderi
CMap-parsing og notdef-opslag deler thread-local nestede indgangsgrænser og arbejdspolling; renderer-scopes deler samlede token- og operationsgrænser, og lange leksikalske scanninger poller højst hver 256. byte
Fortolkeren reserverer også per-glyph Unicode-sekvens-kapacitet ud fra input-operand-bytes og den længste ToUnicode-mapping, før glyph-records oprettes, så gentagne lange mappings ikke kan omgå working memory-admission
Et lille working memory-budget kan afvise en simpel font, selv når dens endelige allokering ville passe; disse tjek dækker managede buffere og CPU-billedoverflader, mens Cairo-, Fontconfig- og FreeType-caches samt total proces-RSS er uden for bogholderiet
Transparens-, soft mask-, baggrunds-, opacitets- og objekt-knockout-overflader deltager i det aktive overfladebudget; transfer-funktioner deler det samlede operationsbudget, ICC- og billedcodecs bruger konservativ admission, og den native JBIG2-dekoder begrænser bitmap/kontekst-allokering kumulativt og poller cancellation under dekodning
Komplementære CMY-, sorte og geometriske form-gennemløb deler de samlede operations-, dekodnings- og cancellation-grænser; profiler med samme opløste stream deler én valideret transform og aktiv admissionsreservation, indtil siderendering fuldføres
Tilbageholdte funktionsstreams, funktions-evaluering og graphics state-records deltager i working byte-admission; rekursive tint-funktioner, multidimensionel interpolation og calculator-instruktioner deler operations- og cancellation-grænser
Det lånte cancellation-token poller under afgrænset dekodning, tokenisering, operatorer, glyph-resolver-kald, billedrækker, rekursion, PNG-encoding og inden publicering; kalderen ejer dets levetid
Rendereren tjekker extraction-tilladelse gennem den lånte dokumentpolitik og beholder kilde objektværdier og kilde-bytes
Output-ejerskab
HPDFRenderHeadlessPagePNG fuldfører rendering og PNG-encoding privat inden skrivning til en kalder-ejet stream; en endelig stream I/O-fejl kan beholde allerede accepterede bytes
HPDFRenderHeadlessPagePNGFile tjekker kilde-identitet, opretter eksklusivt en staging-fil i target-mappen, flusher den, tjekker identitet og cancellation igen og erstatter destinationen atomisk
Windows-publicering bruger højst otte atomiske erstatningsforsøg og syv ventetider på 1, 2, 4, 8, 16, 16 og 16 millisekunder og retrier kun access-denied-, sharing-violation- og lock-violation-fejl; cancellation tjekkes før hvert forsøg og på begge sider af hver ventetid
Mislykket Windows-publicering rapporterer den opfangne endelige Windows-fejlkode gennem EHPDFHeadlessRenderError; cancellation beholder rendererens cancellation-diagnostik, og ingen af stierne sletter den eksisterende destination eller falder tilbage til ikke-atomisk kopiering
Renderings-, budget-, cancellation- og staging-fejl bevarer en eksisterende destination og fjerner ejede upublicerede staging-filer; kildesti- og hardlink-aliasser afvises
Accept
Windows runtime-accept bruger matchende native konsol-eksekverbare og en isoleret SHA256-pinned portabel DLL-importlukning; en separat WSL-proces kører uafhængige MuPDF- og Poppler-pixel-, lignings- og geometri-tjek mod de Windows-producerede PNG-filer
Windows standardfont-substitutter bruger eksplicitte Cairo GDI-faces til Unicode-tekst og rigtige outlines, inklusive clipping og fill-and-stroke-modes; indlejrede fonts beholder deres FreeType glyph-mapping
OpenJPEG-kald bruger Windows stdcall-ABI og Win32 dekoreret eksport, mens stream- og besked-callbacks beholder C callback-konventionen
Tests/Linux/Run-HeadlessCairoAcceptance.sh udfører friske native ELF-builds, rydder DISPLAY og WAYLAND_DISPLAY, afviser direkte linkede desktop-biblioteker og kører uafhængige pypdf/MuPDF-orakler
Fixturesne øver standardfonte, Unicode TrueType, Type3, alle tekst-rendering- og blend-modes, alpha og knockout, RGB-transparensgrupper, sample-dybder og Decode, billedmasker og Matte, Indexed- og ICC-farver, terminale codecs, AES-krypterede filterkæder, sidegeometri, annotationstransformer, budgetter, cancellation, kildebevaring og atomisk output
Se THPDFHeadlessRenderResult for tællere og EHPDFHeadlessRenderError for fejlhåndtering