Native Linux Cairo renderer

HPDFHeadlessCairoDevice rendert een geladen PDF-pagina naar een RGB-PNG met Cairo image surfaces en FreeType, zonder display server of PDF-reader

Levert een seriële geleende view aan vanuit THPDFHeadlessDocument.GetRenderAccess(PageIndex) en houd dat document geladen en ongewijzigd tot de rendering terugkeert

Document := THPDFHeadlessDocument.Create;
try
  Document.LoadFromFile('input.pdf');
  Options := THPDFHeadlessRenderOptions.Default;
  Info := HPDFRenderHeadlessPagePNGFile(
    Document.GetRenderAccess(0), 'page.png', Options);
finally
  Document.Free;
end;

Runtime-afhankelijkheden

Native Linux gebruikt libcairo.so.2, libfreetype.so.6 en de Fontconfig-dependency van de standard-font-provider; installeer geschikte fonts voor Helvetica-, Times- en Courier-substitutie

HOTPDF_CAIRO_LIBRARY en HOTPDF_FREETYPE_LIBRARY kunnen expliciete compatibele librarypaden kiezen vóór de eerste render; geslaagde modules blijven geladen omdat native font-caches destruction-callbacks kunnen vasthouden

De host moet diens HotPDF-executable, -DLL of -package-code geladen houden zolang die native caches HotPDF font-destruction-callbacks kunnen vasthouden; een hostmodule los van de cache-levensduur lossen valt buiten dit profiel

Windows gebruikt compatibele libcairo-2.dll en libfreetype-6.dll via dezelfde bridge; runtime-binaries en diens licensing worden door de applicatie geleverd

ICCBased-kleuren laden daarnaast liblcms2.so.2; JPEG gebruikt libturbojpeg.so.0 en JPEG 2000 een OpenJPEG 2.5-compatibele libopenjp2.so.7; deze dependencies worden alleen geladen voor bijbehorende invoer

HOTPDF_LCMS_LIBRARY, HOTPDF_TURBOJPEG_LIBRARY en HOTPDF_OPENJPEG_LIBRARY overschrijven die paden; Windows-defaults zijn lcms2.dll, turbojpeg.dll en openjp2.dll

Rendering-profiel

Ondersteunde content omvat path-constructie en schilderen, nonzero- en even-odd-fill-regels, clipping, nested graphics state, CTM-transforms, line style, DeviceGray/RGB/CMYK-kleuren, normale alpha en herhaalde Form XObjects met diens eigen resources, Matrix en BBox

Lijnbreedtes mogen nul zijn: PDF-hairlines aangevraagd via 0 w of ExtGState LW=0 gebruiken een één-pixel device-space stroke; negatieve breedtes worden geweigerd

ExtGState D en de content-stream d-operator delen begrensde dash-validatie: solid lege patronen, herhaling met oneven lengte, entries met lengte nul, fractionele lengtes en getekende fases worden ondersteund

Een dash-patroon staat hoogstens 256 eindige niet-negatieve lengtes tot 1e9 toe, met ten minste één positieve lengte wanneer niet-leeg en een eindige fase met absolute waarde van hoogstens 1e9; elk element verbruikt operation-werk en tijdelijke opslag telt mee in working-byte admission

Operand-arrays accepteren PDF-comments, inclusief numerieke dash-arrays en TJ-tekstarrays; misvormde lexicale waarden en ontbrekende afsluitende haken worden door de gedeelde scanner vastgehouden en door de renderer geweigerd in plaats van stilletjes te verdwijnen

Horizontale tekst gebruikt de gedeelde glyph-interpreter voor tekstmatrices, expliciete PDF-widths, canonieke Helvetica/Times/Courier-advances, character- en word-spacing, horizontal scale en TJ-correcties

Embedded ondersteunde fontprogramma's gebruiken FreeType met opgeloste glyph-ID's; Unicode ToUnicode-mappings blijven beschikbaar via de documenttekst-API, terwijl standard-font raster-vormen afhangen van installed substituten

Composite-tekst ondersteunt Identity-H, Identity-V, expliciete embedded encoding CMap-streams en built-in UniJIS-, UniGB-, UniCNS- en UniKS-UCS2/UTF16-horizontale en verticale mappings; apart geïnstalleerde CMap-resources zijn niet vereist

