THotPDF.CompressDocument

THotPDF

 

الخصائص  CompactFontSubsetting  EnableFontSubsetting

يفعّل كل خيارات الكاتب التي تجعل المستند أصغر، بمفتاح واحد

 

Delphi syntax:

property CompressDocument: Boolean;

 

C++ syntax:

__property bool CompressDocument;

 

الوصف

اضبط CompressDocument على true قبل BeginDoc لكتابة المستند التالي بأصغر حجم ممكن دون تغيير مظهره

  • ضغط FlateDecode لمحتوى الصفحات وسائر التدفقات، عند أقصى مستوى ضغط
  • cross-reference stream مع object streams، بحيث تُحزم معظم الكائنات في حاويات مضغوطة (ISO 32000-1 7.5.7 و7.5.8)؛ وتتسع كل حاوية حتى 250 كائنًا بدل 100، فالحاويات الأقل والأكبر تُضغط بشكل أفضل. ويُحفظ الحد المضبوط عبر ConfigureAdaptiveObjectStreamPacking
  • تقسيم الخطوط فرعيًا مع مجموعات فرعية مضغوطة، فيقتصر كل خط مضمن على glyphs التي يعرضها المستند

تحتاج object streams إلى PDF 1.5. وإذا كان Version أقدم يُرفع إلى PDF 1.5 ما لم يكن الإصدار مقفولًا؛ ويحتفظ إخراج PDF/A-1 بجدول cross-reference الكلاسيكي كما يشترط المعيار

 

لا يغيّر CompressDocument الإعدادات التي اخترتها. بل يعيد EndDoc قيم Compression وCompressionLevel وUseXRefStream وUseObjectStreams وEnableFontSubsetting وCompactFontSubsetting وحد الكائنات لكل حاوية ورفع الإصدار إلى ما كانت عليه بعد كتابة المستند، فيُكتب المستند التالي بدون CompressDocument كما كان من قبل. الصور تحتفظ بإعدادات ضغطها الخاصة؛ ولا يُعاد أخذ عينات لأي شيء ولا إعادة ضغطه بفقدان

 

الخاصية متوقفة افتراضيًا. مستند من ثلاث صفحات بنص إنجليزي وصيني مختلط بخطي Arial وSimSun ينخفض من نحو 10 MB إلى نحو 20 KB، ومعظم هذا التوفير يأتي من تقسيم الخطوط فرعيًا. والمقابل أن الإخراج يصبح أصعب في التحرير لاحقًا: الخطوط المقسومة فرعيًا لا تستطيع عرض محارف لا يستخدمها المستند، وobject streams المضغوطة غير مقروءة في محرر نصوص

 

مثال:

PDF.CompressDocument := True;
        PDF.BeginDoc;
        PDF.CurrentPage.SetFont('SimSun', [], 11);
        PDF.CurrentPage.TextOut(40, 80, 0, 'Compressed output');
        PDF.EndDoc;

 

انظر أيضا: CompactFontSubsetting, EnableFontSubsetting, CompressLoadedDocument