دعم مرشحات PDF

نظرة عامة

تحدّد تدفقات PDF والصور المضمّنة ترميزها عبر أسماء المرشحات. يتعامل HotPDF أساسًا مع عائلات المرشحات التالية عند توليد المستندات أو فك ترميز محتوى خارجي.

المرشحات الشائعة

  • FlateDecode: مرشح الضغط الرئيسي للتدفقات المولَّدة، والمسار الأساسي لفك الضغط القائم على zlib
  • LZWDecode: مدعوم لسيناريوهات التوافق مع الإصدارات القديمة عبر HPDFLZW.pas
  • DCTDecode: يُستخدم لبيانات صور JPEG القياسية التي تتعامل معها مسارات تحميل الصور في HotPDF
  • CCITTFaxDecode: تدعم تدفقات الصور أحادية اللون من المجموعة 3 والمجموعة 4 المحمّلة صفوفًا أحادية وثنائية البعد، وامتدادات T.4/T.6 غير المضغوطة، ومعالجة EOFB، ومحاذاة البايت، وقطبية الإخراج، واستعادة مقيّدة للصفوف التالفة عبر عناصر DecodeParms القياسية
  • ASCIIHexDecode / ASCII85Decode / RunLengthDecode: دوال ترميز مساعدة مكشوفة في HPDFTypes.pas (_ASCIIHexEncode، _ASCII85Encode، _RunLengthEncode) منذ HotPDF v2.4.0. مفيدة عند تغليف محتوى ثنائي عشوائي لقنوات 7-bit أو لدعم تبادل صريح وفق PDF 1.7 §7.4
  • JBIG2Decode / JPXDecode: أسماء مرشحات معرَّفة في PDF 1.7 §7.4.7 / §7.4.9. يوجّه HotPDF تدفقات صور JPXDecode وملفات JPEG 2000 عبر مفكك JPEG2000 المستند إلى OpenJPEG، ثم يضمّن الناتج بالضغط الذي يختاره المستدعي. يستخدم إخراج JBIG2 ثنائي المستوى ومسارات صور JBIG2Decode المحمّلة خط أنابيب الترميز وفك الترميز الأصلي لـ JBIG2، بما يشمل قاموس الرموز والمقطع العام ومستوى الفقد وضوابط تصفية النقاط السوداء