Verticaal glyph-schilderen honoreert default en expliciete DW2/W2-positioneringsvectoren, text rise, horizontal scale, tekst- en graphics-matrices en TJ-verplaatsing; UTF-16-mappings accepteren supplementary character codes

Alle acht tekst-rendering-modi worden ondersteund, inclusief verticale fill/stroke/invisible-outlines die bij ET in de clip worden opgestapeld; embedded encoding CMap-streams behouden diens WMode en niet-identieke CID-mappings

Transparante gecombineerde fill-and-stroke-operaties gebruiken object knockout compositing zodat overlappende vulling niet door de stroke lekt; Type3-glyph-procedures voeren diens eigen begrensde resources en fontmatrices uit

Afbeeldingen accepteren 1/2/4/8/16-bit samples en Decode-arrays, stencil-, expliciete-, color-key- en soft masks, anders gemaskerde sizes en Matte-herstel; ontbrekende Interpolate gebruikt nearest-neighbor-sampling en true kiest bilineaire sampling

JPX-codestreams accepteren getekende of niet-getekende broncomponenten tot 26 bits, inclusief gemengde precisie, subsampling en expliciete opacity, en normaliseren naar begrensde 8- of 16-bit samples; BitsPerComponent van het image-dictionary en niet-stencil Decode-entries worden voor JPX-afbeeldingen genegeerd zoals het PDF image-profiel vereist

Geïndexeerde paletten en gevalideerde ICCBased profile-naar-sRGB-transforms worden ondersteund voor afbeeldingen en path-kleuren; DeviceCMYK zonder profiel behoudt de eenvoudige device-conversie

ICCBased-transforms accepteren Gray-, RGB-, CMYK-, Lab- en XYZ-profielsignaturen en valideren strikt het gedeclareerde componentaantal en componentbereiken

Lab-profiel-operanden gebruiken fysieke L a b-coördinaten met default ranges [0 100 -128 127 -128 127]; XYZ-operanden gebruiken fysieke X Y Z-coördinaten met een default unsigned 1.15-bereik [0 65535/32768] per component

XYZ-profiel-invoer is een native compatibiliteitsextensie en impliceert geen archival PDF-conformiteit; Lab- en XYZ-bronprofielen kiezen geen ondersteunde transparency blending space

De Range van een ICC-stream vraagt twee eindige geordende waarden per component en klemt kleuroperanden af; raw image Decode-defaults en Indexed-opzoekwaarden gebruiken die componentbereiken

CalGray, CalRGB en Lab ondersteunen paths, tekst, afbeeldingen en Indexed-palette-bases; parameters worden strikt gevalideerd, CalRGB Matrix-entries volgen PDF-kolomvolgorde, en Lab-componenten en image Decode-defaults gebruiken de gedeclareerde ranges

CIE-kleuren gebruiken Bradford chromatic adaptation en relatieve sRGB-uitvoer; BlackPoint-metadata wordt gevalideerd, terwijl extra black-point-compensatie en rendering-intent-statusbeleid aparte extensies blijven

Separation- en DeviceN-composietkleuren behouden één tot tweeëndertig tint-componenten voor paths, tekst, Indexed-bases en gepackte afbeeldingen; device- of CIE-alternatieve kleuren gebruiken begrensde gesamplede, exponentiële, stitching- of calculator-tint-functies

ICCBased Lab/XYZ- en CalGray/CalRGB/Lab-alternatieve-kleurbronnen behouden diens fysieke coördinaten door de tint-transform heen vóór conversie naar een ondersteunde transparency group

Multidimensionale gesamplede tint-functies ondersteunen lineaire en kubieke interpolatie, Domain, Encode, Decode, output Range en gepackte sample-dieptes tot 32 bits; kubieke evaluatie breidt de bestaande scalar-vier-knoop-conventie uit met tensorproducten, met lineaire fallback voor korte dimensies en begrensd werk en annulering

Zie Native sampled color functions voor interpolatieconventies en aparte formule- en reader-bewijzen

Separation None en DeviceN-ruimtes met alleen None-coloranten dragen bij aan geen kleur en geen knockout-vorm; gemengde None-componenten bereiken nog steeds de alternatieve tint-transform

