Neobavezni rukovatelji dokumentima

THPDFDocumentHandlerRegistry odabire zamjenjive rukovatelje prema ispitanom sadržaju prije slabih ekstenzija ili MIME naznaka, a zatim pretvara odabrani izvor u jednu nepromjenjivu PDF predmemoriju koju dijele izvoz i renderiranje

Ugrađeni neobavezni rukovaoci

Proračuni i izolacija neuspjeha

Jedan validirani prelazak ZIP centralnog direktorija provodi ograničenja unosa, komprimiranih bajtova, proširenih bajtova, po unosa, dupliciranih putanja, nesigurnih putanja i omjera kompresije prije konverzije

Klasični PKZIP ZipCrypto unosi mogu zatražiti vjerodajnice kroz ArchivePasswordCallback; callback prima naziv izvora, naziv unosa i broj pokušaja s jednom bazom, dok MaxPasswordAttempts ograničava ponavljanja od 1 do 16

Vjerodajnice i djelomično dekodirani bajtovi unosa ostaju u memoriji i brišu se između pokušaja, otkazivanje se provjerava prije i nakon svakog callbacka, a nedostajući callbackovi, odbijene vjerodajnice, iscrpljena ponavljanja ili nepodržano šifriranje otkazuju se zatvoreno

ZipCrypto je zastarjela zaštita lozinkom, a ne moderna autentificirano šifriranje, i konvencije bajtova ne-ASCII lozinki mogu varirati između ZIP proizvođača

Unosi zaštićeni lozinkom trebaju Delphi 12 ili noviji, čiji System.Zip izlaže hook za dešifriranje; sagrađeni ranijom verzijom Delphija, rukovatelji i dalje čitaju nešifrirane unose, ali šifrirane odbacuju kao nepodržane prije nego što se pozove ArchivePasswordCallback

Unosi čije se veličine ili pomaci moraju zapisati u ZIP64 polja trebaju Delphi 11 ili noviji; starije verzije Delphija odbacuju ih kao nepodržane

Ograničenja resursa, prelijevanja, stranica, piksela, DPI-ja, izlaza i otkazivanja ostaju aktivna tijekom cijele konverzije i renderiranja, dok neuspjelo objavljivanje izlaza vraća potražljivi odredišni tok

Registracija i upotreba

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;

Povezani API-ji