Необов'язкові обробники документів

THPDFDocumentHandlerRegistry обирає замінні обробники за проаналізованим вмістом перед слабкими підказками розширення чи MIME, після чого перетворює вибране джерело на один незмінний кеш PDF, спільний для експорту та рендерингу

Вбудовані необов'язкові обробники

Бюджети та ізоляція збоїв

Один перевірений скан центрального каталогу ZIP забезпечує межі записів, стиснених байтів, розгорнутих байтів, на запис, шифрування, дубльованих шляхів, небезпечних шляхів і коефіцієнта стиснення до перетворення

Класичні записи ZipCrypto PKZIP можуть запитувати облікові дані через ArchivePasswordCallback; зворотний виклик отримує назву джерела, назву запису та номер спроби з основи одиниця, тоді як MaxPasswordAttempts обмежує повторні спроби діапазоном від 1 до 16

Облікові дані та частково декодовані байти запису залишаються в пам'яті й очищуються між спробами, скасування перевіряється до та після кожного зворотного виклику, а відсутні зворотні виклики, відхилені облікові дані, вичерпані спроби чи непідтримуване шифрування зазнають безпечної невдачі

ZipCrypto — це застарілий захист паролем, а не сучасне автентифіковане шифрування, і домовленості про байти не-ASCII паролів можуть відрізнятися між виробниками ZIP

Записи, захищені паролем, потребують Delphi 12 або новішої версії, чиїй System.Zip доступний гачок розшифрування; зібрані з давнішою версією Delphi, обробники все одно читають незашифровані записи, але відхиляють зашифровані як непідтримувані до виклику ArchivePasswordCallback

Записи, чиї розміри або зсуви потребують полів ZIP64, вимагають Delphi 11 або новішої версії; давніші версії Delphi відхиляють їх як непідтримувані

Межі ресурсів, перекомпонування, сторінок, пікселів, DPI, виводу та скасування залишаються активними протягом перетворення та рендерингу, а невдала публікація виводу відновлює потоковий потік призначення із можливістю пошуку

Реєстрація та використання

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