Separation All past diens tint toe op elke beschikbare uitvoerkleurant, met neutrale RGB-pagina-uitvoer en behoud van elke procescomponent binnen CMYK-groepen

CMYK-groepen ontvangen originele vier-component-alternatieve tintwaarden vóór blending; spot separation-platen, NChannel-proces/kleurant-selectie en mixing-hint-simulatie blijven aparte extensies

De terminal image-callback behoudt documentdecryptie en voorafgaande stream-filters vóór native JPEG-, JPEG 2000-, CCITT- of JBIG2-decodering; JBIG2 ondersteunt arithmetic- en Huffman-tekst, MMR en gedeelde globale dictionaries

JPEG 2000 ondersteunt gesubsamplede en getekende componenten, afgeleide kleur- en sample-declaraties, embedded ICC-profielen, expliciete kleurruimte-overrides en aparte of geassocieerde opacity via SMaskInData; diens componentwaarden worden genormaliseerd naar acht of zestien bits en diens image Decode-array wordt genegeerd

Embedded of expliciete Lab/XYZ ICC-profielen gebruiken fysieke componentbereiken; geassocieerde opacity wordt vóór het toepassen van de fysieke coördinaatmapping uit genormaliseerde opgeslagen samples verwijderd, met behoud van Lab-offsetkanalen

Graphics-state SMask ondersteunt Alpha- en Luminosity-groepen, backdrop-kleuren, Form-matrices, saved-state-herstel en gesamplede, exponentiële, stitching- en begrensde calculator-transfer-functies; de eigen soft mask van een afbeelding overschrijft de graphics-state soft mask

Alle zestien standaard PDF blend-modi worden ondersteund; Form- en pagina-groepen ondersteunen geïsoleerde en niet-geïsoleerde compositing, object knockout en DeviceGray-, DeviceRGB-, DeviceCMYK-, CalGray-, CalRGB- of één-, drie- en vier-component-ICCBased-blending spaces

Gekalibreerde groepen behouden native componentwaarden tot een groepsgrens en accepteren device- of Lab-bronkleuren via inverse gekalibreerde transforms; Lab zelf is geen geldige blending space

Gekalibreerde Luminosity-masks behouden diens groepscoördinaten en evalueren CIE XYZ-Y, inclusief groepsopacity en backdrop-kleuren, vóór het toepassen van de transfer-functie

Knockout-compositing houdt de geometrische vorm van het object gescheiden van soft-mask-opacity; stencil-holes behouden voorafgaande objecten terwijl een gemaskeerd pad ze vervangt gedurende diens gehele geschilderde geometrie

Nested knockout-groepen behouden de vereniging van de geometrische vormen van diens kinderen, inclusief objecten met zero-opacity; niet-geïsoleerde child-groepen gebruiken de initiële backdrop van de omvattende knockout-groep

CMYK-groepen behouden complementaire CMY- en zwarte componenten in aparte begrensde image-planes en converteren het gecombineerde resultaat bij groepsgrenzen; niet-scheidbare blend-modi behouden of vervangen zwart volgens de gekozen modus

Niet-geïsoleerde groepen renderen een extra begrensde opacity-pass, verwijderen de initiële backdrop-bijdrage en passen de inkomende groeps-alpha en blend-modus één keer toe; pagina-transparantiegroepen gebruiken een geïsoleerd surface vóór compositing op de pagina-achtergrond

Een niet-geïsoleerde Form erft diens omvattende blending space; een expliciete group CS-entry schakelt de initiële backdrop niet naar een andere ruimte

Bestaande normale annotation-appearances worden van diens getransformeerde BBox naar Rect gefit; RenderAnnotations=false laat appearances in beide usages weg

Usage defaultt naar hruView, dat Hidden- en NoView-annotaties en onbekende annotatietypes met Invisible-gezet overslaat; ISO 32000 standaard annotatietypes, inclusief PDF 2.0 RichMedia en Projection, met ondersteunde normale appearances blijven zichtbaar wanneer alleen Invisible is gezet

RichMedia- en Projection-acceptatie dekt bestaande statische normale appearances met geldige media-assets of een geassocieerde default 3D-view; media playback en interactieve 3D-activatie vallen buiten dit rasterpad

