Gestionnaires de documents facultatifs

THPDFDocumentHandlerRegistry sélectionne des gestionnaires remplaçables selon le contenu inspecté avant les faibles indications de l’extension ou MIME, puis convertit la source choisie en un cache PDF immuable partagé par l’exportation et le rendu

Gestionnaires facultatifs intégrés

Budgets et isolement des échecs

Une analyse validée du répertoire central ZIP applique avant la conversion les limites d’entrées, d’octets compressés et décompressés, par entrée, de chiffrement, de chemins dupliqués ou dangereux et de taux de compression

Les entrées ZipCrypto PKZIP classiques peuvent demander des identifiants via ArchivePasswordCallback ; le callback reçoit le nom de la source, le nom de l’entrée et le numéro de tentative en base 1, tandis que MaxPasswordAttempts borne les reprises de 1 à 16

Les identifiants et les octets d’entrées partiellement décodés restent en mémoire et sont effacés entre les tentatives, l’annulation est vérifiée avant et après chaque callback, et les callbacks manquants, les identifiants refusés, les reprises épuisées ou le chiffrement non pris en charge échouent de façon fermée

ZipCrypto est une protection par mot de passe historique plutôt qu’un chiffrement authentifié moderne, et les conventions d’octets des mots de passe non ASCII peuvent varier selon les producteurs de ZIP

Les entrées protégées par mot de passe exigent Delphi 12 ou ultérieur, dont le System.Zip expose le hook de déchiffrement ; compilés avec une version antérieure de Delphi, les handlers lisent toujours les entrées non chiffrées mais rejettent les entrées chiffrées comme non prises en charge avant l’appel de ArchivePasswordCallback

Les entrées dont les tailles ou décalages exigent des champs ZIP64 réclament Delphi 11 ou ultérieur ; les versions antérieures de Delphi les rejettent comme non prises en charge

Les limites de ressources, reformatage, pages, pixels, DPI, sortie et annulation restent actives pendant la conversion et le rendu, tandis qu’un échec de publication restaure le flux de destination positionnable

Enregistrement et utilisation

var
  Registry: THPDFDocumentHandlerRegistry;
  Options: THPDFDocumentHandlerOptions;
  Handled: IHPDFHandledDocument;
  Info: THPDFDocumentHandlerInfo;
begin
  Registry:= THPDFDocumentHandlerRegistry.Create;
  try
    Registry.RegisterStandardHandlers;
    Options:= THPDFDocumentHandlerOptions.Default;
    if Registry.OpenFromFile('book.epub', '', Options, Handled, Info) then
      Handled.WritePDF(OutputStream, Options, Info);
  finally
    Registry.Free;
  end;
end;

API associées