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

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;

Gerelateerde API's