hruPrint pint alleen annotaties met Print gezet en Hidden gewist; Invisible onderdrukt onbekende annotatietypes in beide usages, NoView onderdrukt printen niet, en NoZoom verandert de gedrukte appearance-grootte niet

Wanneer een normale appearance ontbreekt, wordt ondersteunde annotatiemetadata via een tijdelijke appearance gerenderd; zie native annotation fallback voor geometrie, Unicode FreeText, statische iconen en resterende grenzen

Voor view-uitvoer verwijdert annotation NoZoom de renderschaal uit de appearance-grootte terwijl UserUnit behouden blijft; NoRotate houdt de gefitte appearance overeind door paginarotatie heen in beide usages, en beide behouden het getransformeerde upper-left Rect-anker en pagina-clip

Tekstannotaties met bestaande normale appearances gedragen zich als NoZoom en NoRotate in view-uitvoer ongeacht diens expliciete vlaggen; print-uitvoer behoudt diens NoRotate-gedrag terwijl NoZoom wordt genegeerd

Usage stuurt statische raster-zichtbaarheid en annotatiegeometrie; interaction-only-vlaggen creëren geen hover- of bewerkingsgedrag, en de bestaande extractie-permission-callback blijft vereist zonder print-permission te verlenen

Optional content in statische uitvoer

Rendering consumeert de default OCProperties/D-configuratie van de catalog, initialiseert groepsstatussen vanuit BaseState, past ON- en OFF-overrides toe en gebruikt matchende Intent-waarden bij het bepalen van zichtbaarheid

Membership-dictionaries ondersteunen AnyOn, AllOn, AnyOff en AllOff; recursieve VE-expressies ondersteunen And, Or en single-operand Not, waarbij VE voorrang krijgt op het eenvoudigere beleid

Null-, onbeschikbare en verouderde groepsreferenties hebben geen membership-effect; groepen buiten de intents van de configuratie sturen zichtbaarheid niet, en een membership of expressie zonder toepasselijke groepen laat content zichtbaar

Nested /OC marked content, image- en Form XObjects en annotaties respecteren de resulterende status; verborgen marked-secties werken nog steeds kleuren, matrices, clipping en tekstpositie bij, terwijl verborgen hele XObjects en annotaties kunnen worden overgeslagen

Gewone marked-content-property-dictionaries blijven bruikbaar, inclusief nested inline-waarden; content-arrays behouden marked-content-status over diens componentstreams heen, en child-streams houden diens eigen marked-content-nesting

Standalone final-form rasterisatie gebruikt de default-configuratie in zowel view- als print-modus zonder automatisch interactieve AS-usage-aanbevelingen toe te passen, zoals gespecificeerd in ISO 32000-1:2008 sectie 8.11.4.5; expliciete ViewerState zet View-, Print-, Export-, Zoom-, Language- en User-aanbevelingen aan met persistente handmatige selectie en tijdelijke event-status

Ontbrekende optional-content-properties of een nil geleende catalog laten optional-content-structuren zonder zichtbaarheidseffect; misvormde live memberships, expressiecycli en geconfigureerde werk-, geheugen- of recursielimieten falen vóór PNG-publicatie

Affiene appearance-matrices en nonzero BBox-origins behouden diens normale fit onder deze vlaggen; een extreem kleine renderschaal kan de initiële pagina-matrix van Cairo nog steeds numeriek niet-inverteerbaar maken

De gerenderde pagina gebruikt de MediaBox/CropBox-intersectie, geërfde pagina-boxes en kwartslag-Rotate, en de UserUnit van de pagina; schaal 1 levert één pixel per effectief paginapunt, met naar boven afgeronde surface-dimensies

De sh-operator pint functie-gebaseerde, axiale en radiale shadings (ShadingTypes 1–3), met twee-invoer-domeinen, shading-matrices, radiale-cirkel-selectie, Extend-eindpunten, BBox en bestaande path-clips

Ondersteunde kleurfuncties en scalar-functie-arrays converteren via device-, gekalibreerde, ICC Lab/XYZ- en Separation/DeviceN-bronkleuren; huidige fill-opacity, blend-modi, graphics-state soft masks en transparency-group knockout gelden voor de resulterende shading