ملاحظات عملية

  • ليست كل المرشحات مكشوفة عبر واجهة برمجة عامة واحدة؛ بعضها يُصل إليه عبر وحدات مساعدة مخصّصة للصور أو التدفقات
  • بالنسبة للمحتوى المولَّد في PDF، تظل THotPDF.Compression هي الإعداد المركزي الذي يواجه المستخدم
  • عند تحميل بيانات خارجية، يعتمد المرشح المطبَّق على صيغة الملف المصدر والصنف المساعد المستخدم
  • تجمع ملفات PDF المشفَّرة بين هذه المرشحات ومعالج الأمان؛ انظر CryptKeyLength لخيارات AES‑128 المدعومة (V=4 R=4 / CFM=AESV2) وRC4 (V=1/V=2)
  • يمكن اختيار سياسات مرشحات التشفير المحجوزة بشكل مستقل للسلاسل النصية والتدفقات العادية وتدفقات الملفات المضمّنة عبر ConfigureCryptFilterDefaults. يقبل أمن كلمة المرور القيمتين StdCF أو Identity، بينما يقبل أمن المفتاح العام القيمتين DefaultCryptFilter أو Identity. ويضيف SetStreamCryptFilter مرشح Crypt صريحًا في المقدمة أو يمسحه دون إفساد خط أنابيب فك التشفير القائم. وتجاوزات كل تدفق على حدة تتطلب قاموس تشفير بإصدار /V 4 أو أحدث
  • تحافظ أغلفة الحمولات المشفرة على بقاء تدفقات الصفحات العادية ظاهرة بينما تحمي البيانات الوصفية وبايتات الملف المضمن عبر مرشح تشفير EFOpen، مع توفير واجهات فحص وفتح صريحة للمستند المحمّل منذ HotPDF v2.715.0
  • تستخدم تدفقات المرفقات المحمية بكلمة مرور القيمة /EFF وتحصل على مرشح Crypt صريح كلما اختلف /EFF عن /StmF. أما مرشحات التدفقات الصريحة المشفرة بمفتاح عام فتفشل فشلًا مغلقًا لأنها تتطلب مظروف مستلمين خاصًا بالتدفق
  • تكشف المستندات المحمّلة سياسة /CF و/StrF و/StmF و/EFF الأصلية، بما في ذلك المرشحات المسمّاة خارجيًا الحساسة لحالة الأحرف، وقيم /CFM /None الصريحة أو المحذوفة، وأحداث المصادقة، وطول المفتاح الفعلي، عبر THPDFCryptFilterInfo. تُقرأ أطوال مرشحات المعالج القياسي V2 بالبايتات، وتُقرأ أطوال مرشحات المفتاح العام V2 بالبتات، ولا تُقبل إلا مفاتيح V2 بطول 40 بت و128 بت. وتظل حاويات تدفقات الكائنات النصية الصريحة تفكّ سلاسل الأعضاء المعبأة عبر /StrF، بينما تتجنب الحاويات المشفَّرة فكًا ثانيًا للأعضاء. تحافظ التحديثات التزايدية على السياسة المحمّلة. متاح منذ HotPDF v2.675.0
  • تُصدَر حقول النماذج التفاعلية كتعليقات توضيحية من نوع Widget يرسمها العارض؛ انظر دعم AcroForm
  • تُكشَف تعليقات ترميز النص (Highlight وUnderline وSquiggly وStrikeOut) وروابط القفز داخل المستند (GoTo وGoToR وLaunch) كدوال جديدة THPDFPage.Add*Annotation / AddGoToLink / AddGoToRLink / AddLaunchLink منذ HotPDF v2.6.0
  • إخراج DeviceCMYK متاح عبر THPDFPage.SetCMYKColor / SetCMYKFillColor / SetCMYKStrokeColor؛ وتُسجَّل فضاءات الألوان المُدارة بواسطة ICC عبر THotPDF.RegisterICCProfile وتُطبَّق عبر SetFillColorSpace / SetStrokeColorSpace + SetFillColor / SetStrokeColor منذ HotPDF v2.7.0
  • اضبط THotPDF.UseXRefStream على true قبل الحفظ لإصدار تدفق مرجعي واحد /Type /XRef مضغوط بـ FlateDecode بدلًا من تسلسل xref / trailer / startxref النصي (PDF 1.7 §7.5.8)؛ متاح منذ HotPDF v2.8.0
  • اضبط THotPDF.EnableXMPMetadata على true لإرفاق تدفق XMP من نوع /Type /Metadata /Subtype /XML بالكتالوج (PDF 1.7 §14.3.2)؛ يُبنى تلقائيًا من حقول قاموس Info، أو زوّد حزمة مكتوبة يدويًا عبر CustomXMP. متاح منذ HotPDF v2.9.0
  • بوابة إصدار PDF لكل دالة (منذ HotPDF v2.24.0). تستشير كل دالة ميزة مُقدَّمة منذ v2.4.0 فصاعدًا RequirePDFVersion قبل الإصدار؛ فمع StrictVersionLock=false (الافتراضي) تُرفَع خاصية Version الخاصة بالمستند تلقائيًا وبصمت إلى الحد الأدنى الذي تتطلبه الميزة، ومع StrictVersionLock=true يُرفَض الاستدعاء حتى يتوافق الملف المحفوظ بدقة مع مواصفة 1.3 / 1.4 / 1.5 / 1.6 / 1.7 المختارة.
  • مرمّزا التنبؤ PNG وTIFF لبيانات الصور المضغوطة بـ FlateDecode (PDF 1.7 §7.4.4.4): تطبّق _PNGPredictorEncode استدلال مرشح أدنى فرق مطلق الخاص بـ libpng (Predictor=15)، وتطبّق _TIFFPredictor2Encode الفرق الأفقي (Predictor=2). متاح منذ HotPDF v2.10.0
  • نقاط دخول PDF الموسوم (PDF 1.7 §14.7-14.8): تملأ THotPDF.Lang الحقل /Lang في الكتالوج، وتصدر EnableTaggedPDF /MarkInfo <</Marked true>> وجذر /StructTreeRoot أوليًا، وتكتب الدوال الجديدة THPDFPage.BeginMarkedContent / BeginMarkedContentMCID / EndMarkedContent معاملات تدفق المحتوى BMC / BDC / EMC. متاح منذ HotPDF v2.11.0
  • التدرجات المحورية والشعاعية (PDF 1.7 §7.10 / §8.7): تبني THotPDF.RegisterAxialGradient / RegisterRadialGradient المكدّس الكامل من Function Type 2 / Shading Type 2-3 / Pattern Type 2 وتُرجع اسم نمط ثابتًا؛ وتثبّته THPDFPage.SetFillPattern / SetStrokePattern على الصفحة. يحدد عدد مكوّنات لون البداية/النهاية DeviceGray (1) / DeviceRGB (3) / DeviceCMYK (4). متاح منذ HotPDF v2.13.0؛ وتُكشَف تدرجات Function Type 3 متعددة النقاط عبر RegisterMultiStopAxialGradient منذ v2.18.0 وRegisterMultiStopRadialGradient منذ v2.686.0
  • الصور المضمّنة (PDF 1.7 §8.9.7) عبر THPDFPage.DrawInlineImage؛ تُغلَّف البايتات الخام تلقائيًا بـ ASCIIHex عندما لا يُزوَّد أي Filter حتى يبقى تدفق المحتوى نظيفًا على 7-bit. متاح منذ HotPDF v2.18.0
  • OutputIntents (PDF 1.7 §14.11) عبر THotPDF.AddOutputIntent؛ يُلحق كل استدعاء قاموس /Type /OutputIntent بالكتالوج مع /DestOutputProfile اختياري يشير إلى ملف تعريف ICC مسجَّل. متاح منذ HotPDF v2.18.0
  • توليد تلقائي لتدفق مظهر AcroForm (PDF 1.7 §12.5.5 / §12.7.3.3 / §8.10): اضبط THotPDF.AutoFormAppearances على true قبل إضافة حقول النموذج التفاعلية، فيبني HotPDF مسبقًا Form XObject من نوع /Subtype /Form لكل عنصر /AP /N الخاص بالعنصر التفاعلي (قواميس فرعية Yes / Off للأزرار)، ويملأ موارد AcroForm الافتراضية /DR بقواميس خط غير مباشرة لـ Helvetica وZapfDingbats، ويحوّل /NeedAppearances إلى false حتى تلتزم العارضات بالتدفقات المضمّنة. متاح منذ HotPDF v2.28.0
  • أصبحت خاصيتا ViewerPreferences التاليتان /ViewArea و/ViewClip (PDF 1.4 §12.2 الجدول 152) مكشوفتين عبر خاصيتي THotPDF.ViewArea / THotPDF.ViewClip (مع عناصر المجموعة المطابقة vpViewArea / vpViewClip). تقبل كلتاهما قيم THPDFPageBoundary (MediaBox / CropBox / BleedBox / TrimBox / ArtBox) وتُكمِل تغطية HotPDF لخصائص ViewerPreferences الأربع الخاصة بحدود الصفحة في PDF 1.4. متاح منذ HotPDF v2.29.0
  • انتقالات الصفحة (PDF 1.1 / 1.5 §12.4.4): تكتب THPDFPage.SetPageTransition قاموس /Trans على الصفحة حتى تُحرِّك قارئات PDF في وضع /PageMode /FullScreen التنقل. تُكشَف أنماط PDF 1.1 (Split وBlinds وBox وWipe وDissolve وGlitter وR) وأنماط PDF 1.5 (Fly وPush وCover وUncover وFade) عبر تعداد THPDFTransitionStyle؛ كما تُكشَف الخيارات الفرعية المرافقة /Dm و/M و/Di. تكتب THPDFPage.SetPageDuration مهلة التقدّم التلقائي /Dur بالثواني. متاح منذ HotPDF v2.30.0
  • مجموعة الشفافية على مستوى الصفحة (PDF 1.4 §11.6.6 / §7.5.5): تُرفق THPDFPage.SetTransparencyGroup قاموس /Group (/Type /Group /S /Transparency) حتى تُركِّب العارضات المحتوى الحامل للشفافية بشكل يمكن التنبؤ به. اختر فضاء ألوان الجهاز عبر تعداد THPDFGroupColorSpace (DeviceGray / DeviceRGB / DeviceCMYK أو بلا فضاء)، أو استدعِ THPDFPage.SetTransparencyGroupICC باسم ملف تعريف ICC مسجَّل مسبقًا عبر THotPDF.RegisterICCProfile. تتحكم علامتا /I (Isolated) و/K (Knockout) الاختياريتان في المركِّب؛ وتُزيل THPDFPage.ClearTransparencyGroup عنصرًا مُرفَقًا سابقًا. متاح منذ HotPDF v2.32.0
  • التحديث التزايدي (PDF 1.7 ISO 32000-1 §7.5.6): يحمّل THotPDF.BeginIncrementalUpdate(SourceFile) ملف PDF موجودًا في وضع الإلحاق فقط؛ وتعلِّم استدعاءات CreateIndirect* اللاحقة الكائنات الجديدة تلقائيًا كمتغيّرة، وتعلِّم THotPDF.MarkDirty(Obj) الكائنات المحمّلة الموجودة مسبقًا لإعادة إصدارها. تكتب THotPDF.SaveIncrementalUpdate(TargetFile) بايتات المصدر الأصلية كما هي، وتُلحق فقط الكائنات المتغيّرة مع الحفاظ على أرقام كائناتها، وتُصدر قسمًا فرعيًا جديدًا من xref، وتنهي بمذيّل يحمل /Prev يشير إلى xref السابق. اجمع ذلك مع خط الأنابيب الحالي AddSignedSignatureField + PreparePDFForSigning + InsertSignatureHex لإضافة حقول توقيع لاحقة إلى مستند موقَّع بالفعل دون إبطال التواقيع السابقة (تظل هضم /ByteRange صالحة لأن أيًا من البايتات الأصلية لا يتغيّر). متاح منذ HotPDF v2.35.0
  • تطبيع اسم خط TrueType المضمَّن: يقرأ HotPDF جدول أسماء TrueType المضمَّن ويوائم /BaseFont و/FontDescriptor /FontName و/FontFamily وأسماء خطوط CID الفرعية مع الاسم من نوع PostScript الخاص ببرنامج الخط. يتجنب هذا إخفاقات Adobe Acrobat Font Capture الناتجة عن عدم تطابق بين قاموس خط PDF وحمولة TTF المضمَّنة. متاح منذ HotPDF v2.35.1
  • تقسيم خط TrueType إلى مجموعة فرعية (PDF 1.7 ISO 32000-1 §9.6.4 / §9.8.2): اضبط THotPDF.EnableFontSubsetting على true قبل BeginDoc فيعيد HotPDF بناء حمولة TrueType المضمَّنة لتحتوي فقط على الحروف المستخدمة فعليًا في المستند. تشهد المستندات اللاتينية النموذجية انخفاضًا بنحو 90% في وزن الخط المضمَّن (خط Arial بحجم 1 ميغابايت ينخفض إلى نحو 70 كيلوبايت لسطر واحد "Hello, world."). تُتَبَّع تبعيات الحروف المركّبة تكراريًا، ويُحافَظ على ترقيم GID (بحيث تستمر تدفقات محتوى Type0 / Identity-H القائمة في العمل)، ويكتسب /BaseFont الجديد تلقائيًا بادئة الأحرف الستة المطلوبة وفق المواصفة مع لاحقة "+" (مثال: /BaseFont /AAAAAA+ArialMT). معطَّل افتراضيًا؛ فعِّله اختياريًا للحفاظ على تضمين الخط الكامل في مسارات عمل التحرير. متاح منذ HotPDF v2.36.0
  • مقسِّم Compact Font Format (CFF) إلى مجموعة فرعية (PDF 1.7 ISO 32000-1 §9.7.4 / §9.9): مرافق لمقسِّم TrueType الخاص بخطوط OpenType-CFF (.otf، بتوقيع sfnt OTTO) وخطوط Type 1 / Type 1C. تعيد الدالة المصدَّرة من الوحدة HPDFSubsetCFF(CFFBytes, KeepGlyph) بناء فهرس CharStrings INDEX مع استبدال الحروف غير المحتفَظ بها بجذع endchar من بايت واحد، مع الحفاظ على ترقيم GID بايتًا ببايت. متاح منذ HotPDF v2.37.0.
  • مسار تضمين OpenType-CFF (.otf) مُوصَّل في StoreFont (PDF 1.6+ §9.7.4 الجدول 117). عندما يكون الملف الثنائي للخط المحمَّل عبر GDI حاوية sfnt من نوع OTTO، يقسّم HotPDF الجدول الفرعي المضمَّن 'CFF ' عبر HPDFSubsetOTFContainer، ويصدر برنامج الخط عبر /FontFile3 /Subtype /OpenType، ويكتب قاموس الخط الفرعي بـ /Subtype /CIDFontType0 بدلًا من /CIDFontType2. تستمر خطوط TrueType عبر مسار /FontFile2 + /CIDFontType2 الحالي دون أي تغيير في السلوك. متاح منذ HotPDF v2.38.0.
  • تقسيم روتينات CFF الفرعية من طرف إلى طرف (PDF 1.7 §9.7.4 §6 / مذكرة Adobe التقنية #5177 §3.1): يزيل مقسِّم CFF الآن العناصر غير المستخدمة من كلا فهرسي Global Subr INDEX (الواقع مباشرة بعد String INDEX في الملف الثنائي لـ CFF) وLocal Subr INDEX (المتداخل تحت Private DICT، ويُصل إليه عبر معامل Top DICT رقم 18 + معامل Private DICT رقم 19). يتبع إغلاق نقطة ثابتة واحد سلاسل callsubr (المعامل 0x0A) وcallgsubr (المعامل 0x1D) بشكل تعدّي، بحيث يُلتقط في تكرار واحد أي CharString يستدعي روتينًا محليًا يستدعي روتينًا عامًا يستدعي روتينًا محليًا آخر. يُستبدَل كل عنصر غير مستخدم بجذع return من بايت واحد، ويُعاد كتابة الفهرس في مكانه مع تصفير الفراغ المتبقي. يُكشَف هذا السلوك عبر الدالتين العامتين HPDFSubsetCFF وHPDFSubsetOTFContainer؛ وتظل ماسحات CFF منخفضة المستوى داخلية. متاح منذ HotPDF v2.39.0.
  • تقسيم CFF المفتاح بـ CID (PDF 1.7 ISO 32000-1 §9.7.4 / مذكرة Adobe التقنية #5176 §18-19): يتعرّف مقسِّم CFF الآن على معامل Top DICT ROS (12-30) الذي يميّز خط OpenType-CFF المفتاح بـ CID، ويمرّ عبر فهرس FDArray (12-36) لقواميس الخطوط الفرعية، ولكل منها Private DICT وLocal Subr INDEX خاصان به. تُحفَظ خريطة FDSelect (12-37) من الحرف إلى FD بايتًا ببايت. يتتبّع فحص إغلاق الروتينات الفرعية سياق FD الخاص بكل CharString محتفَظ به، بحيث يعلّم حرف في FD رقم 5 الروتينات المحلية في FD رقم 5 فقط - بينما تظل الروتينات العامة مشتركة بين كل الـ FD. يُعاد كتابة فهرس Local Subr الخاص بكل FD في مكانه مع طيّ العناصر غير المستخدمة إلى جذوع return من بايت واحد. تمر الآن خطوط OTF للـ CJK والهندية والعربية (مثل Adobe Fan/Gothic/Heiti/Ming/Myungjo/Song Std وKozuka Pr6N وSource Han Sans وغيرها) بخط أنابيب التقسيم الكامل بدلًا من تضمينها كما هي. متاح منذ HotPDF v2.40.0.
  • تدفقات الكائنات (PDF 1.5 ISO 32000-1 §7.5.7): اضبط THotPDF.UseObjectStreams على true إلى جانب UseXRefStream، فتحزم SaveToStream الكائنات غير المباشرة المؤهَّلة (كل شيء باستثناء التدفقات وقاموس التشفير وقاموسَي Catalog وInfo اللذين يشير إليهما المذيّل) في حاوية تدفق واحدة أو أكثر من نوع /Type /ObjStm. عندئذٍ يشير تدفق المرجع التبادلي إلى الكائنات المحزومة عبر مدخلات من النوع 2 (الحقل 2 = رقم كائن ObjStm المضيف؛ الحقل 3 = فهرس المدخلة داخل التدفق). يقلّص هذا حجم الملف بشكل كبير في ملفات PDF ذات القواميس الصغيرة الكثيرة (مستندات متعددة الصفحات وتعليقات توضيحية وعناصر AcroForm وعناصر شجرة البنية وطبقات المحتوى الاختياري) - إذ ينكمش اختبار سريع من 30 صفحة رسومية فقط من 14502 إلى 8488 بايت (أصغر بنسبة 41.5%). يتراجع بصمت إلى false عندما تكون UseXRefStream مغلقة (مدخلات النوع 2 غير قابلة للتمثيل في جدول xref النصي وفق المواصفة) أو عندما تكون Version أقل من PDF 1.5. متاح منذ HotPDF v2.41.0.
  • صورة القناع الناعم / SMask (PDF 1.4 ISO 32000-1 §8.9.5.4): تصدر THotPDF.AddImageWithSMask(Width, Height, RGB, Alpha) عنصر صورة XObject ملوّن إلى جانب عنصر صورة قناع ناعم DeviceGray بعمق 8 بت، وتوصل مرجع /SMask تلقائيًا، بحيث يحمل كل بكسل شفافية كاملة لكل قناة بدلًا من الحد الثنائي (تشغيل/إيقاف) الخاص بمسار /ImageMask القديم. يسحب التحميل الزائد المريح THotPDF.AddImageWithSMask32(Bitmap32) مستويي RGB والشفافية من TBitmap بصيغة BGRA بعمق 32 بت لتضمين PNG بشفافية بنداء واحد. تكشف AddImageWithTransparency وAddImageWithTransparency32 مسار العمل نفسه بتسمية أقرب إلى الصور. تمرّ نقطتا النداء كلتاهما عبر RequirePDFVersion(pdf14) حتى يبقى إخراج 1.3 الصارم متوافقًا. متاح منذ HotPDF v2.42.0
  • دوال مساعدة مريحة لقناع الصورة: تصدر AddImageAsMask عنصر /ImageMask ثنائيًا، وتُرفق AddImageWithMask القناع الناتج بصورة ملوّنة عبر /Mask، وتُرجع كلتاهما فهارس صور عادية لـ THPDFPage.ShowImage
  • ضوابط ضغط لكل صورة: تطبّق AddImageWithJpegQuality جودة JPEG بنداء واحد دون تغيير JpegQuality، بينما تختار AddMonochromeImageAuto وicAutoMono بين Flate أو CCITT من المجموعة 4 أو JBIG2 لإدخال صورة ثنائية البت
  • رسم نمط التبليط غير الملوَّن (PDF 1.7 ISO 32000-1 §8.6.6.1): تصدر THotPDF.RegisterTilingPattern كلا النوعين /PaintType 1 (ملوَّن) و/PaintType 2 (غير ملوَّن) منذ v2.19.0، غير أن تسلسل معاملات جانب الصفحة المطابق كان صحيحًا فقط للنوع الملوَّن. تدفع الآن ست دوال جديدة في THPDFPage - SetFillPatternRGB / SetStrokePatternRGB / SetFillPatternGray / SetStrokePatternGray / SetFillPatternCMYK / SetStrokePatternCMYK - المسار غير الملوَّن عبر تسجيل تلقائي لفضاء لون التظليل المطابق [/Pattern /BaseCS] في قاموس Resources/ColorSpace للصفحة، وإصدار تسلسل tint_components /Pn scn المطلوب وفق المواصفة. استخدم SetFillPattern / SetStrokePattern الأصليتين للنوع الملوَّن حيث تحمل البلاطة لونها الخاص. متاح منذ HotPDF v2.43.0.
  • أصبح عرض نمط التبليط الكامل يطبّق مصفوفة النمط بالنسبة إلى نظام الإحداثيات الافتراضي لتدفق المحتوى الأصل، وينفّذ كل قواعد التموضع الثلاث لـ /TilingType، ويدعم قيمًا سالبة لـ /XStep و/YStep، ويبدأ كل خلية بمسار معزول، ويطبّق درجة لون النمط غير الملوَّن الأساسية على عمليتَي التعبئة والحد كلتيهما، ويحافظ على تنفيذ مقيَّد للأنماط المتداخلة. يكشف التحميل الزائد الموسَّع لـ RegisterTilingPattern وخاصيتا THPDFTilingPatternBuilder.TilingType / Matrix الضوابط المُتحقَّق منها نفسها لملفات PDF المولَّدة. متاح منذ HotPDF v2.542.0
  • فضاء لون CIELab (PDF 1.3+ ISO 32000-1 §8.6.5.3): تبني THotPDF.RegisterLabColorSpace(Xw, Yw, Zw, aMin, aMax, bMin, bMax) مصفوفة فضاء لون مضمَّنة [/Lab << /WhitePoint /BlackPoint /Range >>]، وتخزّنها تحت اسم مولَّد تلقائيًا (Lab1، Lab2، ...) وتُرجع ذلك الاسم لاستخدامه مع خط أنابيب THPDFPage.SetFillColorSpace / SetStrokeColorSpace + SetFillColor([L, a, b]) / SetStrokeColor([L, a, b]) المعتاد. استخدم منير D50 [0.9505, 1.0, 1.089] لمسارات الطباعة المُدارة بـ ICC أو منير D65 [0.95047, 1.0, 1.08883] لعرض مكافئ لـ sRGB، ثم ارسم بقيمة L* ضمن [0..100] وa*، b* ضمن النطاق المختار (عادةً [-128..127]). متاح منذ HotPDF v2.44.0.
  • فضاء لون Separation للألوان النقطية (PDF 1.3+ ISO 32000-1 §8.6.6.4): تعلن THotPDF.RegisterSeparation(ColorantName, AlternateCS, TintC1) حبرًا نقطيًا أحادي المكوّن تقود درجته الوحيدة ضمن [0..1] تحويل درجة لون خطي من Function Type 2 يُبنى داخليًا. استخدم الاسم المُرجَع (Sep1، Sep2، ...) مع خط أنابيب SetFillColorSpace / SetStrokeColorSpace + SetFillColor([tint]) / SetStrokeColor([tint]) المعتاد. يقبل AlternateCS القيم DeviceGray أو DeviceRGB أو DeviceCMYK؛ ويزوّد TintC1 مكوّنات فضاء الألوان البديل عند درجة = 1.0. تُقبل أسماء أحبار Pantone وغيرها التي تحتوي مسافات مباشرة - إذ يهربها HotPDF إلى #20 وفق PDF 1.7 §7.3.5 عند كتابة اسم فضاء اللون. متاح منذ HotPDF v2.45.0.
  • تدفقات مظهر نص AcroForm متعددة الأسطر والمشطية (PDF 1.7 ISO 32000-1 §12.7.4.3): عندما تكون THotPDF.AutoFormAppearances مفعَّلة، تحصل حقول النص التي تتضمن قيمة Flags فيها العلم ffMultiline على Form XObject من نوع /AP /N ملتفّ الكلمات (تخطيط ريادة Td + T* + /TL، مع احترام فواصل CR / LF / CRLF واقتطاع عند عدد الصفوف المرئية). أما الحقول التي تتضمن قيمة Flags فيها العلم ffComb مع MaxLen موجبة فترسم كل حرف في خليته الخاصة متساوية العرض باستخدام مصفوفة Tm مطلقة لكل حرف. يُحافَظ على تخطيط السطر الواحد من v2.28.0 بايتًا ببايت للحقول التي لا تحمل هذه الأعلام. لا تزال الأحرف الدولية في القيمة الأولية تنتقل إلى مسار إعادة الحساب /NeedAppearances الخاص بالعارض - يظل توليد مظهر كامل بخط CID مضمَّن عملًا مستقبليًا. متاح منذ HotPDF v2.46.0.
  • خط Unicode لـ AcroForm /AP (PDF 1.7 ISO 32000-1 §12.7.2 + §12.7.4.3): تسجّل THotPDF.SetFormUnicodeFontDict(LogicalName, FontDict) خطًا مركّبًا من النوع 0 / CIDFontType2 + Identity-H يزوّده المستدعي في قاموس الموارد الافتراضية /DR/Font لـ AcroForm. بعد التسجيل، يتحوّل /DA على مستوى AcroForm، و/DA لكل عنصر Tx، والتدفق /AP /N الذي تولّده AutoFormAppearances للقيم الأولية غير ASCII في Tx، كلها إلى الاسم المنطقي؛ ويشير القاموس الفرعي /Resources/Font لـ Form XObject أيضًا إلى الخط غير المباشر نفسه حتى يبقى AP مكتفيًا ذاتيًا دون الاعتماد على تحليل /DR وقت العرض. تُرجع الدالة المساعدة المرافقة THotPDF.CreateIndirectFontDict كائن THPDFDictionaryObject فارغًا جديدًا مسجَّلًا ككائن PDF غير مباشر حتى يتمكن المستدعون من بناء قواميس خط مخصَّصة (أو أي قاموس آخر يتطلب تسلسل "N G R" غير مباشر) دون لمس الدوال الداخلية المساعدة. مرّر LogicalName فارغة وFontDict بقيمة nil للعودة إلى سلوك /Helv المقتصر على ASCII من v2.46.0. تستمر حقول Tx بـ ASCII في استخدام /Helv بإخراج مطابق بايتًا ببايت لـ v2.46.0 / v2.55.0. لا يزال دعم /AP غير ASCII متعدد الأسطر والمشطي وتشكيل RTL ثنائي الاتجاه (UAX #9 + الربط السياقي العربي) عملًا مستقبليًا. متاح منذ HotPDF v2.56.0؛ ودعم /AP غير ASCII لـ ffMultiline (بصيغة Tj سداسية عشرية UTF-16BE لكل سطر مع تخطيط ريادة Td / T* / /TL والتفاف كلمات واعٍ بـ CJK) منذ v2.57.0؛ ودعم /AP غير ASCII لـ ffComb (خلايا Tm مطلقة متساوية العرض لكل CID مع Tj لكل نقطة رمز ومعالجة أزواج بديلة UTF-16) منذ v2.58.0؛ وخاصية THotPDF.FormUnicodeRTL لاتجاه من اليمين إلى اليسار (تعكس ترتيب UTF-16 في القيمة السداسية عشرية لـ Tj في /AP مع إبقاء /V بالترتيب المنطقي؛ يشكِّل المستدعي العربية مسبقًا إلى أشكال عرض Unicode U+FB50..U+FDFF + U+FE70..U+FEFF؛ يظل دعم UAX #9 الكامل والتشكيل التلقائي عبر GSUB معلَّقًا) منذ v2.59.0.
  • عنصر Tx بنص غني في AcroForm (PDF 1.5+ ISO 32000-1 §12.7.4.3 + الملحق L): تصدر THPDFPage.AddRichTextField(FieldName, InitialValue, RichValue, DefaultStyle, Rectangle, [MaxLen], [Flags]) عنصر نص بـ /RV (نص غني بصيغة XHTML) و/DS (نمط افتراضي شبيه بـ CSS)، مع علم ffRichText عند البت 26 من /Ff مضافًا تلقائيًا بعملية OR، إضافة إلى احتياطي /V + /DV النص العادي الذي تستخدمه القارئات التي لا تحلّل /RV. يعرض Acrobat وFoxit مباشرة من /RV عندما يكون علم RichText مفعَّلًا، مستفيدَين من الخطوط الاحتياطية لخطوط Unicode المثبَّتة في القارئ - بحيث يُعرَض المحتوى متعدد البايت (CJK / السيريلية / العربية / اللاتينية المشكَّلة) بشكل صحيح دون أن يضمّن HotPDF خط CID في موارد /DR. يكتشف كل من /V و/RV تلقائيًا الإدخال متعدد البايت ويتحولان إلى ترميز سلسلة سداسية عشرية UTF-16BE (BOM بصيغة FE FF ووحدات كود من النهاية الكبرى) عند الحاجة. يظل توليد تدفق مظهر بخط CID لمسار /AP الخاص بـ HotPDF عملًا مستقبليًا؛ فالعارضات الواعية بالنص الغني لا تحتاج إليه. متاح منذ HotPDF v2.55.0.
  • فضاء لون DeviceN لمسارات عمل الأحبار النقطية متعددة المكوّنات (PDF 1.3+ ISO 32000-1 §8.6.6.5): تعمّم THotPDF.RegisterDeviceN(ColorantNames, AlternateCS, TintC1Matrix) RegisterSeparation من حبر نقطي واحد إلى N حبر. تحويل درجة اللون هو Function Type 4 بحاسبة PostScript يصدر مزيجًا خطيًا موزونًا عبر مصفوفة N×M المزوَّدة (الصف n العمود m هو مساهمة الحبر n في قناة AlternateCS رقم m عندما يكون الحبر n وحده = 1.0). يُرجع اسم فضاء لون (DevN1، DevN2، ...) يقود خط أنابيب SetFillColorSpace + SetFillColor([t0, t1, ..., t_{N-1}]) المعتاد. يقبل AlternateCS القيم DeviceGray أو DeviceRGB أو DeviceCMYK؛ وتُهرَّب أسماء الأحبار التي تحتوي مسافات إلى #20 وفق PDF 1.7 §7.3.5؛ ويشير الاسم الخاص None إلى فتحة حبر غير مستخدمة. متاح منذ HotPDF v2.47.0.
  • شبكة مثلثات بتظليل Gouraud حرة الشكل (PDF 1.3+ ISO 32000-1 §8.7.4.5.4): تعلن THotPDF.RegisterFreeFormGouraudShading(XMin, YMin, XMax, YMax, NumComponents, Vertices) تدفق /ShadingType 4 بـ /BitsPerCoordinate 16 + /BitsPerComponent 8 + /BitsPerFlag 8، وتغلّفه في عنصر Pattern Type 2 مضمَّن ضمن قاموس Resources/Pattern للصفحة، وتُرجع اسم النمط المولَّد تلقائيًا (Sh1، Sh2، ...) لخط أنابيب SetFillPattern / SetStrokePattern المعتاد. يُحزَم كل رأس كبايت علم واحد (يساوي 0 دائمًا للمثلثات المستقلة) + بايتَي X بترتيب big-endian + بايتَي Y بترتيب big-endian + NumComponents مكوّنات لون بعمق 8 بت. تقبل وسيطة NumComponents القيم 1 (DeviceGray) أو 3 (DeviceRGB) أو 4 (DeviceCMYK)؛ ويساهم كل رأس بـ 2 + NumComponents قيمة Extended في Vertices بترتيب (X, Y, c1...cN)؛ ويجب أن يكون عدد الرؤوس من مضاعفات 3. يعيد /Decode ربط الإحداثيات 16 بت بالنطاق [XMin, XMax] x [YMin, YMax] ومكوّنات اللون بالنطاق [0, 1]. تظل تظليلات الشبكة من النوع 5 (Lattice) والنوع 6 (Coons patch) والنوع 7 (tensor product) عملًا مستقبليًا. متاح منذ HotPDF v2.48.0.
  • شبكة مثلثات بتظليل Gouraud شبكية الشكل (PDF 1.3+ ISO 32000-1 §8.7.4.5.5): تعلن THotPDF.RegisterLatticeFormGouraudShading(XMin, YMin, XMax, YMax, NumComponents, VerticesPerRow, Vertices) تدفق /ShadingType 5 يرتّب الرؤوس في شبكة من M صفًا × N عمودًا، ويترك للعارض تثليث كل زوج من الصفوف المتجاورة تلقائيًا في شريط مثلثات. خلافًا لـ RegisterFreeFormGouraudShading (النوع 4)، لا يوجد بايت علم لكل رأس؛ ويغيب /BitsPerFlag من قاموس التظليل، ويشغل كل رأس 4 + NumComponents بايت فقط (بايتَا X بترتيب big-endian + بايتَا Y بترتيب big-endian + N مكوّن لون). يحمل قاموس التظليل بدلًا من ذلك عنصر /VerticesPerRow N المطلوب. استخدمها لبيانات مصدر موجودة أصلًا على شبكة عيّنات منتظمة (التضاريس، نتائج FEA، الخرائط الحرارية العلمية) - يزوّد التطبيق الرؤوس صفًا تلو الآخر ويجمّع خط الأنابيب طوبولوجيا شريط المثلثات تلقائيًا. يجب أن تكون VerticesPerRow 2 على الأقل، وأن يكون إجمالي عدد الرؤوس من مضاعفات VerticesPerRow بصفَّين على الأقل. متاح منذ HotPDF v2.49.0.
  • تظليل شبكة رقعة Coons (PDF 1.3+ ISO 32000-1 §8.7.4.5.6): تعلن THotPDF.RegisterCoonsPatchMesh(XMin, YMin, XMax, YMax, NumComponents, Patches) تدفق /ShadingType 6 من رقع Coons، كل واحدة محاطة بأربع منحنيات بيزييه تكعيبية وتحمل لونًا واحدًا لكل زاوية. يلائم العارض سطح Coons بين الحواف الأربع، مما يعطي رباعيًا حاملًا للون منحنيًا بشكل عشوائي - مفيد لتدرجات الرقائق المعدنية على مسارات منحنية، وشبكات تدرج مشتقة من SVG، وأي رباعي بحواف منحنية كان سيتطلب دون ذلك مثلثات صغيرة كثيرة للتقريب. تساهم كل رقعة بـ 12 نقطة تحكم (24 قيمة Extended من X+Y، مرتبة c1..c12 باتجاه عقارب الساعة حول الحدود مع c1 / c4 / c7 / c10 عند الزوايا الأربع والثماني المتبقية كمقابض بيزييه داخلية) تليها 4 ألوان زوايا (4 * NumComponents قيمة Extended)، بحيث تكون خطوة Patches هي 24 + 4 * NumComponents. يحمل قاموس التظليل نفس /BitsPerCoordinate 16 + /BitsPerComponent 8 + /BitsPerFlag 8 كما في النوع 4 (وخلافًا للنوع 5، يغيب /VerticesPerRow). تحمل كل رقعة مُصدَرة علمًا يساوي 0 (رقعة مستقلة)؛ ولا تُكشَف أعلام الاستمرار 1 / 2 / 3 (تشارك الحواف) في هذا التحميل الزائد المريح. متاح منذ HotPDF v2.50.0.
  • فضاء لون Separation بتحويل درجة لون LUT بالعيّنات (PDF 1.3+ ISO 32000-1 §8.6.6.4 + §7.10.2): تغلّف THotPDF.RegisterSeparationLUT(ColorantName, AlternateCS, Samples) RegisterSampledFunction حتى يتمكن المستدعون من التعبير عن منحنى درجة لون غير خطي كامل إلى فضاء الألوان البديل كتدفق بايتات مسطّح من عيّنات 8 بت (بمجموعة M عنصر) دون بناء قاموس Function Type 0 يدويًا. استخدم نسخة LUT عندما يكون انتقال اللون غير خطي - منحنيات درجات بأسلوب PANTONE Hexachrome، منحنيات كثافة مصحَّحة بالجاما، منحنيات درجات مرسومة يدويًا تطابق توصيفًا مطبعيًا، تحويلات LUT من sRGB إلى نقطي دون آلية ملف تعريف ICC الكاملة؛ ولا تزال نقطة الدخول RegisterSeparation من v2.45.0 تغطي حالة النقطة الطرفية الواحدة الخطية. يقبل AlternateCS القيم DeviceGray أو DeviceRGB أو DeviceCMYK؛ ويجب أن يكون طول Samples مضاعفًا موجبًا لـ M بما لا يقل عن 2 * M بايت حتى يكون للدالة نطاق قابل للاستيفاء، ويُستنتَج عدد نقاط الشبكة S من Length(Samples) / M. الاستيفاء الخطي هو الافتراضي وفق /Order 1 في PDF 1.7. تُرجع اسم فضاء اللون المسجَّل (Sep1، Sep2، ...) لاستخدامه مع خط أنابيب SetFillColorSpace + SetFillColor([tint]) المعتاد. متاح منذ HotPDF v2.53.0.
  • تسجيل Function Type 0 (بالعيّنات) (PDF 1.3+ ISO 32000-1 §7.10.2): تعلن THotPDF.RegisterSampledFunction(Domain, Range, Size, BitsPerSample, Samples, [Order]) تدفق /FunctionType 0 غير مباشر يعبّر عن أي تخطيط إدخال-إلى-إخراج كشبكة N-بعد منتظمة من عيّنات إخراج M-بعد، مستكمَلة بين نقاط الشبكة. استخدمها حيث تكون آلية ملف تعريف ICC مبالغًا فيها لكن يُراد LUT لون مضبوط يدويًا - منحنيات درجة لـ /TransferFunction (‏/TR في ExtGState)، تحويلات درجة بالعيّنات لـ /Separation / /DeviceN تتجاوز مسارَي Type 2 الخطي / Type 4 الحسابي، منحنيات عتبة نصف التدرج، أو أي بنية PDF أخرى تأخذ قاموس Function. Domain هو 2N مدخلة (زوج [أدنى، أقصى] واحد لكل بُعد إدخال)؛ Range هو 2M مدخلة (زوج واحد لكل بُعد إخراج)؛ Size هو N عدد نقاط شبكة؛ تقبل BitsPerSample القيم 1 أو 2 أو 4 أو 8 أو 12 أو 16 أو 24 أو 32 وفق جدول 38 من PDF 1.7؛ Samples هو تدفق العيّنات الخام المحزوم بالبتات (البت الأكثر أهمية أولًا داخل كل عيّنة، بلا حشو بين العيّنات عدا تصفير البايت الأخير، مع تغيّر الإدخال 0 الأسرع وفق قواعد ترتيب العيّنات في المواصفة)؛ تفترض Order القيمة 1 (خطي) وتقبل 3 (استيفاء بالمنحنى التكعيبي المقطّعي، منذ v2.54.0) وفق جدول 38 من PDF 1.7. يتحقق HotPDF من عدد بايتات العيّنات مقابل ceil(GridPoints * M * BitsPerSample / 8). يُرجع كائن THPDFStreamObject غير المباشر حتى يتمكن المستدعون من إرفاقه حيثما يُتوقَّع قاموس Function. متاح منذ HotPDF v2.52.0؛ ودعم /Order 3 التكعيبي + تغطية كاملة متعددة الإدخال/الإخراج منذ v2.54.0.
  • تظليل شبكة رقعة الضرب التنسوري (PDF 1.3+ ISO 32000-1 §8.7.4.5.7): تعلن THotPDF.RegisterTensorProductPatchMesh(XMin, YMin, XMax, YMax, NumComponents, Patches) تدفق /ShadingType 7 من رقع الضرب التنسوري، كل واحدة معرَّفة بشبكة كاملة 4×4 من نقاط تحكم بيزييه ثنائية التكعيب p[i][j] إضافة إلى لون واحد لكل زاوية. تمدّد RegisterCoonsPatchMesh (النوع 6) بإضافة 4 نقاط تحكم داخلية صريحة (p[1][1]، p[1][2]، p[2][2]، p[2][1]) فوق نقاط الحدود الـ 12، مما يمنح تحكمًا أدق بداخل الرقعة مما يمكن أن يعبّر عنه الملاءمة الممزوجة بأسلوب Coons. مفيدة لدورات تبادل تدرجات الشبكة من SVG ولأي عمل فني يحتاج سطح بيزييه بضرب تنسوري. تساهم كل رقعة بـ 16 نقطة تحكم (32 قيمة Extended من X+Y، مرتبة وفق ترتيب التدفق في جدول 88 من المواصفة: p[0][0..3]، p[1][3]، p[2][3]، p[3][3]، p[3][2..0]، p[2][0]، p[1][0]، ثم النقاط الداخلية الأربع p[1][1] وp[1][2] وp[2][2] وp[2][1]) تليها 4 ألوان زوايا (4 * NumComponents قيمة Extended عند p[0][0] / p[0][3] / p[3][3] / p[3][0])، بحيث تكون خطوة Patches هي 32 + 4 * NumComponents. تحمل كل رقعة مُصدَرة علمًا يساوي 0 (رقعة مستقلة). مع هذا الإصدار، تصبح عائلة تظليل الشبكة الكاملة من ISO 32000-1 §8.7.4.5 (الأنواع 4 / 5 / 6 / 7) مغطاة بالكامل. متاح منذ HotPDF v2.51.0.
  • نمط حدود التعليق التوضيحي وربط Popup (PDF 1.7 §12.5.4 / §12.5.6.14): تُرفق THPDFPage.SetAnnotationBorderStyle(Annot, Width, Style, DashPattern) قاموس /BS بنمط THPDFAnnotBorderStyle المختار (absSolid / absDashed / absBeveled / absInset / absUnderline). تصدر THPDFPage.AddPopupAnnotationFor(ParentAnnot, Rect, Open) تعليقًا توضيحيًا من نوع /Popup موصولًا في كلا الاتجاهين (الأصل /Popup إلى النافذة المنبثقة، والنافذة المنبثقة /Parent إلى الأصل) حتى يتمكن العارض من رسم موصل فقاعة الحوار. تغذّي خاصية THPDFPage.LastAnnotation الجديدة أيًا من الدالتين المساعدتين دون تغيير توقيع إجراءات Add*Annotation الموجودة. متاح منذ HotPDF v2.34.0
  • معالج أمن المفتاح العام (ISO 32000-1 7.6.4، ISO 32000-2 7.6.5): يصدر THotPDF.EnablePubKeyEncryption(seed, KeyType, EncryptMetadata) + THotPDF.AddPubKeyRecipient(envelope) قاموس تشفير /Filter /Adobe.PubSec (بقيمة /SubFilter /adbe.pkcs7.s4 للنمط V=1 RC4-40 / /adbe.pkcs7.s5 للنمط V=2 RC4-128 / V=4 AESV2). يوفر المستدعي البذرة العشوائية من 20 بايت وكتلة ثنائية واحدة من نوع PKCS#7 envelopedData لكل مستلم (تُبنى خارجيًا عبر Windows CryptoAPI أو OpenSSL أو pycryptodome). يشتق HotPDF مفتاح تشفير الملف كما هو موصوف في ISO 32000-1 بند 7.6.4.3 (SHA-1 للبذرة الملاصقة لكل مظروف) ويعيد استخدام اشتقاق المفتاح القياسي لكل كائن لتدفقات AES-128 / RC4. متاح منذ HotPDF v2.33.0
  • يفكّ عرض الصفحة المحمّلة أنواع التظليل من 4 إلى 7 بكل عروض البتات القياسية للإحداثيات والمكوّنات والأعلام، والسجلات المحاذاة بالبايت، وأعلام استمرار مثلثات النوع 4 ورقع النوع 6 / 7، ومصفوفات Function الاختيارية، وتحويل ColorSpace المُعلَن، ومعالجة BBox وBackground، وإقصاء القصّ، وتعبئات Gouraud مجمَّعة، وتجزئة تكيّفية مقيّدة لرقع Coons والضرب التنسوري. متاح منذ HotPDF v2.488.0

طالع أيضًا