مرجع HotPDF

يختار THPDFDocumentHandlerRegistry معالجات قابلة للاستبدال بناءً على فحص المحتوى قبل تلميحات الامتداد أو MIME الضعيفة، ثم يحوّل المصدر المختار إلى ذاكرة تخزين مؤقت PDF واحدة غير قابلة للتغيير يتشاركها التصدير والرسم

المعالجات الاختيارية المدمَجة

الميزانيات وعزل الأعطال

يفرض مسح وحيد متحقق منه لدليل ZIP المركزي حدودًا على المداخل والبايتات المضغوطة والبايتات الموسعة وحدود كل مدخل والمسارات المكررة والمسارات غير الآمنة ونسبة الضغط قبل التحويل

يمكن لمداخل ZipCrypto الكلاسيكية الخاصة بـ PKZIP طلب بيانات اعتماد عبر ArchivePasswordCallback؛ ويستقبل الاستدعاء اسم المصدر واسم المدخل ورقم المحاولة الذي يبدأ من 1، بينما تحصر MaxPasswordAttempts إعادة المحاولات في المدى من 1 إلى 16

تبقى بيانات الاعتماد والبايتات المفكوكة جزئيًا في الذاكرة وتُمسح بين المحاولات، ويتحقق الإلغاء قبل كل استدعاء وبعده، وتفشل الحالات فشلًا مغلقًا: غياب الاستدعاءات أو رفض بيانات الاعتماد أو استنفاد المحاولات أو تشفير غير مدعوم

يُعد ZipCrypto حماية كلمة مرور قديمة وليس تشفيرًا موثَّقًا حديثًا، ويمكن أن تختلف اصطلاحات بايتات كلمات المرور غير ASCII بين مُنتِجي ملفات ZIP

تحتاج المداخل المحمية بكلمة مرور إلى Delphi 12 أو أحدث، الذي يكشف System.Zip فيه خطاف فك التشفير؛ وعند البناء بإصدار Delphi أقدم، تظل المعالجات قادرة على قراءة المداخل غير المشفرة لكنها ترفض المداخل المشفرة باعتبارها غير مدعومة قبل استدعاء ArchivePasswordCallback

تحتاج المداخل التي تتطلب أحجامها أو إزاحاتها حقول ZIP64 إلى Delphi 11 أو أحدث؛ وترفض إصدارات Delphi الأقدم هذه المداخل باعتبارها غير مدعومة

تبقى حدود الموارد وإعادة التدفق (reflow) والصفحة والبكسل و DPI والمخرجات والإلغاء نشطة طوال عملية التحويل والعرض، بينما يستعيد فشل نشر المخرجات stream وجهة قابلة للبحث (seekable)

التسجيل والاستخدام

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;

واجهات برمجة التطبيقات ذات الصلة