Het huidige pad en de kleur worden behouden; shading Background wordt door sh genegeerd, en AntiAlias is een device-hint met pixel-center-kleursampling

Niet-ondersteunde ExtGState-entries en niet-ondersteunde content-operatoren vallen buiten dit profiel

Driehoek-mesh-shadings

ShadingTypes 4 en 5 pinten free-form en lattice Gouraud-driehoekmeshes met edge-hergebruik, willekeurige lattice-geometrie, byte-uitgelijnde vertex-records, coördinaatprecisie tot 32 bits en componentprecisie tot 16 bits

Vertex-componenten worden geïnterpoleerd op device-pixelcentra vóór kleurconversie; een optionele één-invoer-functie of componentfunctie-array evalueert de geïnterpoleerde parameter, inclusief gekalibreerde, ICC en speciale kleurruimtes

Indexed-bronnen ronden geïnterpoleerde indices af naar het dichtstbijzijnde palet-item; hexadecimale opzoekstrings decoderen één keer met whitespace, mixed-case cijfers en oneven laatste nibble-padding, terwijl letterlijke opzoekstrings diens gedecodeerde bytes behouden

Huidige transforms, clipping, BBox, fill-opacity, blend-modus, soft masks, nonmarking-coloranten en group-knockout gelden voor de voltooide mesh; vastgehouden stream-bytes, het tijdelijke pagina-surface en twee lattice-rijen komen in working-memory-admission

Vertex-parsing, driehoekrasterisatie en functies delen geaggregeerde operaties en annuleringspolling; misvormde of afgekapte records en incomplete lattice-rijen falen vóór uitvoerpublicatie

Gerichte acceptatie checkt gesloten barycentrische vergelijkingen en aparte MuPDF- en Poppler-uitvoer; proof-records houden bronlezer-falen apart voor vertex-padding, ongebruikte flag-bits en mesh-transparantie, en gebruiken expliciete alternatieve reader-vergelijkingen voor nonmarking-kleuren en genormaliseerde Indexed-waarden

Coons- en tensor-patch-meshes

ShadingTypes 6 en 7 pinten kubieke Coons-grenzen en tensor-control-nets, met preceding-edge-hergebruik, byte-uitgelijnde records, low-two-bit-flag-semantics en dezelfde coördinaat- en componentprecisie als driehoekmeshes

Hoekcomponenten interpoleren bilineair in patch-parameters vóór optionele functies en kleurconversie; Coons-grenzen worden opgeheven naar een equivalent bicubisch Bernstein-net waarvan tweede-oratie-afgeleide-grenzen subdivisies kiezen met hoogstens 0.125 uitvoerpixel-geometriefout

Polynomiale inversie verfijnt pixelparameters; gevouwen dekking kiest de grootste v-parameter en daarna de grootste u-parameter bij gelijke v, terwijl latere patches eerdere kleuren vervangen voordat de voltooide shading object-transparantie ontvangt

De gedeelde mesh-compositor past clipping, BBox, shading-patronen, nonmarking-coloranten, opacity, blending, soft masks en group-knockout toe; twee subdivisierijen en per-pixel-parameter- en -order-arrays komen in actieve working-byte-admission

Control-point-parsing, subdivisie, rasterisatie en kleurfuncties delen operation-limieten en annulering; gerichte acceptatie gebruikt onafhankelijke Coons- en tensor-vergelijkingen en kubieke wortels voor gevouwen patches, met bronlezer-falen apart geregistreerd van gewone RGB-vergelijkingspagina-verificatie

Geërfde tekststatus

Form-, Type3- en pattern-child-streams erven het toepasselijke fontobject, de fontgrootte, character spacing, word spacing, horizontal scale, leading, rendering-modus en rise vanuit diens initiële graphics state; een child-resource met dezelfde fontnaam vervangt geen geërfd font tot een lokale Tf hem kiest

Opgeslagen graphics state herstelt tekstparameters, en TD- en double-quote-operatoren houden diens leading- en spacing-wijzigingen vast voor daaropvolgende child-streams; elk kind begint met diens eigen tekstmatrices

Onafhankelijke annotation-appearances beginnen vanuit default tekstparameters zonder de finale tekststatus van paginacontent vast te houden

