Opcioni rukovaoci dokumentima

THPDFDocumentHandlerRegistry bira zamenjive rukovaoce po pregledanom sadržaju pre slabih ekstenzijskih ili MIME nagoveštaja, zatim konvertuje odabrani izvor u jedan nepromenljivi PDF keš deljen izvozom i renderovanjem

Ugrađeni opcioni rukovaoci

Budžeti i izolacija neuspeha

Jedan validiran sken ZIP centralnog direktorijuma sprovodi limite unosa, komprimovanih bajtova, proširenih bajtova, po unosu, duplirane putanje, nesigurne putanje i odnos kompresije pre konverzije

Klasični PKZIP ZipCrypto unosi mogu tražiti akreditive kroz ArchivePasswordCallback; callback prima ime izvora, ime unosa i broj pokušaja od jedan, dok MaxPasswordAttempts ograničava ponavljanja od 1 do 16

Akreditivi i delimično dekodovani bajtovi unosa ostaju u memoriji i čiste se između pokušaja, otkazivanje se proverava pre i posle svakog callback-a, a nedostajući callback-ovi, odbijeni akreditivi, iscrpljena ponavljanja ili nepodržana enkripcija bezbedno otkazuju

ZipCrypto je zastarela zaštita lozinkom, a ne moderno autentifikovano enkripcijom, i konvencije bajtova ne-ASCII lozinki mogu da variraju između ZIP proizvođača

Unosi zaštićeni lozinkom zahtevaju Delphi 12 ili noviji, čiji System.Zip izlaže hook za dekripciju; sagrađeni sa starijom verzijom Delphija, rukovaoci i dalje čitaju neenkriptovane unose ali odbijaju enkriptovane kao nepodržane pre nego što se pozove ArchivePasswordCallback

Unosi čije veličine ili ofseti zahtevaju ZIP64 polja traže Delphi 11 ili noviji; starije verzije Delphija ih odbijaju kao nepodržane

Ograničenja resursa, preobražaja, stranica, piksela, DPI-ja, izlaza i otkazivanja ostaju aktivna tokom konverzije i renderovanja, dok neuspešno objavljivanje izlaza vraća tok odredišta koji se može pretraživati

Registracija i upotreba

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;

Povezani API-ji