Optionele documenthandlers
THPDFDocumentHandlerRegistry kiest vervangbare handlers op grond van geïnspecteerde inhoud vóór zwakke extensie- of MIME-hints, en converteert de gekozen bron daarna naar één immutable PDF-cache die export en rendering delen
Ingebouwde optionele handlers
- XPS en OpenXPS behouden vaste pagina-afmetingen en visuele volgorde, converteren zelfsluitende of propertydragende afgekorte
Path-geometrie naar native PDF-vectoren, behouden solid brushes uit attributen en property-elementen, multi-stop-LinearGradientBrush- en elliptischeRadialGradientBrush-shadingpatronen, en vullen paths via package-JPEG-, PNG-, TIFF- of JPEG XR-ImageBrush-resources metTileMode=None - XPS-afbeeldingsvullingen ondersteunen absolute of
RelativeToBoundingBox-Viewbox- enViewport-mapping, de tilemodiNone,Tile,FlipX,FlipYenFlipXY, native path- en plaatsingsclipping, eindige zesparameter-Transform-attributen ofImageBrush.Transform-MatrixTransform-elementen, brush- en path-opaciteit, PNG soft-mask-alpha, afbeeldings-DPI en package-resourcecaching - XPS
Path.OpacityMaskondersteunt solid-, multi-stop lineaire of elliptische radiale gradiënt- en PNGImageBrush-masks, inclusief herhaalde en gespiegelde afbeeldingscellen; uniforme alpha wordt ingevouwen in bestaande graphics states, terwijl variabele alpha begrensde native DeviceGray-transparency groups gebruikt die shadingpatronen en afbeeldingssoft-mask-streams delen - XPS Canvas
OpacityenCanvas.OpacityMaskcompositeren overlappende afstammelingen één keer via geïsoleerde DeviceRGB Form XObjects in plaats van elk kind afzonderlijk te verzwakken; uniforme maskalpha wordt ingevouwen in de groepsstatus, variabele gradiënt- of PNG-afbeeldingsalpha hergebruikt native soft-mask-resources en geneste groepen behouden getransformeerde clips, resource-eigendom en begrensde linkannotaties binnen grenzen van 4.096 groepen en 16 MiB vastgelegde content per groep - XPS
VisualBrushconverteert inline- of resourcegedragenCanvas-,Path- enGlyphs-visuals recursief, lost geneste en externeResourceDictionary-scopes op, mapt een absoluteViewboxop een absolute of relatieveViewporten hergebruikt één begrensde PDF Form XObject over directe, getegelde en gespiegelde plaatsingen - XPS
Canvas.Clipaccepteert begrensde afgekorte geometrie, lokale of externeStaticResource-PathGeometry-waarden en directe property-elementen met gestructureerde line-, Bézier-, quadratic- of arc-figuren, geometrietransformaties, lege geometrie enEvenOdd- ofNonZero-fillregels; geneste clips worden native PDFW*- ofW-paths, navigatierechthoeken worden gesneden met actieve getransformeerde clipgrenzen, parsen is gemaximeerd op 100.000 numerieke waarden en misvormde of singuliere clips falen gesloten voordat kindvisuals worden geschilderd - XPS
Glyphsaccepteert hoogstens 65.536 strikteIndices-mappings, behoudt one-to-many- en many-to-one-clusterprogressie, expliciete advances in honderdsten van em, horizontale en verticale offsets, omgekeerde progressie bij onevenBidiLevel, solid-attribute- of property-elementvullingen, opaciteit, Unicode-extractie en fail-closed-diagnostiek bij misvormde invoer; eenvoudige runs gebruiken native PDFTJ-arrays en grote mappingbuffers groeien met afgeschreven lineaire kosten - Package
FontUri-resources ondersteunen TrueType- en OpenType-programma's, TTC-lidfragmenten en XPS GUID-obfuscated fonts; exacte glyph-ID's, cmap-afgeleide runs, clusters, advances, offsets, RTL-oorsprongen, hergebruik van fontresources, embeddingrechten, optionele subsetting enToUnicode-extractiemaps blijven native PDF-fontdata zonder GDI-substitutie - XPS
FixedPage.NavigateUriop getransformeerdePath- enGlyphs-visuals wordt een native PDF-linkannotatie met geometrisch of metrisch afgeleide grenzen; HTTP-, HTTPS- en maillinks blijven URI-acties, terwijl package-relatieve pagina's en procentgedecodeerdeLinkTarget-fragmenten voorwaartse of achterwaartse GoTo-acties worden zodra elke pagina beschikbaar is - Een Canvas
FixedPage.NavigateUriwordt het overgeërfde doel van elke afstammendePath-,Glyphs- of geneste Canvas-visual totdat een afstammeling zijn eigen URI levert; scoped doelen herstellen na geneste overrides, volgen de geometrie en transformatie van elke visual, blijven beperkt door actieve Canvas-clips, overleven vastlegging in geïsoleerde opacitygroepen en blijven onderdrukt binnen herbruikbareVisualBrush-Forms - Navigatie is gemaximeerd op 65.536 links met 8.192 tekens per URI, wordt tijdens het publiceren op annulering gecontroleerd, onderdrukt tijdens het vastleggen van herbruikbare
VisualBrush-Forms en geweigerd bij controle tekens, onveilige schema's, ontbrekende doelen of mismatches in path en fragment - Niet-standaard
RelativeTransform, onopgeloste matrixresources, Repeat- of Reflect-gradiëntuitloop, niet-sRGB-interpolatie, verfbrushes met variabele alpha, kleurconversie, afbeeldingsstrokes, relatieveVisualBrush-viewboxes, style simulation, zijwaartse glyphs en geavanceerde strokeproperties blijven expliciete diagnostiek - EPUB lost
container.xml, manifest en spine-volgorde op en gebruikt daarna de begrensde HTML5 paged-media-importer met uitsluitend callback-package-resources - CBZ herkent ondersteunde afbeeldingsinvoeren, past deterministische natuurlijke bestandsnaamvolgorde toe en maakt één pagina per afbeelding op de geconfigureerde afbeeldings-DPI
Budgetten en faalisolatie
Een eenmalig gevalideerde ZIP central directory-scan handhaaft vóór de conversie limieten voor invoeren, gecomprimeerde bytes, uitgevouwen bytes, per invoer, dubbele paden, onveilige paden en compressieverhouding
Klassieke PKZIP ZipCrypto-invoeren kunnen credentials opvragen via ArchivePasswordCallback; de callback ontvangt de bronnaam, de invoernaam en het pogingnummer vanaf 1, terwijl MaxPasswordAttempts retries beperkt tot 1 tot en met 16
Credentials en gedeeltelijk gedecodeerde invoerbytes blijven in het geheugen en worden tussen pogingen gewist, annulering wordt voor en na elke callback gecontroleerd, en ontbrekende callbacks, geweigerde credentials, uitgeputte retries of niet-ondersteunde encryptie falen gesloten
ZipCrypto is legacy-wachtwoordbeveiliging in plaats van moderne geauthenticeerde encryptie, en byteconventies voor niet-ASCII-wachtwoorden kunnen per ZIP-producer verschillen
Met wachtwoord beveiligde invoeren hebben Delphi 12 of later nodig, waarvan System.Zip de ontsleutelingshook blootlegt; gebouwd met een oudere Delphi-versie lezen de handlers nog steeds onversleutelde invoeren maar wijzen versleutelde af als niet ondersteund voordat ArchivePasswordCallback wordt aangeroepen
Invoeren waarvan de groottes of offsets ZIP64-velden nodig hebben, vereisen Delphi 11 of later; oudere Delphi-versies wijzen ze af als niet ondersteund
Resource-, reflow-, pagina-, pixel-, DPI-, uitvoer- en annuleringslimieten blijven actief tijdens de hele conversie en rendering, en bij mislukte uitvoerpublicatie wordt een seekable bestemmingsstream hersteld
Registratie en gebruik
var Registry: THPDFDocumentHandlerRegistry; Options: THPDFDocumentHandlerOptions; Handled: IHPDFHandledDocument; Info: THPDFDocumentHandlerInfo; begin Registry:= THPDFDocumentHandlerRegistry.Create; try Registry.RegisterStandardHandlers; Options:= THPDFDocumentHandlerOptions.Default; Options.ArchivePasswordCallback:= SupplyArchivePassword; if Registry.OpenFromFile('book.epub', '', Options, Handled, Info) then Handled.WritePDF(OutputStream, Options, Info); finally Registry.Free; end; end;