Type3-tekst in rendering-modus 3 draagt geen zichtbare glyph-graphics bij; gericht Type3 nested-text-bewijs houdt MuPDF's default-parameter-afwijking apart van de geërfde-status-vergelijkingen, terwijl Poppler in die fixtures de geërfde parameters volgt

Tiling- en shading-patronen

Pattern-kleurruimtes ondersteunen gekleurde en ongekleurde tiling-patronen, TilingType 1–3, shading-patronen, PatternMatrix, cel-BBox, positieve of negatieve spacing, patroonselectie, saved-state-herstel en fill- of stroke-schilderen

Ongekleurde patronen verkrijgen diens componenten vanuit een ondersteunde basis-kleurruimte en kunnen image-stencils schilderen; expliciete kleurwijzigingen, gekleurde afbeeldingen en directe shadings binnen een ongekleurde definitie zijn ongeldige PDF-content en worden ook door nested Forms en Type3-procedures geweigerd

Geselecteerde patronen behouden de default coördinatenruimte van de content stream die diens definitie heeft opgelost; latere cm-operaties en een geërfd patroon gebruikt binnen een Form vervangen die oorsprong niet

Definities beginnen met de initiële ondersteunde graphics state en default transparantieparameters van de ouder; tiling-definities vormen een niet-geïsoleerde niet-knockout-groep, terwijl shading-definities object knockout gebruiken

Transparante en overlappende tiling-cellen worden tegen de huidige backdrop geëvalueerd; inkomende object-alpha en blend-modus gelden één keer bij het schilderen van het voltooide patroon, inclusief nested patronen, tekst, strokes en imagemasks

Shading-pattern-ExtGState breidt ondersteunde shading-parameters uit, inclusief opacity en soft masks; Background wordt vóór de shading geschilderd, BBox clipst beide bijdragen, en nonmarking None-kleuren dragen bij aan geen kleur en geen vorm

Pattern-evaluatie staat twee pagina-surfaces en gedecodeerde celcontent toe, klemt zichtbare cel-enumeratie af op de huidige clip en pollt annulering tijdens het renderen van cellen en het verwijderen van de backdrop-bijdrage

Gerichte fixtures vergelijken gesloten coördinaat-, kleur- en compositievergelijkingen met native pixels en onafhankelijke reader-uitvoer; proof-bestanden houden reader-verschillen vast voor geërfde Form-patroon-oorsprongen, shading-pattern ExtGState-opacity en nonmarking None-kleuren, met aparte gewone vector-vergelijkingspagina's voor die gevallen

CID-keyed CFF-fonts

Embedded CIDFontType0-fonts lossen echte CFF-CID's op in standalone en OpenType-containers, inclusief niet-identieke mappings, CID 65535, embedded Encoding CMaps, verticale W2-origins, getransformeerde outlines en tekstclipping

Standalone CFF-faces laden per CID en SFNT-wrapped-faces laden per compacte glyph-index; de bridge gebruikt de juiste FreeType face-layout voor Linux LP64 en Windows LLP64

Een niet-gemapte character code of afwezige gevraagde CID raadpleegt notdefchar en notdefrange voor de originele code, en gebruikt daarna de verplichte CID 0-glyph wanneer de vervanging ontbreekt; ranges hebben constante CID-targets en character-entries hebben voorrang, terwijl aanwezige glyphs diens gevraagde CID behouden

Gerichte acceptatie gebruikt gedeclareerde polygoon-contouren en oorsprongsvergelijkingen voor 28 geldige bronnen, met aparte MuPDF- en Poppler-vergelijkingen en gewone RGB-vergelijkingspagina's

Proof-bestanden houden bronlezer-verschillen vast voor CID-keyed OpenType glyph-selectie en weggelaten notdef-substituties; het weglating-alternatief wordt apart gemeten en vervangt de vereiste native bronvergelijking niet

Grenzen en annulering

Exacte built-in Type0-encodings dekken alle 200 meegeleverde encoding-namen: Identity-H en Identity-V, zestien UCS2- en UTF16-mappings en 182 extra legacy- en Unicode-maps met afgeplatte verticale character-overrides

Gemengde één-byte tot vier-byte-operanden gebruiken per-byte codespace-grenzen en longest-prefix ongeldige-code-herstel; UTF8- en UTF32-decodering en reverse encoding behouden supplementary scalars en significante leading-zero-bytes

Encoding- en ToUnicode-streams lossen body usecmap- en dictionary UseCMap-namen of -streams op, met dictionary-voorrang en lokale character-, range-, Unicode-sequentie- en notdef-overrides

Elke child CMap houdt diens eigen writing mode vast, defaultend naar horizontaal wanneer WMode ontbreekt; expliciete verticale modus kiest geërfde mappings en de verticale metrics van het font

CMap-inheritance gebruikt thread-lokale nested dieptelimieten zonder de THPDFCMapBounds-layout te veranderen; cycli, misvormde ouders en excessieve diepte falen vóór uitvoerpublicatie, en finally-blokken herstellen limieten na annulering of exceptions

Gericht bewijs houdt benoemde UTF8- en UTF32-bronfalen vast in een onafhankelijke reader zonder die built-in tabellen, verifieert aparte embedded-map-companions en registreert brontekst-verschillen wanneer meerdere codes dezelfde CID kiezen

Tests/Linux/Run-HeadlessLegacyCMapAcceptance.sh bouwt en test exacte encoding-intervallen, mixed-width bron-PDF's, nested rendering, thread-isolatie en annuleringsherstel op native Linux

Tests/Linux/Run-HeadlessLegacyCMapWindowsAcceptance.py draait matchende native Windows-executables, registreert bron-, binary-, PNG- en diagnostische hashes en draagt dan vaste captures over naar native Linux-opslag voor aparte MuPDF- en Poppler-checks

De gepackte maps behouden diens resource-hashes en complete redistributienotices; houd de CMap-data-license bij bron- en binaire distributies

Hexadecimale escapes in PDF name-waarden en content name-operanden decoderen één keer vóór het oplossen van fonts, kleurruimtes, blend-modi en resources; een letterlijke hash voortgekomen uit decodering blijft deel van de semantische naam

De gedeelde font-decoder past deze semantics toe op font-dictionary-waarden, benoemde encodings, Differences-glyph-namen en CIDToGIDMap, zonder geleende objecten te wijzigen of stringwaarden te decoderen

Geëscapete renderer-namen gebruiken lineaire decodering, tijdelijke working-byte-admission, geaggregeerde operation-limieten en annuleringspolling; gerichte acceptatie vergelijkt equivalente native PNG-bytes en tekst plus onafhankelijke MuPDF- en Poppler-uitvoer

Shading raster-werk en kleurfuncties delen geaggregeerde operation-limieten en annuleringspolling; het tijdelijke surface en een exact-coördinaten-cache van hoogstens 8.192 geconverteerde kleuren komen in actieve working-byte-admission

Gerichte shading-acceptatie gebruikt gesloten geometrie-/functie-/kleurvergelijkingen en aparte vector-vergelijkingspagina's, met vastgehouden bronlezer-verschillen voor BBox-clipping, degenerische geometrie, kleurconversie, speciale kleurant-namen en knockout-tessellatie

Options begrenzen surface-pixels, actieve managed buffers, cumulatieve gedecodeerde bytes, encoded PNG-bytes, token- en operator-werk en recursieve of graphics-state-diepte

Font-decodering gebruikt conservatieve admission-ruimtes: 32 MiB transiente capaciteit, 64 keer decoded font-stream-grootte, 128 keer recursief gecheckte array-slots en twee keer de vastgehouden decoder-schatting in de actieve aggregaat

CID-tabellen staan 65.536 vastgehouden entries toe; enumeratie begrenst echte charstrings, en notdef-arrays komen in decoder deep-copy en retained-byte-accounting

CMap-parsing en notdef-opzoek delen thread-lokale nested entry-grenzen en werkpolling; renderer-scopes delen geaggregeerde token- en operation-limieten, en lange lexicale scans pollen hoogstens elke 256 bytes

De interpreter reserveert daarnaast per-glyph Unicode-sequentie-capaciteit vanuit invoeroperand-bytes en de langste ToUnicode-mapping vóór het aanmaken van glyph-records, zodat herhaald lange mappings de working-memory-admission niet kunnen omzeilen

Een klein working-memory-budget kan een eenvoudige font weigeren zelfs wanneer diens uiteindelijke allocatie zou passen; deze checks dekken managed buffers en CPU-image-surfaces, terwijl Cairo-, Fontconfig- en FreeType-caches en totale proces-RSS buiten de accounting vallen

Transparantie-, soft-mask-, backdrop-, opacity- en object-knockout-surfaces komen in het actieve surface-budget; transfer-functies delen het geaggregeerde operation-budget, ICC- en image-codecs gebruiken conservatieve admission, en de native JBIG2-decoder klemt bitmap/context-allocatie cumulatief af en pollt annulering tijdens decodering

Complementaire CMY-, zwarte en geometrische vorm-traversals delen de geaggregeerde operation-, decoderings- en annuleringslimieten; profielen die dezelfde opgeloste stream gebruiken delen één gevalideerde transform en actieve admission-reservatie tot pagina-rendering afrondt

Vastgehouden functie-streams, functie-evaluatie en graphics-state-records komen in working-byte-admission; recursieve tint-functies, multidimensionale interpolatie en calculator-instructies delen operation- en annuleringslimieten

Het geleende annuleringstoken wordt gepolld tijdens begrensde decodering, tokenisatie, operatoren, glyph-resolver-aanroepen, afbeeldingsrijen, recursie, PNG-encoding en vóór publicatie; de aanroeper is eigenaar van diens levensduur

De renderer checkt extractiepermissie via het geleende documentbeleid en behoudt bronobjectwaarden en bronbytes

Uitvoer-eigendom

HPDFRenderHeadlessPagePNG rondt rendering en PNG-encoding privé af vóór het schrijven naar een stream in caller-eigendom; een finale stream-I/O-fout kan al geaccepteerde bytes vasthouden

HPDFRenderHeadlessPagePNGFile checkt bronidentiteit, maakt exclusief een staging-bestand in de doeldirectory aan, flußt het, checkt identiteit en annulering opnieuw en vervangt de destination atomair

Windows-publicatie gebruikt hoogstens acht atomare vervangingspogingen en zeven waits van 1, 2, 4, 8, 16, 16 en 16 milliseconden, en retryt alleen access-denied-, sharing-violation- en lock-violation-fouten; annulering wordt gecheckt vóór elke poging en aan beide kanten van elke wait

Gefaalde Windows-publicatie rapporteert de vastgelegde finale Windows error code via EHPDFHeadlessRenderError; annulering behoudt de annuleringsdiagnostiek van de renderer, en geen van beide paden verwijdert de bestaande destination of valt terug op niet-atomare kopie

Rendering-, budget-, annulerings- en staging-fouten behouden een bestaande destination en verwijderen owned ongepubliceerde staging-bestanden; bronpad- en hardlink-aliassen worden geweigerd

Acceptatie

Windows runtime-acceptatie gebruikt matchende native console-executables en een geïsoleerde, SHA256-gepinde portable DLL-import-closure; een apart WSL-proces draait onafhankelijke MuPDF- en Poppler-pixel-, vergelijkings- en geometrie-checks tegen de door Windows geproduceerde PNG-bestanden

Windows standard-font-substituten gebruiken expliciete Cairo GDI-faces voor Unicode-tekst en echte outlines, inclusief clipping en fill-and-stroke-modi; embedded fonts behouden diens FreeType-glyph-mapping

OpenJPEG-aanroepen gebruiken de Windows stdcall-ABI en Win32 decorated exports, terwijl stream- en message-callbacks de C-callback-conventie houden

Tests/Linux/Run-HeadlessCairoAcceptance.sh voert verse native ELF-builds uit, wist DISPLAY en WAYLAND_DISPLAY, verwerpt direct gelinkte desktop-libraries en draait onafhankelijke pypdf/MuPDF-orakels

De fixtures oefenen standaardfonts, Unicode TrueType, Type3, alle tekst-rendering- en blend-modi, alpha en knockout, RGB-transparantiegroepen, sample-dieptes en Decode, imagemasks en Matte, Indexed- en ICC-kleuren, terminal codecs, AES-versleutelde filterketens, pagina-geometrie, annotatie-transforms, budgetten, annulering, bronpreservatie en atomare uitvoer

Zie THPDFHeadlessRenderResult voor counters en EHPDFHeadlessRenderError voor foutafhandeling