ملاحظات إصدار مكوّن PDFium لـ Delphi
سجل إصدارات ميزات PDFium Delphi Component الظاهرة للمستخدم، والإصلاحات، وتحسينات العارض، وإنشاء المستندات، وإخراج PDF/A، والعرض، وتحديثات الوثائق
الإصدار الأخير
- الإصدار الأخير: 3.137.1؛ تاريخ الإصدار:
Version 3.137.1
إصلاحات (Fixed)
- تحفظ فحوص إلغاء OpenSSL عبر الشبكة حالة CRL السابقة وسببها وخطأها الأصلي والشهادة المتأثرة دون أدلة OCSP أو مستجيب متاح، مع إبقاء تشخيص CRL المنتهية دقيقًا
Version 3.137.0
إضافات (Added)
- تدعم Free Pascal/LCL الأصلية Linux Qt6 و macOS Cocoa مع حل خطوط المنصة وتخزين مؤقت خاص وتحميل المستند وتحريره ونماذجه وحفظه وتصييره
- يدعم توقيع macOS Keychain مسارًا خاصًا بالاستعلام وتصدير سلسلة شهادات محدودًا بلا شبكة، مع توقيع ونقل طابع زمني أصليين لـ Free Pascal و Delphi
- يبلغ التصيير المتوازي مسار الوحدة الفعلي وعنوان تهيئتها ونتيجة التفريغ لكل worker، ويرفض المحمل الذي يعيد استخدام صورة PDFium موجودة
إصلاحات (Fixed)
- يحفظ ربط PDFium Unix عروض unsigned-long الخاصة بـ LP64 للـ Callback والمخازن، بما فيها قراءة تدفقات مخصصة فوق 4 GiB
- يحترم تصيير LCL الأصلي ترتيب البايتات والقنوات ويحفظ ألوان Cocoa وتصيير device-context
- تحفظ تصييرات bitmap والبلاطات والتصيير التقدمي alpha الخلفية الشفافة لـ clNone و clDefault مستقلًا عن استعلام شفافية الصفحة الأصلي
- يحدد التوقيع خوارزميات مفاتيح الشهادات صحيحة ومنها EC؛ يحفظ تحقق macOS CMS نتائج التوقيع الخارجي والطابع الزمني مستقلة ويبلغ عدم دعم RSA-PSS صراحة
- يتطلب طابع PAdES EKU حرجة وحصرية id-kp-timeStamping؛ يفحص OpenSSL سلسلة TSA الأساسية دون فرض غرض S/MIME خطأ
- تحفظ المعاملات الذرية Unix الأساس التزايدي الجديد عند فشل flush المجلد بعد الاستبدال، مع استثناء الإخراج المعتمد ونتيجة دوام غير مكتملة
تغييرات (Changed)
- تقبل futures Delphi POSIX أولوية thread الافتراضية وترفض غير المدعومة قبل بدء worker
Version 3.136.0
إضافات (Added)
- تستخدم تحويلات ICC LittleCMS الاختيارية وتحويل المستند مكونات النص والمتجهات والصور الأصلية 8-bit أو 16-bit، وتحفظ الألوان الموضعية المختارة وتبلغ غير المدعوم صراحة
- يحفظ التنقيح المركب المحتوى المدعوم في Form XObjects المتداخلة والمسارات المنحنية الممتلئة والصور المدورة أو المنعكسة أو المشوهة، بميزانيات هندسية محدودة وتقارير إزالة مفصلة
- تكشف قراءة الكائنات النشطة ميزانيات مستقلة للأجسام وتدفقات الكائنات المضغوطة قبل التجسيد والفك
الأمان (Security)
- يرفض التنقيح نص Tagged البديل و XFA والطبقات الاختيارية وقص النص وحالات الرسم غير القابلة للتحقق، بما فيها معاملات موزعة على التدفقات، لمنع تصدير دلالات حساسة غير مدعومة
Version 3.135.0
إضافات (Added)
- تبلغ مقارنة التعليقات و widgets AcroForm التغيرات مستقلة عن البكسلات، بأسماء ثابتة وخريطة صفحات صريحة والتباس وحدود طبقات قبل وبعد
- تدعم خلايا الجدول أنماط نص مختلطة وصورًا ببديل نصي وامتداد خلايا اختياريًا بين الصفحات وصفوف مجاميع وتسميات استمرار مع حفظ علاقات Tagged PDF
إصلاحات (Fixed)
- يهيئ التخطيط tagged المكتبة الأصلية قبل فحص القدرات، ويمكن أن يكون أول عملية في مكون مستند جديد
- تُضبط استبدالات الكائن الواحد مرة مقابل حدوده الأصلية، مع تطبيق الحد الأدنى الأفقي العام وتجنب تعديلات وسيطة غير لازمة
Version 3.134.0
إضافات (Added)
- يحفظ دمج التنقل الوجهات المسماة والروابط الداخلية خلال صفحات مختارة ومعاد ترتيبها ومتكررة، بسياسات تعارض وفحص معاملات صريحين
- يضيف استبدال النص المنسق مخططات مصدر موثقة ومعاينات مستقلة وإعادة استخدام الخط و fallback صريح وضبطًا أفقيًا محدودًا و rollback بعد فشل أو إلغاء
- يقبل توقيع OpenSSL مفاتيح وسلاسل مهيأة صراحة لـ RSA-PSS و RSA PKCS#1 v1.5 و ECDSA، ومنها الموقع الافتراضي خارج Windows
- يضيف تحقق OpenSSL أدلة OCSP موثقة بلا شبكة ومحدودة عبر الشبكة وهوية شهادة الفشل وتشخيصات اختيارية لكل موقع CMS
- يبين FPC macOS Security.framework التشفير وثقة السلسلة والإلغاء مستقلة مع مرتكزات صريحة وأدلة OCSP
إصلاحات (Fixed)
- يوفر استخراج URI للتعليق كامل المخزن الأصلي والـ terminator لإعادة الهدف الصحيح
Version 3.133.0
إضافات (Added)
- يدعم دمج AcroForm داخل معاملة اختيار الصفحات ورفض الحقول وإعادة تسميتها و namespaces وحقول نص واختيار مشتركة متوافقة مع عزل الموارد والمظاهر وترتيب الحساب
- يولد موفر الباركود الاختياري Code128 و QR و DataMatrix و PDF417 ويقرأ الرمادي، بتبعيات أصلية صريحة وميزانيات محدودة
إصلاحات (Fixed)
- تقرأ FormField قيم الأب الموروثة وتعتمد النص باستمرار بين widgets المشتركة مع دوام الحفظ وإعادة الفتح وفحص القراءة فقط
- تعيد مظاهر widgets الموروثة قيم الأب دون قيمة ظل، وتبطل كتابة الحقل الناجحة caches الصفحات المشتركة
Version 3.132.0
إضافات (Added)
- تكشف محاذاة الصفحات الاختيارية الإدراج والحذف والنقل، بفروق Unicode محدودة ومناطق مرئية متصلة وطبقات مقارنة قابلة للتصدير
- يحفظ دمج التنقل الهرمية والأنماط و URI والوجهات المعاد توجيهها خلال استيراد المختار والمتكرر والمعاد ترتيبه
- يدعم Tesseract OCR الاختياري تشخيص التبعيات وهندسة كلمات Unicode والإلغاء والميزانيات وفحص حفظ طبقة البحث وإعادة فتحها
الأمان (Security)
- تفحص سياسة RSA-PSS معاملات التوقيع والمفتاح المقيد بالكامل وترفض DER المشوه وقيود hash أو mask أو salt أو trailer غير المتوافقة
إصلاحات (Fixed)
- لا يرفض فحص حفظ الإشارات الأوراق بسبب فرق حالة فتح يخص الفروع فقط
Version 3.131.0
إضافات (Added)
- يقبل WatermarkStamp ملفات PDF هدف وختم ونطاق صفحات الهدف وإخراج أرقام الصفحات فقط، مع وضع متناسب للأحجام المختلطة
- يعاين MergePDF الصفحات المختارة والنطاق النهائي لكل مدخل قبل الدمج، ويدعم مدخلًا واحدًا لاستخراج الصفحات
إصلاحات (Fixed)
- يفحص MergePDF كل مصدر قبل الاستيراد ويتوقف عند غير المقروء أو النطاق الخاطئ أو فشل الاستيراد أو الإلغاء بدل حفظ دمج ناقص
- يحفظ WatermarkStamp ملفات المصدر والقالب ويكتب أرقام الصفحات حتى مع تعطيل طبقتي الختم
تغييرات (Changed)
- يركز كل مجلد أصلي على 22 سير عمل كامل، وينقل SecurityAudit و XfdfLab إلى Miscellaneous مع تصحيح المسارات والتنقل
إزالة (Removed)
- أزيل مسار AnnotationsLab الثابت؛ تبقى إنشاءات التعليقات وفحصها وتبادلها ضمن XFDF واستخراج المحتوى واختبارات API
Version 3.130.0
مُغيَّر (Changed)
- نُظِّم كل مجلد عروض native حول 24 سير عمل مكتملة، مع تسعة مواضيع API مركّزة تحت Miscellaneous وإرشاد منفصل لاختيار أول عرض توضيحي
- تظل الأمثلة المركّزة للتعليقات التوضيحية وإمكانية الوصول والخطوط والتنقّل وتصدير النص وتصيير صور الصفحات وتفضيلات الطباعة والتفاعل و XFA متاحة بمصدرها الخاص ومدخلاتها المرفقة
مُزال (Removed)
- أُزيل المشروعان المصغَّران CJKTextLab و RTLTextLab؛ ويبقى التأليف بـ Unicode متاحًا في CreatePDF، وتظل واجهات API النص المشكَّل موثَّقة في مرجع API
مُصلح (Fixed)
- لم تعد جولة API إمكانية الوصول في C++Builder تفشل عند تصدير سكربت النطق الخاص بها
- لم يعد مثال التعليقات التوضيحية في C++Builder يستخدم إزاحات مصفوفة غير صحيحة لإحداثيات التمييز
Version 3.129.0
مُغيَّر (Changed)
- أصبح كل عرض توضيحي native مكتفٍ بذاته: نُقل منطق العينات إلى المشاريع التي تستخدمه، وأُرفقت ملفات PDF العرضية مع مشاريع العرض والاستخراج المعنية، وأُزيل مجلد Demo/Shared
- تبقى جولات الميزات دون اتصال والمعاينات الحيّة والنماذج القابلة للتحرير والتقارير المعبَّأة مسبقًا والمرفقات والتنقّل وتفضيلات الطباعة وفحص XFA الساكن متاحة عند نسخ المشاريع كلٍّ على حدة
- يفتح FontProperties الآن ومقاييس الخطوط والحروف الفعلية معروضة سلفًا، ويحلّل أول كائن نصي فورًا بعد فتح مستند آخر
مُصلح (Fixed)
- وُحِّد موضع شريط التجربة وخلفيته في PDFViewer عبر نسخ native جميعها، وأصبح FontProperties يفك ارتباطه بالعارض قبل الإيقاف
Version 3.128.0
مُضاف (Added)
- أُضيف عرض توضيحي جديد من ست صفحات يعمل دون اتصال ويتضمن نصًّا حيًّا ومخططات vector وصورًا مضمَّنة وجدولًا وحقول AcroForm وعلامات مرجعية وروابط وتعليقات توضيحية ومرفقات
- أُضيفت تجارب عرض بضغطة واحدة للبحث في النص وتخطيطات الصفحتين والقراءة الليلية وفحص المستند واستكشاف النماذج في جميع إصدارات PDFViewer native
مُغيَّر (Changed)
- يفتح CreatePDF الآن معاينة حيّة من صفحتين مع بيانات وصفية قابلة للتحرير وخيارات محتوى وكائنات صور وتعليقات توضيحية حقيقية وصفحة Unicode اختيارية قبل الحفظ
- تفتح العينات المركّزة للعرض والبحث والاستخراج والنماذج والتنقل سير عمل جاهزة التعبئة؛ وتضم عينات المرفقات وتفضيلات الطباعة و XFA الساكن بيانات فعلية خاصة بكل ميزة
مُصلح (Fixed)
- تسير دورة حياة العارض ومعالجة التركيز على نحو سليم أثناء بدء التشغيل واستبدال المستند وإعادة توليد المعاينة والإيقاف
- لم يعد محرر القيم في FormFill الخاص بـ Lazarus معطَّلًا بعد تحديد أول حقل عند بدء التشغيل
- يربط SearchAndSelect مستنده على نحو صحيح، وتُدرِج تقارير الاستخراج حقول النماذج في الصفحات اللاحقة، ولم تعد تستعلم ترويسات ملفات غير متاحة للعينات المولَّدة في الذاكرة
Version 3.127.0
مُغيَّر (Changed)
- تستخدم عروض MultiPageViewer واجهات API تحديد النص والحافظة المدمجة في العارض نفسه، فيبقى التحديد متسقًا عبر تخطيطات الصفحات ويزول وضع التحديد المنفصل بالنقر المزدوج
- يربط دليل الأمثلة كل مواضيع العروض البالغة 35 بسير عملها المميزة، وتتشارك أمثلة إمكانية الوصول والاستقبال والفحص المسبق الطرفية في Delphi و Lazarus تنفيذات Pascal نفسها
مُضاف (Added)
- بات XfdfLab يحفظ ملف PDF بعد استيراد XFDF: توفّر الواجهة الرسومية في Delphi إجراء Save PDF، وتقبل النسخ الطرفية مسارًا ثانيًا صريحًا للمخرجات
مُصلح (Fixed)
- تفتح عروض MultiPageViewer في C++Builder و Lazarus دون خصائص نماذج غير مدعومة، وتفصل عروض MultiPageViewer كلها مستنداتها قبل الإغلاق
- يولّد workbench إمكانية الوصول في Lazarus مصغّرات JPEG للصفحات في تقرير المراجعة بصيغة HTML
- تنشئ عروض ExtractImages نموذجًا من صفحتين يحتوي كائنات صور مضمَّنة حقيقية، فيُنتج سير عمل الاستخراج الافتراضي أربع صور
- يحافظ نموذج الذهاب والإياب الطرفي لـ XFDF على محتويات التعليقات التوضيحية وبيانات مؤلفيها، ويرفض مسارات إخراج PDF المتعارضة أو الموجودة سلفًا قبل كتابة أي مخرجات
Version 3.126.2
مُصلح (Fixed)
- يعمل عرض XFA الكامل الآن مع إعدادات تحديد النص الافتراضية، ويستبدل النص المحدَّد أثناء الإدخال بلوحة المفاتيح، ويحترم حقول القراءة فقط وأحداث النماذج المعطَّلة، ويحدّث مقابض الصفحات المعروضة بعد تغييرات التخطيط الديناميكي
- ترفض مكتبات V8 على Windows سمات XDP المشوهة والسمات المكررة والاستخدام غير الصالح للـ namespace وإعلانات XML غير المتطابقة قبل أي تغيير في تيار XFA المحفوظ
الأمان (Security)
- يحافظ تحليل مراجعات التوقيع على ملكية محتوى الصفحة عندما تشير widgets النماذج وكائنات الـ appearance إلى مخطط الكائنات نفسه، فلا تُقبَل تعديلات الصفحات اللاحقة بوصفها تحديثات نماذج أو تعليقات توضيحية مسموحًا بها بموجب DocMDP
- تظل أقفال FieldMDP فعّالة عندما يتشارك حقل مقفَل وتعليق توضيحي كائن قيمة indirect واحدًا
Version 3.126.1
مُصلح (Fixed)
- يحدّث إعادة ترقيم صفحات XFA الديناميكي الآن
TPdf.PageCountوOnXfaPageCountChangedبإجمالي عدد الصفحات الفعلي بعد إضافة الصفحات أو حذفها، فيبقى التنقل في التطبيق المضيف متزامنًا مع تخطيط النموذج - تُحدِّث مكتبات V8 على Windows هندسة حقول الإدخال بعد تغييرات تخطيط XFA الديناميكي، فيظل النص ومناطق hit الخاصة بالإدخال متحاذيَين عندما تنتقل الحقول إلى صفحة أخرى
Version 3.126.0
مُضاف (Added)
- تحافظ مكتبات V8 المحدَّثة لـ Win32 و Win64 على تعليقات XML وتعليمات المعالجة خارج datasets الحيّة وحزم النماذج عند حفظ مستندات XFA أحادية التيار المدعومة، بما في ذلك المدخلات بترميز UTF-8 و UTF-16
مُصلح (Fixed)
- يرفض حفظ XFA أحادي التيار ترميز UTF-8 أو UTF-16 غير الصالح، والوسوم غير المكتملة، ومراجع الكيانات غير الصالحة، وتعليمات المعالجة المشوهة، بدل إعادة كتابة هذه المدخلات بصمت؛ وتبقى البُنى غير المدعومة في حزم البيانات الحيّة وإعلانات DTD و XMLDSig إخفاقات حفظ صريحة
- تعيد عمليات النسخ والقص ولصق النماذج في العارض المحاولةَ لفترة وجيزة عندما يحتفظ خيط آخر أو تطبيق آخر بلوحة الحافظة في Windows، ما يتيح زوال التنافس العابر؛ ويظل القص الفاشل محافظًا على النص الأصلي للحقل
Version 3.125.3
مُصلح (Fixed)
- تُبلِّغ مكتبات
pdfium.dllالعادية المحدَّثة لـ Win32 و Win64 الآن بالفشل عندما تفشل الكتابة الأخيرة المخزَّنة مؤقتًا لملف PDF، بما يطابق الإصلاح الذي شُحن سابقًا في مكتبات V8
Version 3.125.2
مُصلح (Fixed)
- تحافظ مكتبات V8 المحدَّثة على Windows على نص XFA المعدَّل عبر الحفظ وإعادة الفتح، بما في ذلك القيم الفارغة والمسافات البيضاء الأصلية وفواصل الأسطر والمحارف التكميلية من Unicode، لمصفوفات الحزم ومستندات XDP أحادية التيار المدعومة
- تُبلِّغ أخطاء تصدير حزم XFA وإخفاقات الكاتب المخزَّن الأخيرة عن فشل الحفظ الآن في مكتبات V8 المحدَّثة، دون مسح حالة تعديل المستند؛ وتُرفَض المستندات أحادية التيار التي تحتوي على بنى XML غير مدعومة أو توقيعات XML
- تحافظ مكتبات V8 المحدَّثة على منصة V8 و الـ isolate اللذين يزوّد بهما التطبيقُ المضيفُ صراحةً عبر تهيئة PDFium وتدميرها
- المسار الصريح في
LibraryNameيحدد الآن ذلك الـ runtime بعينه في أي وضع من أوضاع المحرك، بما في ذلكEnableV8Engine=True؛ والمسار الصريح غير الموجود يفشل بدل تحميل مكتبة أخرى مضمَّنة
Version 3.125.1
مُصلح (Fixed)
- لم يعد
ValidatePdfFilesParallelيُتلف محرك PDFium المشترك: كانت خيوط العمل تفتح المستندات وتفحصها بالتوازي، فكان بعض المستندات يفشل بأخطاء تحميل أو access violations، وكان ذلك قد يُسقط العملية بأكملها أو يعطّل عمليات PDF اللاحقة؛ وجزء PDFium من كل مستند يُعالَج الآن واحدًا تلو الآخر بينما لا يزال تقييم القواعد يعمل بالتوازي - المستند الذي يتعذر فتحه أثناء التحقق الدفعي يُبلِّغ الآن بخطأ التحميل الفعلي بدل رسالة لاحقة نصّها «لا يوجد مستند PDF نشط»
Version 3.125.0
مُضاف (Added)
- يُبلِّغ
PdfLibraryConfigurationSupportErrorعمّا إذا كان يمكن استخدامTPdfLibraryConfigurationمع بنية PDFium ذات قدرات Skia و Fontations محدَّدة
مُصلح (Fixed)
- طلب
prpSkiaعلى بنية PDFium بلا Skia، أوpfbpFontationsعلى بنية بلا Fontations، يجعل تحميل المكتبة يرفعEPdfErrorالآن بدل الوصول إلى فحص native كان يوقف العملية أو يترك PDFium مهيَّأة جزئيًا؛ ويبقى الـ configuration غير مختوم بحيث يمكن للتطبيق اختيار إعدادات أخرى وإعادة التحميل
Version 3.124.0
مُغيَّر (Changed)
- يطبّق تحقق PAdES الآن مجموعات توقيع ETSI TS 119 312 على تواقيع RSA بدل قبول كل خوارزميات RSA: يصبح
AlgorithmPolicyStatusبقيمةpcsInvalidلبصمات MD2 و MD4 و MD5، وpcsIndeterminateلبصمات SHA-1 والبصمات ذات 112-bit مثل SHA-224 التي لم تعد مقبولة للتحقق الحالي؛ وتحتفظ تواقيع SHA-1 بنتيجة سلامتها الإجمالية وتُعلَّم للمراجعة بدل رفضها - التوقيع الذي يختلف فيه
digestAlgorithmعن البصمة المثبَّتة بخوارزمية توقيعه (مثل sha256WithRSAEncryption فوق بصمة SHA-1) يُبلَّغ عنه الآن بقيمةppeiSignatureAlgorithmMismatchويفشل في فحص السلامة، وكذلك الحال مع خوارزميات توقيع RSA على مفتاح موقِّع غير RSA - تواقيع RSA التي يتعذر إيجاد شهادة موقِّعها تُبلِّغ الآن بقيمة
pcsIndeterminateبما يطابق سلوك ECDSA القائم؛ والبصمات غير المتعرَّف عليها و OID غير الخاصة بالتوقيع التابعة لـ RSA تُبلِّغ بقيمةpcsUnsupported - تواقيع RSA PKCS #1 v1.5 ذات بصمات SHA3 والمعرِّف القديم OIW sha1WithRSASignature تُعرَّف الآن بأنها تواقيع RSA
Version 3.123.0
مُضاف (Added)
- يُبلِّغ
PdfNativeRendererTypeعن الـ renderer الذي يحددهTPdfRendererPreferenceلبنية PDFium معيَّنة، حيث يحلّprpDefaultإلى Skia لـ runtimes المفعَّلة بها Skia وإلى AGG فيما عدا ذلك
مُصلح (Fixed)
- لم يعد تفعيل
BrotliEnabledأوIsolatePerDocumentفيConfigurePdfLibraryيحوّل التصيير من Skia إلى AGG عندما تُترك أفضلية الـ renderer عندprpDefault؛ وتحافظ runtimes المضمَّنة المفعَّلة بها Skia على الـ renderer الافتراضي الآن، فلم يعد مخرج الصفحة يتغير بسبب هذه الخيارات غير ذات الصلة
Version 3.122.2
مُصلح (Fixed)
- تمرّر بنى Free Pascal و Lazarus أسماء الملفات وكلمات المرور إلى PDFium بترميز UTF-8 الآن في كل مسارات التحميل (ملف، وذاكرة، وتيار مخصص، وتحميل تدريجي)، فتفتح المستندات الواقعة في مجلدات بأسماء صينية أو يابانية أو غير ASCII أخرى، والمستندات المشفَّرة بكلمات مرور غير ASCII، حتى حين لا يستخدم البرنامج وضع السلاسل UTF-8 في Lazarus
Version 3.122.1
مُصلح (Fixed)
- يُستبدل
LastLoadReportالآن عند كل تحميل فاشل: فشلActive:= Trueالذي يُبقي المكوّن غير نشط دون رفع استثناء، والاستدعاءات الفاشلة العادية لـLoadDocumentأوLoadCustomDocumentتُبلِّغ بقيمةplsFailedمع نص الخطأ، فلم تعد الشيفرة الدفعية التي تعيد استخدامTPdfواحدًا ترى الملف السابق مُبلَّغًا عنه كمحمَّل - تصف صفحة مساعدة
Activeالآن سلوك الفشل الفعلي (لا استثناء، ويبقى المكوّن غير نشط، والتفاصيل فيLastLoadReport) وأنه لا يمكن تغييرFileNameإلا أثناء كون المكوّن غير نشط
Version 3.122.0
مُضاف (Added)
- يُبلِّغ
EPdfAssocFilesErrorفيFPdfAssocFilesعن سبب تعذُّر حقنInjectAssociateFiles: لا يوجد trailer أو catalog قابل للقراءة في المصدر، أو أنTargetPageسالب أو يسمّي صفحة غير موجودة؛ ويُترَك تيار الوجهة دون تعديل
مُغيَّر (Changed)
- يرفع
SaveAsWithAssociateFilesوSaveAsWithAssociateFilesToStreamاستثناءEPdfErrorالآن عندما تقعTAssocFilesOptions.TargetPageخارج0..PageCount؛ وكانت هذه القيم تُرفَق سابقًا بـ catalog المستند بدلًا من ذلك، خلافًا للسلوك الموثَّق
مُصلح (Fixed)
- يعيد
SaveAsWithAssociateFilesوSaveAsWithAssociateFilesToStreamالقيمةFalseالآن عندما يتعذر تحليل المستند المحفوظ لأجل الحقن، بدل كتابته دون تغيير وإعادةTrueمن دون الملفات المطلوبة - لم يعد
SaveAsWithAssociateFilesيقتطع ملفًا هدفًا موجودًا قبل إنتاج المخرَج؛ والحفظ المرفوض أو الفاشل يترك الملف دون مساس
Version 3.121.4
مُصلح (Fixed)
- تُرفَق الملفات المرافقة على مستوى الصفحة (
TAssocFilesOptions.TargetPage) الآن بالصفحة الواقعة عند ذلك الموضع في ترتيب صفحات المستند؛ وكانت الملفات قد تصل سابقًا إلى صفحة مختلفة عندما تكون كائنات الصفحات مخزَّنة في الملف بترتيب مغاير لترتيب عرضها، مثلًا بعد إعادة ترتيب الصفحات أو إدراجها
Version 3.121.3
مُصلح (Fixed)
- تحافظ الملفات المرافقة المحفوظة بـ
SaveAsWithAssociateFilesعلى أسماء الملفات والأوصاف الصينية واليابانية وغير ASCII سليمةً الآن: تُكتَب/UFو/Descكسلاسل نصية PDF بترميز Unicode بدل تحويلها عبر صفحة الشيفرة ANSI للنظام (في Delphi) أو إصدارها كبايتات UTF-8 خام (في Free Pascal) - اسم الملف القديم
/Fيصبح الآن دائمًا ASCII قابلًا للطباعة وقابلًا للنقل، مع استبدال المحارف غير ASCII بـ_، فلم تعد القارئات التي تفك ترميز/Fبصفحة الشيفرة الخاصة بها تعرض mojibake
Version 3.121.2
مُصلح (Fixed)
- تُشفِّر الملفات المرافقة أنواع MIME الآن كأسماء PDF صالحة، فلم تعد القيم مثل
text/plainتنتج قواميس embedded-file مشوهة أو تمنع التحقق من PDF/A-3
Version 3.121.1
مُصلح (Fixed)
- لم تعد قراءة تعليق توضيحي وإعادة كتابة التغييرات عليه تنشئان تيارات appearance فارغة للـ rollover و down عند غياب هذين التيارين، حفاظًا على متطلبات مظهر التعليقات التوضيحية في PDF/A
Version 3.121.0
مُضاف (Added)
- يمكن لتحقق OpenSSL CMS جلب شهادات AIA الوسيطة وقوائم CRL عبر HTTP(S) عندما تكون
OnlineRetrievalمفعلة، بمهلة مشتركة وحدود مشتركة على عدد الطلبات وحجم الاستجابة؛ وتظل الشهادات المجلوبة غير موثوقة حتى تتحقق منها سلسلة الثقة المهيأة - يستخدم الجلب عبر الشبكة WinHTTP على Windows ومكتبة libcurl المتاحة على FPC Unix، ويحافظ على التحقق من شهادات HTTPS، ويكشف إعدادات النقل غير المدعومة عبر تشخيصات الإمكانات القائمة
مُصلح (Fixed)
- إعادة بناء المرجع المتبادل الكلاسيكي تخصص جدول مخرجاتها مرة واحدة وتملأ فتحات الكائنات مباشرة، فتجنب العمل التربيعي عند أرقام الكائنات sparse الكبيرة مع الإبقاء على حدود موارد المحلل وأجيال الكائنات الأحدث
- يستلزم إخراج PDF/X-1a ملف تعريف طابعة ICC v2 CMYK سليمًا بنيويًا بدل تضمين ملف تعريف RGB الافتراضي بصمت؛ وتفشل ملفات التعريف غير الصالحة قبل فتح ملف الوجهة الموجود للاستبدال
- يتحقق التحقق من PDF/X-1a من الملف التعريفي المضمَّن وتصريحه بأربعة مكونات، وتحدد تقارير preflight ملفات تعريف الإخراج غير الصالحة؛ وتتبع تسميات output-condition الافتراضية الملف التعريفي المزود مع الحفاظ على التسميات الصريحة من المستدعي
Version 3.120.4
مُصلح (Fixed)
- وضع الدفعات في demo استخراج الجداول يعالج كل PDF في المجلد من جديد: كانت نسخة المستند المشتركة تبقى نشطة عبر الملفات، فكان الملف الثاني وما بعده يرفع خطأ إسناد ويُبلَّغ عنه كفاشل؛ والآن يحصل كل مستند على نسخته الخاصة في نسخ Delphi و Lazarus و C++Builder
- مستند العينة في demo العلامة المائية يحافظ على صفحاته بترتيب إنشائها (1، 2، 3، 4) بدل تدوير الصفحة الأولى إلى النهاية عبر استدعاء إدراج عند فهرس
- يُبلِّغ demo لـ XFA و XFDF عن فشل فتح المستند كرسالة بدل استثناء غير معالج، ويستطيع demo المرفقات بدء مستند جديد بينما مستند محمَّل فعلًا، ويحرر عارض Lazarus الصورة النقطية التي يحفظها
- يطبّق demo الطباعة في Delphi الآن ضبطَي الاتجاه والطباعة على الوجهين والتدرج الرمادي والجودة و DPI على مهمة الطباعة، ويحترم عدد النسخ المختار في حوار الطباعة، ويتجاوز الصفحات التي تفشل في التصيير، ويستعيد المعاينة بعد الطباعة
- لم تعد demo التفاعلية التي يبتلع محمّلها إخفاقات الفتح تُظهر حالة تحميل مضللة، وملفات نواتج الاستخراج تحمل BOM بترميز UTF-8، ويحوّل demo طابعتا CJK و RTL الطرفية إلى UTF-8 قبل طباعة النص المستخرج، ويحلل مدخل الثقة الأعداد العشرية بمعزل عن إعدادات النظام المحلية
- اختبار الطابع الزمني لـ PAdES يؤكد الآن فعلًا أن المدقق يبلغ المستوى B-T بعد حقن طابع التوقيع الزمني، مع مستند اختبار ByteRange متسق ذاتيًا
- لم تعد اختبارات تغطية API و PDF/A تعامل أي فشل في التحميل كتخطٍّ لبيئة عندما تكون pdfium.dll محمَّلة، ويغطي اختبار انحدار جديد فك تشفير مستندات تُسلسَل قيمها النصية كسلاسل حرفية من كتاب تابعين لأطراف أخرى
Version 3.120.3
مُصلح (Fixed)
- لم يعد
EncryptDocumentBytesيُسقط كل كائن من المراجعة الأساسية عندما يكون PDF المصدر قد حُفظ تزايديًا: تُمشى سلسلة المرجع المتبادل الكلاسيكية الآن عبر/Prevمن الأحدث إلى الأقدم مع غلبة المدخلات الأحدث، ويُرفض المصدر إذا كان مشفرًا سلفًا، ويجب أن تُغلق الكلمة المفتاحيةstreamقاموسًا قبل معالجتها كبيانات تيار، ويُحد مدى الكائن الأخير بـ xref المصدر بدل أولendobjداخل بايتاته - المستندات المشفرة التي تُسلسَل قيمها النصية كسلاسل حرفية، وهي ناتجة عن كتاب من أطراف أخرى، تُفك تشفيرها الآن بدل الفشل بخطأ مصادقة
- لم يعد حقن علامات PDF/E يرقّم قاموس Info المُركَّب بالرقم نفسه الذي يُرقَّم به تيار ملف ICC الشخصي المضمَّن عندما لا يملك trailer المصدر
/Info، وهو ما كان يجعل xref التزايدي يشير/DestOutputProfileإلى الكائن الخطأ - يقارن تحقق PDF/X قيمة
pdfxid:GTS_PDFXVersionفي XMP بعد قص الفراغ الأبيض المحيط، فلم يعد XMP بصيغة عنصر محشوًا بشكل مشروع يُبلِّغ عن عدم تطابق كاذب في Info - يتعرف تحقق PDF/UA على XMP بصيغة سمة لـ
pdfuaid:part، ويفرد object streams قبل مسحاته البايتية كما يفعل مدققو المعايير الشقيقة، ويفحص بت التشفير/Pلمستندات cross-reference-stream أيضًا، ويشترط قيمة غير فارغة لـdc:title؛ ولم يعد حقن العلامات يُصدر مدخل عنوان فارغًا - لم يعد حقن علامات PDF/VT يجمع كل كائن صفحة ويعيد كتابته مرتين عندما يحمل المصدر تسلسل DPart معطوبًا رسب في التحقق بعد امتلاء قائمة الصفحات
- التوقيع بمستوى PAdES بـ B-T أو أعلى دون
TsaUrlيرفع استثناء الآن بدل إنتاج توقيع B-B بصمت، وطابع B-LTA الزمني للمستند يولّد nonce خاصته بدل إعادة إرسال nonce المستدعي - حقن طابع التوقيع الزمني في CMS يرفض مدخلات متعددة الموقّعين بدل إسقاط كل SignerInfo بعد الأول بصمت، وتصبح نسخة SignedData هي 3 مع sid من نوع subjectKeyIdentifier، وتُحذف
certReq FALSEمن طلبات الطابع الزمني وفق DER، وفشلُ نقل WinHTTP في منتصف المحتوى يُبلَّغ كخطأ نقل بدل محتوى DER مقطوع - تضمين خطوط النظام يحل وجه الخط الفعلي في TrueType Collection للعائلة المطلوبة ويستخرجه كخط مستقل، فطلب وجه غير الأول من
.ttc(مثل NSimSun) لم يعد يضمّن ويعرض الوجه 0 - يقترن
BuildToUnicodeCMapبين محارف الرسم ومحارف أزواج surrogate بشكل صحيح ويُصدر التعيينات التكميلية كمدخلات bfchar، بدل إزاحة كل مدخل بعد أول محرف astral - تُتحقق إضافات النص المشكَّل والنص CID و OCR من نتيجة إدراج الصفحة قبل تسجيل الكائن للتراجع، فلم يعد الإدراج الفاشل يستطيع ترك مقبض معلّق سيُدمَّر مرتين
- اكتشاف الكلمة المفتاحية stream في الضاغط وإصلاح ToUnicode يقبل نهاية السطر CR المفردة المسموح بها في ISO 32000-1 7.3.8.1
مُغيَّر (Changed)
- بناء حزمة Win64x التجريبية لـ C++Builder يزيل
PDFiumPas.libبنمط COFF العالق من بناء كامل سابق فلا يمكن شحن نكهتي مكتبة الاستيراد معًا، ويستثني المُثبِّت FULL ملفات التطوير المحلية فقط (packagefiles.xmlومستندات الحالة) من قاعدته الشاملة، وتثبّت بناءات demo بعد التثبيت جذرَ IDE عبر المتغيرPDFiumPas_BDS_ROOTالذي تقرؤه سكربتات البناء فعلًا
Version 3.120.2
مُصلح (Fixed)
- النص الموضوع بـ
AddTextوSetTextوتوليد التخطيط وطبقة بحث OCR يُستخرج الآن بنقاط الكود الدقيقة له من المستند الحي وبعد الحفظ على حد سواء: فالمسافات لم تعد تعود بصيغة U+00A0 والشرطات لم تعد بصيغة U+00AD تحت بناء PDFium الحالي - تُضمَّن خطوط النظام كخطوط CID مرتكزة على نقاط الكود، بمحرف CID واحد لكل محرف Unicode ومع
CIDToGIDMapصريح، فمحرف الرسم المشترك بين عدة محارف (المسافة والمسافة غير الفاصلة، والشرطة والشرطة اللينة، والأوميغا ورمز Ohm) يعود لكل منها بوفاء في أي عارض؛ والخطوط بلا جدول cmap فرعي Unicode تحتفظ بمسار التضمين السابق
Version 3.120.1
مُصلح (Fixed)
- المستندات المحفوظة بخطوط مجموعات فرعية لم تعد تفسد نصها المستخرج عند إعادة التحميل: كانت خريطة ToUnicode CMap التي يسلسلها pdfium قد تعيّن CID واحد إلى نقطتي كود مختلفتين (المسافات بصيغة U+00A0 والشرطات بصيغة U+00AD)، وكل حفظ كامل يصلح الآن تلك التعيينات المتناقضة موضعيًا مع إبقاء بنية CMap مطابقة بايتًا ببايت، فقارئ PDFium و MuPDF و qpdf جميعهم يستخرجون المحارف الأصلية
- الحفظ التزايدي والتحديثات sparse ومستندات cross-reference-stream لا تعيد عليها الإصلاحُ الكتابة أبدًا وتمر دون تغيير؛ والملفات بلا تعيين متناقض تُنسخ بايتًا ببايت
- أُعيد توليد عينة الاختبار
sample.pdfالمرفقة عبر مسار الحفظ المُصلح، وتحدد اختبارات سياسة التحميل الآن مدخلات xref ديناميكيًا بدل تثبيت إزاحات العينة في الكود
Version 3.120.0
مُضاف (Added)
- الإشارات المرجعية تُبلِّغ عن نمط نص المخطط التفصيلي: يحمل
TBookmark.Styleعلمَي المائل والغامق المقروءين عبر ربطFPDFBookmark_GetStyleالجديد، وBookmarkStyleFeaturesAvailableيخبرك إن كانت pdfium.dll المحمَّلة تصدّره - المرفقات تكشف علاقة الملف المرتبط في PDF 2.0: تقرأ
AttachmentRelationship[]والحقلRelationshipفيTPdfAttachmentMetadataوفيTPdfAnnotationAttachmentاسمَ/AFRelationshipعبر ربطFPDFAttachment_GetAFRelationshipالجديد، بحمايةAttachmentRelationshipFeaturesAvailable GetObjectRenderedStrokePatternيصيّر نمط التبليط الذي يُرسَّم به كائن المسار في صورة نقطية يملكها المستدعي عبر ربطFPDFPageObj_GetRenderedStrokePatternالجديد؛ وStrokePatternRenderingFeaturesAvailableيُبلِّغ عن التصديرTPdfLibraryConfiguration.IsolatePerDocumentيقابل علمm_IsolatePerDocumentفيFPDF_LIBRARY_CONFIGالإصدار 7 فيتمكن بناءات V8 من منح كل مستند isolate خاصًا به؛ ويرفضConfigurePdfLibraryالعلم معV8Isolateصريح
مُغيَّر (Changed)
- جميع الصادرات العامة البالغة 476 لرؤوس PDFium الحالية مربوطة؛ ونقاط الدخول الثلاث الجديدة تُحمَّل بتسامح، فتبقى عمليات النشر الأقدم ذات pdfium.dll تعمل مع إبلاغ الميزات المقابلة عن نتائج فارغة أو
nil
Version 3.119.1
مُصلح (Fixed)
- تحقق الثقة دون اتصال في Windows يقصر أيضًا جلبَ الإبطال على البيانات المخزنة مؤقتًا، ما يمنع طلبات شبكة ضمنية لـ CRL أو OCSP عندما يكون الجلب عبر الشبكة معطلًا
- إخفاقات الإبطال في Windows تحفظ خطأ ثقة السلسلة المستقل وتكشف أسباب الإبطال والتشخيصات الأصلية لنتائج PAdES وتقارير الأدلة
Version 3.119.0
مُضاف (Added)
- يكشف تحقق ثقة PAdES وتقارير الأدلة أسبابَ إبطال وأخطاءً أصلية منفصلة لتواقيع المستندات والطوابع الزمنية، بما في ذلك حقول JSON وأعمدة CSV الملحقة
Version 3.118.0
مُضاف (Added)
- نتائج التحقق من CMS تكشف
RevocationReasonوRevocationError، مع تشخيصات OpenSSL لقوائم CRL المحلية المنتهية وغير المتاحة وغير الصالحة
مُصلح (Fixed)
- تُبلِّغ OpenSSL عن الشهادات الملغاة صراحة كغير صالحة عندما تنجح ثقة السلسلة ويؤكد تحقق CRL المحلي الإبطال، مع الإبقاء على نتيجتَي التوقيع والثقة منفصلتين
Version 3.117.1
مُصلح (Fixed)
- الحفظ بإصدار صريح يقبل النماذج متعددة الصفحات الصالحة ذات تيارات المرجع المتبادل المضغوطة بالتنبؤ بدل الإبلاغ خطأً عن قسم مرجع متبادل مشوّه
Version 3.117.0
مُضاف (Added)
- يقرأ كشف الجداول الحدود والتظليل المرسومة كمستطيلات ممتلئة: الصندوق الممتلئ الذي لا تتجاوز سماكته
MaxRulingThicknessالجديدة يُعد خط ruling، والصندوق الممتلئ الأكبر يسهم بأضلاعه، فتُكتشف الجداول المصدَّرة من Word و Google Docs والمتصفحات الآن بوصفها شبكات ruled بصفوف عناوين مدمجة بدل شذرات الفراغ الأبيض. ويطفئDetectFilledRulingsهذا السلوك - تلتقط إحداثيات خطوط ruling مواقعها ضمن
RulingSnapToleranceقبل تجميع الشبكات، فيلتقي بذلك قطع الحدود الخاصة بكل خلية والحدود المزدوجة والخلايا المظللة الفاصلة بينها شريط ضيق في جدول واحد - تشارك خطوط ruling داخل form XObjects في الكشف عبر مصفوفات الكائنات المجمعة، ويتحكم في ذلك
IncludeFormXObjects - يربط
ExtractDocumentTablesشذرات الاستمرار التي تنتهي حيث ينتهي محتوى الصفحة وتستأنف حيث يبدأ محتوى الصفحة التالية، لا الشذرات التي تلامس حواف الصفحة فحسب، ويبقي الصف الفائض الواحد جزءًا من سلسلته - يُظهر TableExtractionLab
DetectFilledRulingsفي لوحة خياراته في نسخ Delphi و Lazarus و C++Builder
مُغيَّر (Changed)
- يتجاهل الكشف بالفراغ الأبيض الكلمات التي تنتمي أصلًا إلى شبكة ruled ويشترط أن يكون حد كل عمود ممرًا خاليًا من النص عبر الصفوف التي يفصلها، فلم تعد الفقرات المضبوطة الطرفين والقوائم المنقطة تُبلَّغ بوصفها جداول
- يُعامل مرشّح الاستمرار الذي يكون صفه الأول خلية واحدة بعرض الجدول كاملًا بوصفه جدولًا جديدًا له عنوان، لا بوصفه تتمة للجدول السابق
- يقبل
MinRowsالقيمة 1 للشبكات ruled؛ ويحتفظ الكشف بالفراغ الأبيض بحده الأدنى من صفّين، ويرتفع سقفMaxRulingSegmentsالافتراضي إلى 16384 لأن صناديق الحدود لكل خلية تصل بأعداد أكبر بكثير من خطوط الشبكة المرسومة - يُجمَّع نص الخلية سطرًا بسطر من صناديق الكلمات المتداخلة، فتحافظ الكلمات التي تختلف صناديق glyph لها في الارتفاع على ترتيبها من اليسار إلى اليمين
- يُبلِّغ
TPdf.AboutInfoوبيانات حزمة Lazarus الوصفية وبيانات نسخة المُثبِّت الوصفية عن 3.117.0
Version 3.116.4
مُضاف (Added)
- يكتسب TableExtractionLab معالجة دفعية للمجلدات: يشغّل
Batch folderExtractDocumentTablesعلى كل PDF في مجلد مختار، ويسرد أعداد الجداول لكل مستند، ويعلّم المستندات بلا طبقة نصية للاعتماد على OCR، ويمنع الملفات التالفة أو المقفلة من إفشال التشغيلة - يكتب
Export all CSVكل جدول يُكتشف باسم<document>-<n>-page<p>-t<i>.csvتحت مجلد فرعي باسمtablesفي التشغيلات الدفعية، أو بجوار المستند المحمَّل في ملف مفرد - يعرض منتقي الإعدادات المسبقة للكشف قيم
TPdfTableExtractionOptionsمضبوطة: Default، و Compact columns (MinColumnGap4 معAlignmentTolerance5 لمخرجات معالجات النصوص الضيقة)، و Compact + wide rows (MaxRowGapFactor6 لتباعد أسطر 1.5-2x) - يُعاد تجربة المستندات التي لا تعطي جدولًا تحت الإعداد Default مرة واحدة بـ Compact columns في الكشف الفردي والدفعي معًا، وتُبلِّغ صفوف الدفعة عن الإعداد الذي أنتج النتيجة
تم الإصلاح (Fixed)
- تفتح المعالجة الدفعية كل مستند في نسخة
TPdfخاصة به بدل إعادة تحميل مكوّن مشترك واحد، وهذا يزيل إخفاقات التحميل الصامتة التي كانت تظهر بأخطاء مكوّن غير نشط في منتصف تشغيلة مجلد
مُغيَّر (Changed)
- يُبلِّغ
TPdf.AboutInfoوبيانات حزمة Lazarus الوصفية وبيانات نسخة المُثبِّت الوصفية عن 3.116.4
Version 3.116.3
مُغيَّر (Changed)
- يكتب نموذج TableExtractionLab في سلاسل الأدوات الثلاث كلها مستندَه العيني المولَّد الآن إلى
TableExtractionSample.pdfبجوار التنفيذي للتجربة بدل إبقائه في الذاكرة فقط؛ وإذا لم يكن المجلد قابلًا للكتابة رجع المختبر إلى السلوك السابق في الذاكرة ويبلّغ عن ذلك في سطر الحالة - يُبلِّغ
TPdf.AboutInfoوبيانات حزمة Lazarus الوصفية وبيانات المُثبِّت الوصفية عن 3.116.3
Version 3.116.2
تم الإصلاح (Fixed)
- توقفت المكتبة عن الترجمة على إصدارات Delphi الأقدم. كان مساعد الـ 64-bit tick ومرمِّزا قائمة الثقة و XML الإنتاج يستدعيان
GetTickCount64وCP_UTF8من وحدات RTL لا تحملها إلا المترجمات الأحدث، وكان كاتب reflow HTML يضمّن literal نصيًا لـ CSS يتجاوز سقف 255 عنصرًا الذي تفرضه تلك المترجمات على literal واحد، وكانت عملية دمج XFA datasets تُسند بينTBytesوحقل مصفوفة ديناميكية عادية، وهو ما ترفضه المترجمات السابقة لـ XE7. يربط المترجمون الأقدم الآنGetTickCount64من kernel32 ويصرّحون بـCP_UTF8محليًا حين لا تفعل ذلك الـ RTL، ويُشحَن ورقة الأنماط كمجموعة literals قصيرة متسلسلة، ويُنسخ payload الحزمة عنصرًا بعنصر
مُغيَّر (Changed)
- يُبلِّغ
TPdf.AboutInfoوبيانات حزمة Lazarus الوصفية وبيانات المُثبِّت الوصفية عن 3.116.2
Version 3.116.1
مُضاف (Added)
- يحوّل
Demo\Delphi\TableExtractionLabوDemo\CBuilder\TableExtractionLabوDemo\Lazarus\TableExtractionLabكشف الجداول إلى سير عمل واحد. يبني المختبر مستندًا عينيًا يضم جدولًا ruled بخلايا عنوان مدمجة وجدولًا مضبوطًا بالفراغ الأبيض بلا ruling وجدولًا طويلًا ينقطع عند حد الصفحات، ثم يشغّلExtractTablesأوExtractDocumentTablesويسرد الصفوف والأعمدة والامتدادات وأعلام العنوان ووضع الكشف ودرجة الثقة ومجموعات الاستمرار - يصدّر المختبر الجدول المختار عبر
TPdfTable.ToCsvوTPdfTable.ToJson، ويعدّلDetectRuledTablesوDetectWhitespaceTablesوDetectContinuationsوMinConfidenceمن لوحة الخيارات، وينسخ التقرير الكامل إلى الحافظة - يُبلِّغ
TPdf.AboutInfoوبيانات حزمة Lazarus الوصفية وبيانات نسخة المُثبِّت الوصفية عن 3.116.1
Version 3.114.21
تم الإصلاح (Fixed)
- أبلغ التحقق من PDF/A عن مرجع ملف خارجي في أي مستند يحوي تعليقًا توضيحيًا. يحظر ISO 19005-1 §6.1.7 وجود
/Fو/FFilterو/FDecodeParmsفي قاموس كائن stream، لكن كان الفحص يبحث عن تلك الأسماء في الملف كله، و/Fهو أيضًا مفتاح أعلام التعليق الذي تشترط §6.5.3 أن يحمله كل تعليق. ينظر الفحص الآن داخل قواميس كائنات stream فقط
Version 3.114.20
تم الإصلاح (Fixed)
- حملت تواقيع RSASSA-PSS معاملات خوارزمية مشوّهة في خلفيات التوقيع الثلاث كلها. يوسم RFC 4055 الحقول الأربعة كلها في RSASSA-PSS-params؛ كان طول الـ salt يُكتب عددًا صحيحًا مجردًا يقرؤه المحلل بوصفه بداية حقل آخر، وكان حقل الخاتمة يُكتب رغم أن قيمته تساوي الافتراضي الذي يشترط DER إسقاطه. إما أن يفشل المدقّق في تحليل المعاملات أو يرجع إلى الـ salt الافتراضي البالغ 20 بايت بينما التوقيع يستخدم 32، فكانت تواقيع PSS تُرفض. أما تواقيع PKCS#1 v1.5 و ECDSA فلم تتأثر
Version 3.114.19
تم الإصلاح (Fixed)
- كان طلب طابع زمني بملخّص غير SHA-256 يبني طلبًا يصرّح بتلك الخوارزمية وهو يحمل ملخّص SHA-256، فإما أن ترفضه سلطة الطوابع الزمنية أو — الأسوأ — أن تختِم وقتيًا كما هو. لا يُحسب إلا SHA-256، فأي معرّف آخر يُرفض الآن رفضًا قاطعًا؛ ويظل المعرّف الفارغ يختار الافتراضي SHA-256. كما ربط نموذج PDF Viewer لـ Lazarus و C++Builder معالج توسعة bookmark تسميه ملف الاستمارة ولا يعرّفه الكود، وهذا يفشل عند تحميل الاستمارة؛ نُقل المعالج من نموذج Delphi
Version 3.114.18
تم الإصلاح (Fixed)
- كانت نماذج XFA Lab و XFDF Lab لـ Delphi ونموذج XFA Lab لـ Lazarus تفشل عند الإقلاع. كل واحد يبني عناصر التحكم من معالج إنشاء استماراته، لكن مورد الاستمارة لم يكن موجودًا أو مربوطًا، فيُثار عند إنشاء الاستمارة الرئيسة خطأ مورد غير موجود ولا يُنفَّذ المعالج أبدًا. تحمل الثلاثة كلها الآن ملف الاستمارة والتوجيه الذي يضمّنه
Version 3.114.17
تم الإصلاح (Fixed)
- أُسيء التعامل مع موردين اثنين أصليين حين تفشل العملية في منتصفها. كان عرض thumbnail الفاشل يحرر bitmap الهدف قبل إغلاق العرض الأصلي، وحين كان العرض يرسم مباشرة في بكسلات الـ bitmap نفسها كانت عملية التفكيك تقرأ بعدها ذاكرة حُررت بالفعل. وكان إخفاق تخصيص bitmap في
AddBitmapيترك كائن الصورة الذي أُنشئ للتو بلا مالك وبلا سبيل للوصول إليه ثانية
Version 3.114.16
تم الإصلاح (Fixed)
- أعطت قراءة نص FDF محارف خاطئة فوق
0x7E. يبدأ جدول PDFDocEncoding في الملحق D.2 من ISO 32000-1 عند0x80بعلامة bullet، لكن بدأ الإسناد عنده عند0x7F، فانزاحت الكتلة كلها حتى0x9Fموضعًا واحدًا: قُرئ الـ dagger بullet، والشرطة الطويلة بعلامة حذف، وهكذا حتى zcaron الذي سقط من النهاية تمامًا. كما كان اليورو عند0xA0مفقودًا ويعود بمسافة غير فاصلة. تُفك أسماء حقول وقيم FDF المستورد الآن ترميزها فكًا صحيحًا
Version 3.114.15
تم الإصلاح (Fixed)
- كتب التحقق من الثقة على مستند لا يمكن قراءة trailer أو catalog الخاص به بعد نهاية مصفوفة. تتخلى جولة الامتثال دون تسجيل أي توقيعات في تلك الحالة، بينما يعمل الجامع الذي يليها مباشرة على تدفق البايتات ولا يزال بإمكانه العثور على قواميس توقيعات، فكان يُكتب سجل لكل قاموس يُعثر عليه في مصفوفة لا تحوي شيئًا. يُحصر العدد الآن فيما أنتجته جولة الامتثال
Version 3.114.14
تم الإصلاح (Fixed)
- طبّق تنفيذ خطة إصلاح PDF/A خطوات كان المخطط قد منعها. تُمنع الخطوة حين يحمل المستند توقيعات وتُبطلها الخطوة ولم يسمح المستدعي بذلك؛ كان المنفّذ يفحص مستوى أمان الخطوة فقط، وهو لا يعبّر عن الشرط، فيمكن لتوقيعات مستند موقَّع أن تُبطل بإصلاح تلقائي كانت الخطة قد رفضته أصلًا. تُتخطى الخطوات الممنوعة الآن وتُعدّ تخطيًا
Version 3.114.13
تم الإصلاح (Fixed)
- أفسدت إضافة طابع زمني توقيع إلى قيمة CMS تتجاوز مجموعة شهاداتها 127 بايت — وهو كل شهادة حقيقية — النتيجة. كان المساعد الذي يحدد بداية بنية متداخلة يمشي إلى الخلف على بايتات الطول ويظن الأخير أولها، فبدأت الشريحة التي يقطعها قبل البنية المطلوبة بمراحل. يُشتق طول الترويسة الآن من طول المحتوى، وهو ما ينص عليه DER نصًا لا لبس فيه. فاتت الفحوصات الذاتية ذلك لأن شهادات تجهيزاتها صغيرة بما يكفي لاستخدام الصيغة القصيرة
Version 3.114.12
تم الإصلاح (Fixed)
- أُصدرت السمات الموقَّعة بترتيب بنائها لا مرتبة بترميزاتها، وهو ما يشترطه X.690 §11.6 على DER SET OF. لذلك حسب المدقّق الذي يعيد ترميز مجموعة السمات قبل تلخيصها — كما يفعل OpenSSL و BouncyCastle معًا — ملخّصًا مختلفًا وأعلن توقيع PAdES سليمًا غير صالح. تتحقق تواقيع تنتجها هذه المكتبة الآن في تلك الأطر؛ ولم تتأثر التحقق عبر طبقة Windows لأنها تلخّص البايتات كما وردت
Version 3.114.11
تم الإصلاح (Fixed)
- رُمِّز عدد DER INTEGER سالب أعرض من بايتي محتوى بقيمة خاطئة. يحاكي الكاتب الإزاحة الحسابية بإعادة حقن الإشارة بعد إزاحة منطقية، لكن القناع الذي استخدمه رفع كل بت فوق البايت الأدنى بدل البايت الذي أفرغته الإزاحة وحده، فوقعت القيمة المتبقية في البايتات الأخرى ضحية الكتابة. كُتبت القيمة -100000 مثلًا -34464. تُرمَّز nonce طلبات الطوابع الزمنية وكل عدد صحيح موقَّع بهذا الحجم الآن ترميزًا صحيحًا
Version 3.114.10
تم الإصلاح (Fixed)
- لم تُبلِّغ التحقق من PDF/A أبدًا عن جزء alpha الثابت من قاعدة الشفافية في ISO 19005-1 §6.4. يبني المساعد مفتاح بحثه بإضافة solidus في المقدمة، والمستدعي مرر واحدًا هو الآخر، فبحث عن
//CAولم يجد شيئًا. كما قبل فحصا alpha كلاهما النصين1و1.0حرفيًا فقط، وهو ما علّم/CA 1.00المعتم تمامًا بوصفه مخالفة؛ وتُعرف قيمة الواحد الآن أيا كانت كتابتها
Version 3.114.9
تم الإصلاح (Fixed)
- أعاد إجراء URI على مستوى الصفحة نصًا مشوّهًا. يعود المسار من الطبقة الأصلية ببايتات UTF-8 وكُتب مباشرة في سلسلة عريضة تزدوج البايتات إلى وحدات كود 16 بت وتترك بقية المخزن يحمل ما كانت عليه الذاكرة. يفك
GetPageActionURIالبايتات الآن بالطريقة نفسها التي يفك بها مسار الإجراء على مستوى المستند أصلًا
Version 3.114.8
الأمان (Security)
- على الأهداف غير Windows كانت البايتات العشوائية وراء كل مفتاح تشفير و salt ومتجه تهيئة تأتي من مولّد PRNG وقت التشغيل الذي بذرته ثابتة ما لم يستدعِ البرنامج
Randomize. أنتجت كل العملية من ثم مفتاح تشفير الملف نفسه وsaltي/UEو/OEنفسيهما وبايتات/Permsنفسها وnonceات AES-GCM نفسها، وهو ما يجعل مخرجات التشفير من بناء Free Pascal على Linux أو macOS قابلة للاسترجاع بسهولة تامة ويكرر nonce لـ GCM تحت مفتاح ثابت. تأتي البايتات الآن من/dev/urandom، ويُثار خطأ حين يكون مخزن النواة غير متاح بدل التراجع، كما فعلCryptGenRandomغير المتاح على Windows أصلًا
Version 3.114.7
تم الإصلاح (Fixed)
- مكن object stream مشوّه من أن تجعل نقاط دخول الضغط والإصلاح تقرأ بعد نهاية المخزن المفكوك. تُفحص إزاحات الأعضاء التي يصرّح بها stream الآن من حيث النطاق والترتيب التصاعدي فور تحليل الترويسة، ويُرفض عدد أعضاء مصرَّح به أكبر مما تستوعبه الترويسة قبل حجز أي ذاكرة، ويُتحقق من نطاق بايتات كل عضو قبل قص الفراغات الزائدة عنه لا بعدها
Version 3.114.6
تم الإصلاح (Fixed)
- أعطت عملية إخراج الصور المضمّنة إلى الخارج image XObject غير قابل للاستخدام. كُتب القاموس بـ solidus شارد قبل أول مفتاح فيه، ففتح اسمًا فارغًا وأزاح كل مفتاحًا فوق قيمة المفتاح السابق، وجدول اختصارات الـ inline أسند Decode إلى
GبدلD، فسقطت مصفوفة/Dواحتُسب اختصار قيمة DeviceGray مفتاحًا. تحمل الصور المسحوبة من تدفق المحتوى الآن قاموسًا سليم البنية وتحفظ مصفوفة Decode الخاصة بها
Version 3.114.5
تم الإصلاح (Fixed)
- أسند مُشكِّل HarfBuzz أطوال العناقيد إلى glyph خاطئة في المقاطع من اليمين إلى اليسار، وأعطى glyph التي تتشارك عنقودًا، كالعلامات ومكونات الليغاتور، طولًا واحدًا. يمتد
ClusterLengthلكل glyph الآن من بداية عنقوده إلى العنقود التالي بالترتيب المنطقي، في الاتجاهين، فيطابق إسناد المحارف إلى glyph للنص العربي والعبري ما يبلغ عنه خلفية Uniscribe
Version 3.114.4
تم الإصلاح (Fixed)
- مرّر نقل الطوابع الزمنية عبر libcurl خياراته العددية وقرأ كود حالة HTTP كقيم 32-بت، بينما يستقبل libcurl ويعيد
longبالمعنى C، وهو 64 بت على Linux و macOS. كان يمكن لاستعلام الحالة أن يكتب فوق البايتات الأربعة المجاورة لهدفه في المكدس، وكانت قيم الخيارات توقعت ما في النصف الأعلى من المسجّل. يستخدم كلاهما الآن عرضlongالخاص بالمنصة، فيكونFPdfTsaFpcسليمًا على أهداف LP64
Version 3.114.3
تم الإصلاح (Fixed)
- نسخت خلفية PKCS#11 بايتات تسمية كائن الرمز الخام مباشرة في سلسلة، وهو ما يضع بايتات UTF-8 على وحدات كود UTF-16 في Delphi. لذلك لم يمكن لشهادة مختارة عبر
TPdfPkcs11Options.CertificateLabelأن تطابق أبدًا، وأبلغEnumerateCertificatesعنLabelTextمشوّه. تُفك التسميات الآن كـ UTF-8 الذي يعرّفه المعيار، ويُرمَّز الـ PIN المسلَّم إلىC_Loginبترميز UTF-8 بدل تضييقه عبر صفحة كود النظام، فيصل الـ PIN غير ASCII إلى الرمز سليمًا
Version 3.114.2
تم الإصلاح (Fixed)
- كان موقِّع Keychain على macOS يسأل
SecKeyIsAlgorithmSupportedعن العملية الخاطئة عند تحديد ما إذا كان المفتاح يقبل RSASSA-PSS: كان الاستعلام يذكر عملية فك التشفير بدلًا من التوقيع، فكانت الإجابة دائمًا بالنفي وارتد كل توقيع RSA صامتًا إلى PKCS#1 v1.5. يوقّع المفتاح الذي يدعم PSS الآن بـ PSS كما يطلبTPadesSignerOptions.PaddingScheme، وتُمرَّر وسيط العملية بالعرض الذي يصرّح به الـ framework
Version 3.114.1
تم الإصلاح (Fixed)
- كانت أزواج الأقواس المتداخلة في النصوص من اليمين إلى اليسار تُحلّ في الاتجاه الخاطئ. تعالج قاعدة BD16 في UAX #9 الأزواج بترتيب ظهور أقواس الفتح فيها، والزوج الذي تحلّه N0 يصبح السياق القوي السابق للزوج الذي يفتح بعده؛ بينما كانت الأزواج تُعالج بترتيب اكتمال أقواس الإغلاق فيها، فيمكن للزوج الداخلي أن يتبع الحرف الذي يحتويه بدلًا من السياق الذي أرساه الزوج الخارجي. يتشكّل نص مثل جملة عربية أو عبرية تحتوي قوسًا داخل قوس الآن بالصورة التي يتوقعها القارئ
Version 3.114.0
مُضاف (Added)
- يتحقق
FPdfCryptoSslمن تواقيع PDF ورموز الطوابع الزمنية عبر OpenSSL، ما يسدّ آخر فجوة بين المنصات في التحقق من التوقيعات: لم يكن لدى Linux أي خلفية للتحقق من CMS إطلاقًا. يثبّتهConfigureSslCmsVerifier، وتُحلّ libcrypto بالاسم وقت التشغيل فلا يُربَط أي شيء بها، وتنجح عملية الربط مع سلسلتي 1.1 و 3.x معًا - يُقيَّم التوقيع وسلسلة الشهادات في مرحلتين منفصلتين، بحيث يُبلَّغ عن التوقيع السليم تحت سلسلة لا تصل إلى جذر ثقة بوصفه توقيعًا صحيحًا بثقة غير صالحة بدلًا من اعتباره توقيعًا تالفًا
- يضيف
ConfigureSslTrustAnchorsجذور ثقة DER إلى المخزن النظامي، ويوفرConfigureSslCrlsقوائم CRL التي قد يرجع إليها فحص الإبطال. لا يُعدّ الإبطال مُفحوصًا إلا عند وجود CRL فعلي، لأن OpenSSL لا يجلب أيًا منها بنفسه؛ ومن دون تزويد أي قائمة تُبلِّغ النتيجة عن unsupported بدلًا من تمرير سلسلة لم تُفحص - تُبلِّغ
SslAvailableوSslMissingSymbolsوSslLibraryPathوSslLibraryVersionوSslAbiLayoutعمّا نجح ربطه وما لم ينجح، ويوجّهConfigureSslLibraryPathالخلفية إلى مكتبة محددة عندما لا تجد الإعدادات الافتراضية للمنصة واحدة
Version 3.113.0
مُضاف (Added)
- يتحقق
TPdfKeychainCmsVerifierمن تواقيع PDF ورموز الطوابع الزمنية على macOS عبرCMSDecoderو SecTrust، فلم يعد التحقق من التوقيعات حصريًا لـ Windows. يثبّتهConfigureKeychainCmsVerifier، وتغطي الوحدة نفسها الآن نصفَي دعم macOS كما تفعلFPdfCryptoWinمع Windows - يؤخذ فحص الإبطال في الحسبان: عند طلبه تنضم سياسة إبطال إلى سياسة X.509 الأساسية، وإيقاف الجلب عبر الشبكة يقيّد التقييم على الاستجابات المخزنة مؤقتًا. تُطلق نقاط تقدم التحقق لمراحل التوقيع والسلسلة والجلب عبر الشبكة والإبطال تمامًا كما تُبلِّغ عنها خلفية Windows
- يُبلِّغ
KeychainVerificationAvailableعن دعم التحقق منفصلًا عن التوقيع، لأن كلًّا منهما يحتاج رموز framework مختلفة وقد يوجد أحدهما دون الآخر
Version 3.112.0
مُضاف (Added)
- يوقّع
FPdfCryptoMacبـ PAdES بهوية من Keychain على macOS، وهو مقابل مخزن شهادات Windows: تأتي الشهادة ومفتاحها الخاص من Keychain وينتجSecKeyCreateSignatureالتوقيع، فلا يغادر المفتاح مخزن النظام أبدًا. يثبّتهConfigureKeychainSignerProvider، ولا حاجة لنشر أي وحدة بجوار التطبيق كما تتطلب خلفية رموز PKCS#11 - يتبع الموقِّع الشهادة: مفتاح EC يوقّع ECDSA، ومفتاح RSA يوقّع RSASSA-PSS، وحيثما كان PSS غير متاح - macOS أقدم أو مفتاح لا يقبله - ترتد الحشوة إلى PKCS#1 v1.5 ويصرّح AlgorithmIdentifier الناتج بذلك بدلًا من الادعاء بـ PSS
- يسرد
KeychainMissingSymbolsأي رمز framework فشل حلّه، بحيث يمكن لنشر يُبلِّغ عن الخلفية كغير متاحة أن يميّز framework غائبًا عن اسم أخطأت فيه هذه الواجهة
Version 3.111.0
مُضاف (Added)
- يثبّت
ConfigurePadesCmsVerifierخلفية التحقق من CMS التي يستخدمها مُحقِّق PAdES، فلم يعد التحقق من التوقيعات والطوابع الزمنية مرتبطًا بـ Windows. تعلنIPdfCmsVerifierالعمليتين اللتين تجيب عنهما الخلفية - detached لتوقيع PDF و attached لرمز الطابع الزمني - ويُبلِّغPadesCmsVerificationAvailableعن وجود أي خلفية من عدمه
مُغيَّر (Changed)
- انتقلت سجلات نتيجة التحقق والخيارات إلى
FPdfCryptoتحت أسماءTPdfCmsVerify*. تبقى أسماءTWinCmsVerify*كأسماء بديلة، فيواصل الكود القائم العمل وتتحدث أي خلفية موصولة بالأنواع نفسها التي تستخدمها خلفية Windows - سلوك Windows بلا تغيير: في غياب مُحقِّق مثبَّت يواصل استخدام CryptoAPI، ونقاط تقدم التحقق وخيارات الإبطال ورموز الأخطاء الأصلية كما هي. وحيثما لا تجيب أي خلفية يُبلِّغ كل حكم عن unsupported بدلًا من ترك الفحص دون تحقق
Version 3.110.0
مُضاف (Added)
- يوقّع
FPdfPkcs11بـ PAdES بمفتاح يبقى داخل رمز PKCS#11. يثبّتهConfigurePkcs11SignerProviderكخلفية توقيع، وتُحمَّل الوحدة وقت التشغيل بمسارها فلا يوجد ربط ثابت، ويخدم الكود نفسه Windows و Linux و macOS. ويُنفَّذ إلى جانبه تعداد الرموز الذي تعلنه واجهةIPdfPkcs11SignerProvider: الفتحات (slots) والرموز والشهادات التي يحملها كل منها - لم يعد التوقيع خارج Windows يحتاج مزوِّدًا يوفره المضيف في الحالة الشائعة: تكفي وحدة رموز مع
TPdfPkcs11Options. وتُنتَج RSA PKCS#1 v1.5 و RSASSA-PSS و ECDSA كلها عبر الرمز - يضيف
FPdfSha1خوارزمية SHA-1 لغرض واحد: مطابقة شهادة بالبصمة التي يحملهاTPadesSignerOptions. كانت Windows تحلّ ذلك داخل مخزن الشهادات؛ أما الرمز فيعيد بايتات الشهادة ويترك المطابقة للمستدعي. وهي ليست خوارزمية تجزئة للتوقيع، ويواصل مكدس PAdES التوقيع بـ SHA-256 في كل الأحوال
مُغيَّر (Changed)
- انتقلت دوال DER المساعدة للشهادات التي تقرأ OID لخوارزمية المفتاح العام وتستخرج المُصدر والرقم التسلسلي وتعيد تغليف توقيع ECDSA الخام من خلفية Windows إلى
FPdfCmsحيث تصل إليها كل خلفيات التوقيع
Version 3.109.0
مُغيَّر (Changed)
- لم يعد محمِّل المكتبات الأصلي حصريًا لـ Windows. يكون الافتراض في
LibraryNameهوpdfium.dllأوlibpdfium.soأوlibpdfium.dylibحسب الهدف، ويُبحث عن بناء V8 بالاسم المطابق، ويمر التحميل وربط الرموز عبر المُحمِّل المحمول على Free Pascal. سلوك Windows بلا تغيير، بما في ذلك تخطيط النشر لـ Win32 و Win64 وتشخيص عدم تطابق المعمارية - تتبع مجلدات النشر على الأهداف الأخرى صيغة
<cpu>-<os>التي تستخدمها الوحدات المصرَّفة أصلًا، فتجاورDLLs/x86_64-linux/libpdfium.soملفLib/FPC/x86_64-linux. يبقى الرجوع إلى مجلد النظام حصريًا لـ Windows؛ وفي غيره يغطي مسار بحث المُحمِّل ذلك
Version 3.108.0
مُضاف (Added)
- يشكّل
TPdfHarfBuzzTextShaperالنصوص ثنائية الاتجاه والكتابات المركبة على أهداف Free Pascal التي لا تملك Uniscribe. يحل مستويات التضمين عبرFPdfBidi، ويقسّم المقاطع حسب الكتابة، ويشكّل كل مقطع عبر libharfbuzz، ويرتب المقاطع بالترتيب المرئي. ثبّته عبرConfigureTextShaper؛ وتُحلّ libharfbuzz وقت التشغيل ويُبلِّغHarfBuzzAvailableبصراحة عند غيابها - لا يعدد المشكِّل الخطوط. تقرأ Uniscribe بيانات الخط الثنائية من سياق جهاز، ولا يوجد مقابل محمول لذلك، فيمرر المضيف
TPdfFontDataResolverيربط اسم خط ببايتات ملف الخط ويُبقي تلك السياسة في موضعها الصحيح
Version 3.107.0
مُضاف (Added)
- ينفذ
FPdfBidiخوارزمية Unicode ثنائية الاتجاه (UAX #9) بلغة Pascal خالصة: يعيدPdfResolveBidiLevelsمستوى تضمين واحدًا لكل وحدة رمز UTF-16، ويطبقPdfBidiVisualOrderإعادة الترتيب L2، وتكشفPdfBidiClassOfعن Bidi_Class لنقطة رمز. تغطي القواعد P2-P3 و X1-X10 و W1-W7 و N0-N2 و I1-I2 و L1-L2، بما في ذلك بادئات العزل وأزواج الأقواس في BD16 - الوحدة محايدة تجاه المصرِّف والمنصة، وهذا ما يتيح تنسيق النص ثنائي الاتجاه حيث لا تتوفر Uniscribe. محرك التشكيل يحل المحارف لمقطع اتجاهه معروف مسبقًا، فهذه هي القطعة التي يجب أن تحدد الاتجاه أولًا
Version 3.106.0
مُضاف (Added)
- يثبّت
ConfigureTextShaperخلفية تشكيل النصوص التي يمر عبرها كل المكتبة، معActiveTextShaperوActiveTextShaperNameوClearTextShaperإلى جانبها. يستخدم كل منShapePdfTextوTPdf.AddShapedTextالمشكِّل المثبَّت الآن بدلًا من إنشاء مشكِّل Uniscribe مباشرة، فيمكن للمضيف تزويد محركه الخاص وللاختبار تزويد محرك حتمي
مُغيَّر (Changed)
- تُصرَّف
FPdfTextShapingعلى أهداف غير Windows: أصبحت خلفية Uniscribe الافتراض للمنصة بدلًا من كونها التنفيذ الوحيد، وحُصرت في بناء Windows. وحيثما لا تتوفر أي خلفية تُبلِّغ نقاط دخول التشكيل عن ذلك بدلًا من الفشل في التصريف
Version 3.105.1
الأمان (Security)
- حُدّت استجابة الطابع الزمني الآن بـ 4 MB على كلا النقلين. كانت TSA التي تواصل الإرسال تكبّر ذاكرة الاستقبال المؤقتة بلا حدود سابقًا، فتحوّل استدعاء التوقيع إلى نمو ذاكرة غير محدود
Version 3.105.0
مُضاف (Added)
- يعمل الطوابع الزمنية RFC 3161 على أهداف Free Pascal غير Windows: ترسل خلفية libcurl الجديدة TimeStampReq وتقرأ TimeStampResp، فيُبلِّغ
PadesTsaAvailableعن True ويمكن لـ PAdES B-T و B-LT و B-LTA الحصول على الرموز هناك. تُحلّ libcurl وقت التشغيل وليست اعتمادية وقت بناء؛ وعند غيابها تُبلِّغ الخلفية عن عدم التوفر تمامًا كما تفعل خلفية WinHttp. تواصل Windows استخدام WinHttp ولا تتأثر - ما زال التوقيع على تلك الأهداف يحتاج مادة مفاتيح لا تملكها المكتبة: زوّدها عبر
ConfigurePadesSignerProviderمعIPadesSignerProvider(أوIPdfPkcs11SignerProviderللمفاتيح المدعومة برموز)، إذ إنFPdfCryptoWinحصري لـ Windows
Version 3.104.1
مُضاف (Added)
- أصبح نموذج مختبر فحص XFA متاحًا الآن على Lazarus أيضًا، فيمكن ممارسة مجسات قدرات XFA وسرد الحزم وتصديرها والرجوع البديل في
OnXfaRuntimeMissingمن بناء LCL
Version 3.104.0
مُغيَّر (Changed)
- تُصرَّف المكتبة بلا تحذيرات يمكن تجنبها على Free Pascal 3.2: تقرأ التوقيتات الداخلية نبضة المللي ثانية من
GetTickCount64بدلًا من الاستدعاء المهمل ذي 32 بت، وتُستبدل دوال الوصول المهملة لكلمة تحكم SSE بـGetMXCSRوSetMXCSR، ويُصرَّح بنوع أساس إزاحة بصمة المحتوى صراحة فلا يعوقه فحص مدى وقت التصريف، وتُقارن عناوين خطوط المسح كمؤشرات بلا إشارة عند فحص مصفوفة نقاط لمعرفة تخطيطها من الأعلى إلى الأسفل
Version 3.103.1
تم الإصلاح (Fixed)
- تحتفظ البيانات الوصفية للمستند المنقولة إلى XMP بمحارفها غير ASCII على Free Pascal: تُحوَّل العناوين والمؤلفون والموضوعات والكلمات المفتاحية وأسماء المنشئ التي تصل إلى
SaveAsPdfAوSaveAsPdfUaوSaveAsPdfEوSaveAsPdfXوSaveAsPdfRوSaveAsPdfVTالآن عبر صفحة رموز السلسلة بدلًا من النسخ بايتًا ببايت، فتبقى حزمة البيانات الوصفية UTF-8 صالحة كما يتطلب ISO 19005-1 6.7.2 حتى عندما لا يعمل برنامج المضيف على صفحة رموز UTF-8 - يستخدم تصدير XFDF ورحلات ذهاب وإياب بيانات الإنتاج الوصفية وتحليل XML لقوائم الثقة التحويل الصحيح لصفحة الرموز نفسه، فلم يعد النص المتنقل بين
TBytesوstringيعتمد على صفحة رموز المضيف
Version 3.103.0
مُضاف (Added)
- يحلل
TPdfEuropeanTrustedListقوائم الثقة الأوروبية الموثَّقة، ويعيد تحميل الذاكرة المؤقتة الموقعة بمجاميع تحقق عبر الموثِّق نفسه، ويقبل مصادر تحديث يوفرها المستدعي، ويكشف جذور الثقة الحالية، ويقيّم خدمات التوقيع المؤهلة في وقت تحقق مطلوب - يطبق
TPadesTrustValidationOptions.QualifiedTrustEvaluatorسياسة ثقة مؤهلة دون اتصال على كل موقِّع مُتحقق منه دون إضافة وصول شبكي إلى مُحقِّق PAdES
Version 3.102.0
مُضاف (Added)
- تضيف
BeginIncrementalSaveوCommitIncrementalSaveالآن مراجعات موثَّقة إلى مستندات مشفرة بـ AES-256 مع الحفاظ على مرجع/Encryptالأصلي ومعاملات الأمان وأجيال الكائنات الدقيقة والبايتات السابقة
مُغيَّر (Changed)
- يمسح overload تزامن الملف الكتابة بشكل دائم ويعيد فتح ملف مساعد في المجلد نفسه بصرامة، ويتحقق من حدّ مراجعته، ويستبدل الهدف استبدالًا ذريًا مع التراجع عن الجلسة عند أي فشل
Version 3.101.0
مُغيَّر (Changed)
- يحفظ
SaveAsRedactedالآن الأجزاء الآمنة من النصوص المتقاطعة جزئيًا والمسارات المستطيلة والصور المحاذية للمحاور، ثم يزيل أسماء الموارد التي لم يعد تُشار إليها من نطاقات الصفحة و Form XObject و pattern والمظهر والموارد المتداخلة
Version 3.100.0
مُغيَّر (Changed)
- يختار
OptimizeImagesالآن إعادة أخذ العينات box أو bilinear أو bicubic أو Lanczos أو bilevel بناءً على المقياس وصنف المحتوى والتفاصيل المقيسة والجودة التي يحددها المستدعي، مع ترشيح واعٍ بالقناة ألفا وميزانية ذاكرة عمل صارمة
Version 3.99.0
مُضاف (Added)
- يستورد
GraftPdfAcroFormحقول AcroForm الهرمية وعناصر الواجهة والمظاهر وترتيب الحساب والموارد الافتراضية والإجراءات والقيم عبر تعيينات صفحات صريحة وسياسات تعارض - يعيد
TPdfCrossDocumentGraftMapاستخدام الكائنات غير المباشرة المستوردة بحسب هوية المصدر مع الحفاظ على الحلقات والمراجع المشتركة وأجيال المصدر الدقيقة ودلالات الفشل في المعاملات
Version 3.98.0
مُضاف (Added)
- ينشئ
TPdfOutlineEditorعناصر المخطط التفصيلي وينقلها ويحذفها وينسقها ويوسعها ويعيد توجيهها، ويعيد تعيين الوجهات الصريحة عبر نتائج خطة الصفحات، ويضيف مراجعة تزايدية موثقة باستقلال
Version 3.97.0
مُضاف (Added)
- يقرأ
TPdfTreeEditorبنيات PDF من نوع NameTree و NumberTree العشوائية ويحقق منها ويحدّثها ويوازنها ويقسمها ويدمجها ويسلسلها ويحفظها تزايديًا مع الحفاظ على المراجع غير المباشرة القابلة لإعادة الاستخدام والقيم الخام للإدخالات
Version 3.96.0
مُضاف (Added)
- يوفر
TPdfParserResourceBudgetسياسة عملية واحدة آمنة خيطيًا للتكرار والرموز والكائنات والبايتات المفكوكة ونسبة التوسع والتخصيص والمواعيد النهائية عبر محللات PDF المخصصة، مع لقطات ثابتة لكل عملية وافتراضات قابلة للتهيئة
Version 3.95.0
مُغيَّر (Changed)
- يتحقق
ValidatePdfXالآن من قواميس PDF/X النشطة والبيانات الوصفية و output intents والخطوط والميزات المحظورة والشفافية وفضاءات الألوان وصناديق الصفحات عبر قراءات متفرقة محدودة على مستندات غير مشفرة ذات xref صالح
Version 3.94.0
مُغيَّر (Changed)
- يتحقق
ValidatePdfRالآن من قواميس PDF/R النشطة والصفحات ومرشحات الصور والبيانات الوصفية وعلامات التذييل عبر قراءات متفرقة ونافذية محدودة على مستندات غير مشفرة ذات xref صالح
Version 3.93.0
مُغيَّر (Changed)
- يتحقق
ValidatePdfEالآن من قواميس PDF/E النشطة والبيانات الوصفية و output intents والنماذج والميزات المحظورة عبر قراءات متفرقة محدودة على مستندات ذات xref صالح
Version 3.92.0
مُغيَّر (Changed)
- يجري
ValidatePdfVTالآن تحليلًا متقدمًا لنطاق XObject المتكرر ورؤيته وتغليفه واستخدام النماذج المتداخلة عبر قراءات متفرقة محدودة على مستندات ذات xref صالح
Version 3.91.0
مُضاف (Added)
- يستطيع
TPdfSparseDictionaryReaderحلّ الجيل النشط لكائن وفك تدفق مباشر ضمن حد بايتات يوفره المستدعي
مُغيَّر (Changed)
- يستخدم
ValidatePdfVTالآن قراءات متفرقة محدودة لفحوص بيانات PDF/VT الوصفية و DPart و OutputIntent و Info والصفحة والقواميس العادية على مسار xref الصالح المعتاد
Version 3.90.0
مُضاف (Added)
- يبقي
TPdfSparseDictionaryReaderفهرس xref متفرق وفهرس تدفقات كائنات مفتوحًا واحدًا لقراءات قواميس الكائنات غير المباشرة المتكررة المحدودة
مُغيَّر (Changed)
- يتحقق
InjectPdfVTMarkersالآن من تسلسل DPart الهرمي القائم لـ PDF/VT ويحافظ عليه بقراءات مصدر محدودة، بينما تواصل التسلسلات المشوهة المسار عبر إعادة البناء البديلة
Version 3.89.0
مُضاف (Added)
- يعيد
ReadPdfSparsePageDictionariesهويات كائنات الصفحات وبايتات القاموس المحدودة بترتيب شجرة الصفحات عبر فهرس الكائنات المتفرق
مُغيَّر (Changed)
- يبني
InjectPdfVTMarkersالآن التسلسل الهرمي لـ DPart في PDF/VT ويضيف كائنات العلامات بقراءات مصدر محدودة عندما لا يحتوي PDF المحفوظ على تسلسل هرمي لـ DPart أصلًا
Version 3.88.0
مُضاف (Added)
- يقرأ
ReadPdfSparseCatalogSubDictقاموسًا فرعيًا للكتالوج مباشرًا أو غير مباشر عبر فهرس الكائنات المتفرق، ويستخدمه حقن علامات PDF/UA من أجلMarkInfoوViewerPreferences
مُغيَّر (Changed)
- يحل
InjectPdfUaMarkersالآنMarkInfoوViewerPreferencesفي الكتالوج عبر بحث متفرق ويضيف مراجعة PDF/UA بقراءات مصدر محدودة على مسار xref المعتاد
Version 3.87.0
مُضاف (Added)
- يبث
AppendPdfSparseUpdateمراجعة متفرقة واحدة فوق PDF محفوظ: بايتات المصدر كما هي، وأجسام كائنات يوفرها المستدعي عند إزاحات مسجلة، وكتلة xref/trailer تزايدية واحدة مترابطة عبر/Prev - يوحد
NormalizePageViewRectركنين من فضاء الصفحة المعيَّنين في المستطيل المرئي المقيَّد بحدود الصفحة، أو يُبلِّغ عن عدم ظهور أي شيء من الصفحة - يبني حقن علامات PDF/E كائن Info جديدًا مع
/ISO_PDFEVersionعندما لا يحتوي المستند المصدر على قاموس Info
مُغيَّر (Changed)
- يحل حقن علامات PDF/E و PDF/X و PDF/R الآن الكتالوج و Info و trailer عبر بحث متفرق ويضيف المراجعات عبر
AppendPdfSparseUpdateبقراءات مصدر محدودة على مسار xref المعتاد - يُبلِّغ الاستدعاء العكسي
FFI_GetPageViewRectلتعبئة النماذج الآن عن الجزء الفعلي المرئي من الصفحة فيTPdfViewالمرتبط بدلًا من صندوق الصفحة كاملًا دائمًا، مع الرجوع إلى أبعاد الصفحة للمستندات عديمة الواجهة - يُبلِّغ
TPdf.AboutInfoوبيانات حزمة Lazarus الوصفية وبيانات المُثبّت الوصفية الآن عن Version 3.87.0 بشكل متسق
تم الإصلاح (Fixed)
- كانت نقاط التحكم لمقاطع المسار المكشوفة منذ ربط
FPDFPath_GetBezierControlPointsتُترك بلا قيم دائمًا: التصدير الأصلي لا يجيب إلا عن فهرس النهاية لكل تكعيبية ثلاثية الإدخالات، فيجري الاستعلام الآن مرة واحدة لكل منحنى وتحمل الإدخالات الثلاثة نقاط تحكم المنحنى
Version 3.86.0
مُضاف (Added)
- تكشف
ReadPdfSparseRevisionInfoحقائق محدودة عن أحدث مراجعة والكتالوج والتشفير ومعرف المستند والبنية الموسومة لمعالجات ما بعد التدفق - يحفظ
ComposePdfSparseUpdateIdمعرفات المستند للتحديث التزايدي أو يشتقها دون تجسيد PDF المصدر كاملًا
مُغيَّر (Changed)
- يحل
InjectPdfAMarkersالآن الكتالوج و trailer عبر بحث متفرق، وينسخ المدخلات الكبيرة في دفعات محدودة، ويضيف مراجعة PDF/A دون تخصيص مصفوفة بايتات بحجم المصدر على مسار xref المعتاد - يحافظ حقن علامات PDF/A على نمط الإخراج الكلاسيكي أو xref-stream وأجيال الكتالوج و Info ومعرفات trailer وسلوك رفض التشفير وقواعد تخفيض المستوى A
Version 3.85.0
مُضاف (Added)
- يقبل
SanitiseActiveContentPdfStreamمساحة عمل تقليم يملكها المستدعي لتخزين مخصص محدود أو مدعوم بالقرص
مُغيَّر (Changed)
- يحدّث تعقيم المحتوى النشط الآن الكتالوج و trailer عبر بحث متفرق ونوافذ محلل محدودة ونسخ نطاقات بحجم ثابت بدلًا من قراءة PDF كاملًا في مصفوفة بايتات واحدة على مسار xref المعتاد
- يطبق
TPdf.SaveAsSanitisedالآنSaveMemoryLimitوSaveTemporaryDirectoryعلى مساحة عمل التقليم ويُبلِّغ عن تشخيصات طفحها
تم الإصلاح (Fixed)
- يزيل
StripMetadata=Trueالآن مرجع/Infoمن trailer حتى عندما لا يحتوي الكتالوج على إدخال/Metadata
Version 3.84.0
مُغيَّر (Changed)
- يعيد
TPdf.PdfVersionالآن استخدام حالة محلل PDFium عبرFPDF_GetFileVersionبدلًا من إعادة تحليل PDF المصدر كاملًا - تقرأ استعلامات الإصدار على الأكثر ترويسة PDF ذات الثمانية بايتات لمنع تصريح كتالوج مشوه من خفض الإصدار الفعلي
Version 3.83.0
مُغيَّر (Changed)
- يحل
PageLabelledPdfStreamالآن الكتالوج ويحدّثه عبر نوافذ تدفق محدودة وفهرس الكائنات الكسول المتفرق - ينسخ إخراج تسميات الصفحات ملفات PDF المصدر الكبيرة في نطاقات بحجم ثابت بدلًا من تخصيص مصفوفة بايتات للمستند كاملًا على مسار xref المعتاد
Version 3.82.0
مُغيَّر (Changed)
- تقرأ
ApplyDefaultOpenActionالآن المراجعات الكلاسيكية و xref-stream والهجينة وتدفقات الكائنات عبر فهرس كائنات كسول متفرق، بما في ذلك المستندات ذات أرقام كائنات عالية جدًا - تستخدم معالجة إجراء الفتح الافتراضي نوافذ بحجم ثابت ونسخ نطاقات محدودة بدلًا من تحميل PDF كاملًا في مصفوفة بايتات واحدة
Version 3.81.0
مُضاف (Added)
- يقبل
PostProcessSavedPdfثلاث مساحات عمل قابلة للبحث يملكها المستدعي لأسقف ذاكرة مخصصة ومعالجة مدعومة بالقرص
مُغيَّر (Changed)
- يطبق
TPdf.SaveAsعلى كل مساحات عمل معالجة ما بعد الحفظSaveMemoryLimitوSaveTemporaryDirectoryويسرد طفحها في التشخيصات - يستخدم إصلاح xref-stream التزايدي الأصلي نوافذ نهاية وقواميس بحجم ثابت مع نسخ نطاقات محدودة بدلًا من مصفوفات بايتات للملف كاملًا وإعادة تخصيص متكررة للملف بأكمله
Version 3.80.0
مُضاف (Added)
- يلتقط
ReadAttachmentMetadataأسماء المرفقات وأوصافها وأنواع MIME الفرعية وأحجامها بعد الفكوك وقابلية قراءتها في تعداد أصلي واحد محدود - تكتب
ExtractAttachmentsToStreamsدفعة إلى تدفقات يملكها المستدعي مع حدود بايتات لكل ملف وإجمالية وقطع كتابة قابلة للتهيئة وإلغاء ونتائج لكل عنصر
مُغيَّر (Changed)
- يحتفظ الاستخراج الدفعي بمرفق مفكوك واحد على الأكثر في ذاكرة PDFium Delphi Component بدلًا من تجسيد كل حمولة في الدفعة
Version 3.79.0
مُضاف (Added)
- ينسق
TPdfCacheGovernorوTPdf.CacheBudgetBytesواستعلامات الاستخدام لكل نوع والقياسات البعدية ذاكرة التخزين المؤقت المحتفَظ بها عبر ميزانية بايتات LRU عامة واحدة آمنة خيطيًا - يمكن لـ
TPdfTileCacheوذاكرة خطوط النظام على مستوى العملية الانضمام إلى محافظ يختاره المستدعي مع محاسبة دقيقة لبايتات الصور النقطية والخطوط
مُغيَّر (Changed)
- تتنافس مشاهد الصفحات المُحللة والصور المصغرة وبيانات البنية ولقطات النص ولقطات كائنات الصفحات الآن تحت ميزانية
TPdfافتراضية قدرها 256 MiB مع الحفاظ على حدود عدد الإدخالات القائمة لديها - تبقى مشاهد الصفحات النشطة مثبتة حتى يكتمل التصيير، وتستخدم مشاهد الصفحات الأصلية غير الشفافة عبئًا مقدَّرًا صريحًا لأن PDFium لا يكشف أي API قابل للتهيئة لإجمالي بايتات الذاكرة المؤقتة
Version 3.78.0
مُضاف (Added)
- تُبث أوامر التخطيط عبر
TPdfLayoutPagedPlanوTPdfLayoutDocument.BuildPagedPlanوTPdf.GeneratePagedLayoutإلى تخزين قابل للبحث يختاره المستدعي ويُجسَّد صفحة واحدة في كل مرة
مُغيَّر (Changed)
- يمكن للتخطيطات المولدة الكبيرة أن تفيض أوامرها إلى تخزين مؤقت، وتحتفظ بذاكرة صفحات LRU قابلة للتهيئة، وتستعيد مقاطع الترويسة والتذييل غير المتجاورة، وتحرر النص الملتف بعد كل عنصر تدفق
Version 3.77.0
مُضاف (Added)
- تضيف
TPdfLayoutTableوالصفوف والخلايا وخيارات الجداول جداول عبر الصفحات بمسارات شبكية محسومة وتسميات توضيحية وصفوف ترويسة متكررة وصفوف متن قابلة للتقسيم وروابط وحدود قابلة للتهيئة
مُغيَّر (Changed)
- تحافظ الجداول الموسومة المولدة على بنية Table / TR / TH / TD متصلة واحدة عبر الصفحات، وتُبقي مجموعات امتداد الصفوف ذرية، وتربط خلايا البيانات بمعرفات الترويسات تلقائيًا
Version 3.76.0
مُضاف (Added)
- تضيف
TPdfLayoutConstraintsوSetLastItemConstraintsإلى التخطيطات المولدة التحكم في التمسك معًا والالتصاق بالتالي وفواصل الصفحات المادية قبل / بعد والتحكم في أسطر الأرملة / اليتيمة بقيم قابلة للتهيئة
مُغيَّر (Changed)
- يعيد
BuildPlanاستخدام كل نتيجة نص ملتف للتنبؤ بترقيم الصفحات وإصدار الأوامر، فيمنع الالتصاق بالتالي من تكرار قياس النص
Version 3.75.0
مُضاف (Added)
- يُبلِّغ
TPdf.InspectPdfUaUnicodeCoverageعن أدلة محدودة على مستوى الكائنات لتعيينات Unicode المباشرة واستبدالاتActualTextوأخطاء التعيين وقيم Unicode المفقودة وكائنات المصدر غير المحلولة
مُغيَّر (Changed)
- يعيد
TPdf.ValidatePdfUaالآن استخدام مسح محارف واحد بنطاق كائن يستبعد محارف Artifact والمولدة ويمنعActualTextلكائن نص واحد من حجب المحتوى المجاور
Version 3.74.0
مُغيَّر (Changed)
- يُبلِّغ
ValidatePdfUaPageContentTaggingوTPdf.ValidatePdfUaالآن عنpvuaiArtifactInStructureTreeعندما تطالب MCID في شجرة البنية بكائن صفحة من نوع Artifact، بما في ذلك عناصر ترقيم الصفحات المعتمدة على المسارات - يقصّ مسح محتوى صفحات PDF/UA المسار الآن فقط بعد اكتشاف كليٍّ من المحتوى الحقيقي غير الموسوم والاحتواء غير الصالح لـ Artifact، مع الحفاظ على التغطية عبر الصفحات دون تكرار الفحوص المكتملة
Version 3.73.0
مُضاف (Added)
- يُبلِّغ
TPdf.InspectPdfUaLanguageCoverageعن أدلة محدودة من كائنات الصفحات وسلاسل البنية لمقاطع اللغة الطبيعية، بما يشمل اللغة الفعالة ومصدر التصريح و MCID وفهرس البنية ومقتطفات النص - يحل
ResolvePdfUaEffectiveLanguageتصريحات لغة المحتوى الموسوم وأقرب سلف بنيوي والكتالوج بأدلة صلاحية صريحة
مُغيَّر (Changed)
- يُبلِّغ
TPdf.ValidatePdfUaالآن عنpvuaiNaturalLanguageUncoveredعندما يخلو النص غير الـ Artifact أو سلاسل الوصولية من تصريح/Langفعال صالح
Version 3.72.0
مُضاف (Added)
- يُبلِّغ
TPdf.InspectPdfAMetadataعن أدلة تكافؤ منمَّطة لكل حقل لتعيينات ISO 19005-1 الثمانية كلها من Info إلى XMP، بما يشمل القيم الفارغة الصريحة وفشل تحليل التواريخ - يصلح
TPdf.NormalizePdfAMetadataخصائص XMP المعينة غير المتطابقة فقط مع الحفاظ على نطاقات الأسماء غير المرتبطة وبدائل اللغات غير الافتراضية
مُغيَّر (Changed)
- يُبلِّغ
TPdf.ValidatePdfAالآن عنpvaiInfoXmpValueMismatchعندما تختلف قيم Info المفكوكة عبر PDFium عن قيم XMP المنمَّطة بشكل صحيح بعد مقارنة تواريخ واعية بـ Unicode أو بالمنطقة الزمنية
Version 3.71.0
مُضاف (Added)
- يعيد
InspectPdfVT2sStreamأدلة شروط الطباعة لكل جزء MIME في PDF/VT، بما يشمل هوية OutputIntent وأصل ملف التعريف المضمّن أو MIME وبصمات ICC وحقائق الترويسة وأعداد صفحات وسجلات DPart - يوفر
FPdfIccProfileفحصًا محدودًا لترويسة ICC وجدول الوسوم مع دعم MD5 و SHA-256 وفضاء الألوان والإصدار وفئة الجهاز ومعرف ملف التعريف ووصف ملف التعريف متعدد اللغات
مُغيَّر (Changed)
- يحل التحقق من PDF/VT-2s الآن مرفقات ICC MIME السابقة عبر مواصفات ملفات URL من نوع
DestOutputProfileRefويتحقق منCheckSumوICCVersionوProfileCSوProfileNameوفئة الجهاز وفضاءات ألوان الطباعة المسموحة - تتطلب كل أجزاء PDF/VT الآن OutputIntent واحدًا معتبرًا من نوع
GTS_PDFXوتغليف ملف تعريف مضمّن أو خارجي مناسب لقاعدة PDF/X وشرط طباعة مميزًا واحدًا نفسه، بينما تبقى مرفقات PDF/X فقط خارج مقارنات PDF/VT - يتعرف التحقق من PDF/VT-2 في ملف واحد الآن على
DestOutputProfileRefبوصفه ملف تعريف وجهة خارجي بدلًا من الإبلاغ عنه كمفقود
Version 3.70.0
مُغيَّر (Changed)
- يفحص التحقق من PDF/VT الآن
GTS_ScopeوGTS_XIDوGTS_EnvوGTS_Encapsulatedمباشرة على كل XObject بدلًا من السماح لقواميس قريبة أو متداخلة بإشباع متطلبات التلميحات - يحل نطاق
RecordالآنRecordLevelمن قاموسDPartRootغير المباشر، بينما يُرفض نطاقStreamفي ملفات PDF/VT-1 - تتحقق تدفقات محتوى الصفحات و Form XObject المفكوكة الآن من رؤية موارد
Doوأعداد تكراراتSingleUseوملكية سجلات المستلمين عبر الموارد الموروثة الفعالة والتسلسل الهرمي لـ DPart - تتحقق XObjects المغلفة الآن من الشكل البولياني والنطاق الموصى به و
Intentالخاص بـ Image ومجموعات الشفافية المعزولة وفضاءات ألوان المزج والاعتماديات المباشرة أو المتداخلة للمحتوى الاختياري
Version 3.69.0
مُغيَّر (Changed)
- يرفض التحقق من PAdES الآن إدخالات
ContentsوByteRangeوSubFilterوFilterوTypeالمكررة بدلًا من قبول القيمة التي يختارها المحلل - يستخدم اكتشاف التوقيعات الآن مسحًا خطيًا للقواميس واعيًا بالتدفقات، ويتعرف على رموز أسماء PDF المهرَّبة، ولا يمكن توجيهه خلف قاموس متداخل مغلق موضوع قبل
ByteRangeالحقيقي - يتطلب التحقق من
ByteRangeللتوقيع الآن أن تطابق الفجوة المستثناة رمزContentsالسداسي العشري المباشر تمامًا مع السماح ما زال بمراجعات تزايدية لاحقة - تتطلب قواميس التوقيع الآن
Filterواحدًا قيمته اسم وتفرض تراكبات متسقة من النوع والمرشح الفرعيSigأوDocTimeStamp
Version 3.68.0
مُضاف (Added)
- يربط
TPdf.BuildPadesEvidenceReportحقائق توقيعات PDFium وسياسة CMS وحالة الثقة والطابع الزمني وبصمات مسار الشهادات وتغطية DSS/VRI وقرارات المراجعات اللاحقة لكل توقيع - يصدّر
TPadesEvidenceReportأدلة توقيعات متعددة محدودة بصيغة JSON أو CSV ويُبلِّغ عن قياسات المصدر والتوقيع و DSS والمراجعة والبتر
مُغيَّر (Changed)
- يسجل التحقق من ثقة PAdES الآن هويات SHA-256 لشهادة الموقِّع ومسار شهادات Windows المرتب مع الحفاظ على التحقق دون اتصال افتراضيًا
- تعيد عملية توليد الأدلة استخدام التقاط واحد محتفَظ به لبايتات المصدر عبر تحليلات الامتثال والثقة و DSS والمراجعة بدلًا من نسخ PDF الأصلي إلى تدفق جديد لكل مرحلة
Version 3.67.0
مُضاف (Added)
- ينشئ
TPadesSignatureFieldOptionsأسماء حقول توقيع قابلة للتهيئة وقيم بذور مطلوبة وقوائم أسباب وإشهادات قانونية وشهادات موقِّعين مقبولة وأقفال حقول - يمكن للتوقيع المحلي والبعيد إنشاء تواقيع موافقة أو إصدار بشهادة مع تحويلات
FieldMDPوDocMDPمن ISO 32000-1
مُغيَّر (Changed)
- تحفظ تواقيع الإصدار بالشهادة أذونات الكتالوج القائمة مع تسجيل التوقيع الجديد عبر
/Perms /DocMDP
Version 3.66.0
مُضاف (Added)
- تكتب
RenderPageBandedToStreamمخرجات PNG أو TIFF مباشرة إلى تدفق المستدعي مع ارتفاع شريط وضغط PNG وحدود بايتات إخراج قابلة للتهيئة - تغذي
RenderPageBandedToEncoderشرائح الصفحات المتتالية إلى مرمزات يحددها المستدعي وتعيد قياسات الشريط والصف والذاكرة والإكمال والإخراج
تم الإصلاح (Fixed)
- يحافظ
RenderPageBandedالآن على هندسة تصيير الصفحة كاملة ويقص كل شريط مطلوب بدلًا من إعادة تحجيم الصفحة كاملة في كل شريط
Version 3.65.0
مُضاف (Added)
- يُبلِّغ
TPdfParallelRenderReportالآن عن حجم المصدر وذروة الذاكرة الملتقطة وخلفية التخزين ونوع الدعم المشترك
مُغيَّر (Changed)
- يشارك
RenderPagesParallelالمصدر الملتقط عبر ذاكرة غير قابلة للتغيير أو تعيين ملف للقراءة فقط أو وصول عشوائي عبرFPDF_LoadCustomDocumentبدلًا من تخصيص مصفوفة بايتات ثانية للمستند كاملًا - تبقى مصادر التصيير المتوازي المفيضة تحت
SaveMemoryLimitولم تعد تتطلب إعادة تحميل PDF كاملًا في ذاكرة العملية القابلة للعنونة
Version 3.64.0
مُضاف (Added)
- يضم
ImportImposedالآن overload يعيدTPdfImpositionExecutionReportمع أعداد الاستيراد الأصلي والمصادر الفريدة والفتحات الفارغة وقوالب XObject وكائنات النماذج وتوليد المحتوى وصفحات الإخراج
مُغيَّر (Changed)
- يرسل فرض الصفحات بدون هندسة كل صفحة مصدر مرتبة عبر استدعاء
FPDF_ImportPagesByIndexواحد قبل إدراج الصفحات الفارغة وتركيب N-up الأصلي - يعيد فرض الهندسة المخصصة استخدام قالب XObject أصلي واحد لكل صفحة مصدر فريدة، ويقرأ قياسات الصفحات المخزنة مؤقتًا دون تغيير صفحة المصدر، ويخصص تخطيط التخزين مسبقًا بدقة
Version 3.63.0
مُضاف (Added)
- تجمع
BeginPageObjectEditTransactionوCommitPageObjectEditTransactionوRollbackPageObjectEditTransactionتعديلات كائنات الصفحات الأصلية في دفعة ذرية بنطاق صفحة مع تراجع بلقطات مُتحقق منها - يُبلِّغ
PageObjectEditTransactionStatusعن الصفحة المرتبطة وحالة التعديل وعدد التعديلات الناجحة وعدد توليدات المحتوى
مُغيَّر (Changed)
- تستدعي دفعات الكائنات المُلزمة
FPDFPage_GenerateContentمرة واحدة الآن بدلًا من مرة لكل تعديل إدراج أو إزالة أو تحويل أو خاصية أو علامة أو كائن تعليق أو مظهر - يُرفض الحفظ وتغييرات الصفحات وحذف الصفحات ومعاملات التحرير المتداخلة وفشل الإدراج الأصلي أو تحديثات التعليقات قبل إمكانية فقدان المحتوى المؤجل
Version 3.62.0
مُضاف (Added)
- يلتقط
ReadPageObjectsSnapshotحقائق كائنات الصفحات التي يملكها المستدعي بميزانيات للكائنات والمسارات والقص والعلامات والنصوص والسلاسل والمواعيد النهائية - يوفر
PageObjectsSnapshotإعادة استخدام LRU واعية بالمراجعة مع سعة وإشغال وقياسات إصابة وإخفاق قابلة للتهيئة
مُغيَّر (Changed)
- يعيد
PageComplexityالآن استخدام لقطة كائنات الصفحة غير القابلة للتغيير بدلًا من تكرار الاستعلامات الأصلية لتعداد الكائنات والشفافية والمسارات والصور
Version 3.61.0
مُضاف (Added)
- يكشف
TPdfالآن عن LRU موحدة للصور المصغرة للمعاينات المضمنة والمصيَّرة بأسقف إدخالات وبايتات قابلة للتهيئة مع قياسات إصابة وإخفاق وإخلاء وإشغال ومراجعة - يقبل
RenderPageThumbnailالدوران وخيارات التصيير ولون الخلفية وTPdfColorSchemeمع الحفاظ على عقد الصورة النقطية التي يملكها المستدعي
مُغيَّر (Changed)
- تعيد عمليات استخراج وتصيير الصور المصغرة المتكررة استخدام نتائج PDFium الأصلية عبر مفاتيح المراجعة والصفحة والمصدر والحجم والدوران والأعلام والخلفية ومخطط الألوان، بما يشمل التخزين المؤقت لغياب الصور المصغرة المضمنة الاختيارية
- يزامن
TPdfThumbnailViewذاكرته النقطية للصفحات المرئية مع مراجعات صور المستند المصغرة فلا يمكن للتعديلات أن تترك معاينات قديمة
Version 3.60.0
مُضاف (Added)
- يلتقط
ReadTextPageSnapshotUnicode وتعيينات UTF-16 وهندسة المحارف وأناقتها وبيانات كائنات النص الوصفية الموحدة في مرور واحد بميزانيات صريحة للمحارف والكائنات وأسماء الخطوط والمواعيد النهائية - يوفر
TextPageSnapshotنسخًا عميقة يملكها المستدعي عبر LRU واعية بالمراجعة قابلة للتهيئة مع قياسات سعة وعدد وإصابة وإخفاق
مُغيَّر (Changed)
- يعيد
GetStructuredTextوGetTextInReadingOrderبالتخطيط الفيزيائي استخدام لقطة النص نفسها ويطبقان فرزًا هندسيًا بمقدار O(n log n)
تم الإصلاح (Fixed)
- تُخلّي ذاكرات لقطات النص والبنية الصغيرة الآن أقدم صفحة أثناء تخزين البيانات الجديدة تحت فهرس الصفحة المطلوب، ما يمنع تداخل أسماء الذاكرة المؤقتة عبر الصفحات
Version 3.59.0
مُضاف (Added)
- يختار
LifecycleActionPolicyالتنفيذ التلقائي المعطل أو الصريح فقط أو المتوافق لإجراءات دورة حياة مستند وصفحات PDF - يكشف
ExecuteDocumentLifecycleActionعن إجراءات JavaScript والفتح والإغلاق والحفظ والطباعة للمستند، بينما يشغّلExecutePageLifecycleActionإجراءات فتح الصفحة وإغلاقها دون تغييرPageNumber
مُغيَّر (Changed)
- تتلقى تحميلات الصفحات عديمة الواجهة الآن إجراءات فتح الصفحة وإغلاقها التلقائية نفسها التي تتلقاها التحميلات المدفوعة بالعارض، مع إعادة استخدام الصفحات المؤقتة أو تحريرها تحت قفل التصيير
Version 3.58.0
مُضاف (Added)
- يوفر
ReadStructureElementsوVisitStructureElementsتجولًا تكراريًا في البنية الموسومة بميزانيات صريحة للعمق والعناصر والخصائص والوقت مع حالة إتمام مفصلة - توفر
StructureElementsForPageلقطات للصفحات بترقيم يبدأ من واحد دون تغييرPageNumber، مع cache من نوع LRU قابلة للضبط تراعي مراجعة المستند وتُبلغ عن مرات العثور على البيانات وغيابها وعدد الإدخالات
مُغيَّر (Changed)
- يعيد مستهلكو الوصولية وإعادة التدفق والتحقق والعارض استخدام لقطات البنية التي يملكها المستدعي حتى تبطلها تعديل مناسب على المستند أو الصفحة
Version 3.57.0
مُضاف (Added)
- توفر الاستدعاءات العكسية المكتملة لمضيف النماذج الأصلي الآن مقابض صفحات كسولة آمنة العمر وتوجيه المؤشر لعرض التفاعل وإخطارًا بتغيّر القيم ومستطيلات النص المحدد وأحداث URI وأحداث وجهات GoTo
- يُبلِّغ
FormHostCallbacksCompleteعن جهوزية الاستدعاءات العكسية، بينما تكشفFormSelectionRectsوClearFormSelectionRectsعن هندسة تحديد محدودة في فضاء الصفحة
تم الإصلاح (Fixed)
- تحوّل callbacks الصفحة الحالية في XFA الآن بشكل صحيح بين فهارس PDFium التي تبدأ من صفر و
PageNumberالخاص بالمكوّن الذي يبدأ من واحد - تحفظ استدعاءات AcroForm و XFA لـ URI الآن بايتات URI الخام وتتطلب موافقة صريحة من المضيف قبل أي تشغيل خارجي
Version 3.56.0
مُضاف (Added)
- تكشف لقطات
PageMetricsالمفهرسة عن أبعاد الصفحة ودورانها وتسميتها وشفافيتها وصناديق صفحاتها القياسية الخمسة دون تغيير الصفحة النشطة
مُغيَّر (Changed)
- تعيد قراءات بيانات الصفحات الوصفية المتكررة استخدام ذاكرة لقطات أصلية تُبطل تلقائيًا، ما يقلل فتح الصفحات في أحمال الصور المصغرة والفحص المسبق وتحليل المستندات
Version 3.55.0
مُضاف (Added)
- يكشف فحص المسارات عن نقاط تحكم Bézier التكعيبية الدقيقة عندما يوفر بناء PDFium المحمَّل
FPDFPath_GetBezierControlPoints، مع مسبار قدرات اختياري لملفات DLL الأقدم - تكشف
FormFieldTypeAtPointوTPdfView.FormFieldTypeAtوخصائصFontFlagsالمفهرسة عن حقائق النماذج والخطوط الأصلية دون مقابض خام - تعيد
TPdf.Signaturesكل محتويات التواقيع الأصلية و ByteRanges والمرشحات الفرعية والأسباب والأوقات والأذونات في لقطة واحدة يملكها المستدعي
مُغيَّر (Changed)
- تستخدم فحوص وجود حقول النماذج الآن اختبار إصابة نقاط أصليًا مباشرًا بدلًا من فتح مقابض التعليقات وإغلاقها
تم الإصلاح (Fixed)
- يسمح التحقق من PDF/E-1 الآن بحقول AcroForm العادية والملفات المضمنة وتعليقات FileAttachment مع الإبلاغ الدقيق عن
/XFAو/NeedAppearances trueفي AcroForm المستوى الأعلى، بما يشمل القيم غير المباشرة وقيم تدفقات الكائنات
Version 3.54.0
مُضاف (Added)
- يضيف
FPdfProductionاختيار صور متعدد المرشِّحات قائمًا على القياس، وخلفيات معالجة الألوان والخطوط، ومسارات SVG، وخطط استبدال منسَّقة، وتحديثات حزم XFA تعاملية، ومتجهات باركود، ونماذج Portfolio، واستخراج RichMedia آمن - يضيف
FPdfStandardsExecutionتحويل القياسات و GeoPDF، وإصلاح PDF/A تعامليًا، وخطط PDF/UA-2، وملفات تعريف ألوان متعددة خارجية، وأدلة DSS و VRI التاريخية، واستعلامات DPart، وحقائق PDF/E العميقة، وشرائح PDF/R بذاكرة ثابتة - يؤلِّف
TPdf.ImportImposedخطط N-up وكتيّبات محدودة الحدود عبر مسارات N-up الأصلية أو كائنات XObject للصفحات مع هندسة مجرى ونزف وزحف دقيقة، بينما يبلِّغTPdf.CompareWithعن الفروق الدلالية والهندسية وفروق البكسلات المتسامحة - يدعم توقيع PAdES الآن مدققات مسار قابلة للتوصيل ومزوِّدي HSM، و PDF MAC المرفق بالتوقيع، و
cms-algorithm-protection، ومستندات سياسة التوقيع دون اتصال
مُغيَّر (Changed)
- يقبل محرك التخطيط الآن HTML و Markdown محدودة الحدود، ويتدفق عبر الأعمدة، ويحل مسارات الشبكة الثابتة والتلقائية والكسرية
- تحتفظ رحلات XFDF الذهاب والإياب الآن بالحقول متعددة القيم والنصوص المنسَّقة والنوافذ المنبثقة والإجراءات والوجهات وتراكبات المظهر والنطاقات المخصصة وحالة الحضور الصريحة
Version 3.53.0
مُضاف (Added)
- يوفر
ConfigurePdfLibraryتهيئة غير قابلة للتغيير للمصيِّر الأصلي والخطوط و V8 و Brotli ومسار خطوط المستخدم والحماية المعزولة قبل أول تحميل لـ PDFium - سمات البنية الأصلية وعلاقات التعليقات التوضيحية ومرفقات ملفات التعليقات والقيم المُنمَّطة للقواميس وسياسات التركيز واستعلامات الترتيب z للروابط والنماذج وتشخيصات تعيين TTF الافتراضي متاحة عبر واجهات برمجة تطبيقات عالية المستوى محدودة الحدود
- يحافظ
TPdfView.ReplaceFormTextAndKeepSelectionعلى التحديد النشط عبر التعديلات المتكررة، وتصل الآن أحداث تحرير الزر الأيمن إلى محرك النماذج الأصلي
مُغيَّر (Changed)
- يستخدم وقت المستند الحتمي الآن تحويل تقويم UTC مستقرًا إلى جانب الحقبة الثابتة، ما ينتج البيانات الوصفية نفسها في كل منطقة زمنية للمضيف
- تتحقق كتابات سلاسل المرفقات من النتيجة الأصلية وتُرمِّز مفاتيح القاموس بترميز UTF-8
Version 3.52.0
مُضاف (Added)
- تعيد
TPdf.GetImageObjectRenderedBitmapنتيجة تصيير كائن صورة مع تطبيق مصفوفته الحالية وفضاء ألوانه وأقنعته وحالة التصيير - تكشف
TPdf.TextObjectGlyphWidthوTPdf.TextObjectFontSizeوTPdf.SetTextObjectFontSizeعن قياس المحارف الأصلي وتحرير دقيق لحجم خط كائن النص - تضيف
TPdf.TransformPageObjectClipPathوTPdf.DetachFormObjectChildوTPdf.SharePageObjectMarkوTPdf.IsAnnotationObjectSubtypeSupportedتحريرًا دقيقًا لكائنات المحتوى وفحصًا للقدرات
Version 3.51.0
مُصلح (Fixed)
- ثمانية أعضاء في
TPdfأعلنت عنها ملاحظات الإصدار السابقة كانت مُعرَّفة في القسم الخاص ولا يمكن استدعاؤها من خارج وحدةPDFium؛ وهي الآن عامة كما هو موثق:LinkAtPointوGetTextRenderModeوGetTextObjectRenderedBitmapوIsAnnotationSubtypeSupportedوChooseRenderFlagsوAttachmentHasKeyوGetAttachmentStringValueوSetAttachmentStringValue
مُغيَّر (Changed)
- تغطي الوثائق المرجعية الإنجليزية الآن كل عضو عام في
TPdfوTPdfView: حصل 88 عضوًا لم تكن لديهم صفحة مرجعية على صفحة، وتُدرجها جميعًا صفحات الفئات وفهرس التنقل ومرجع API - الصفحات المرجعية التي كانت تشير سابقًا إلى صفحة مشتركة ترتبط الآن بصفحة العضو نفسه، بحيث تفتح نتيجة البحث وصف الـ API الذي تم البحث عنه
- يوثق مرجع API التعدادات والسجلات التي يمكن الوصول إليها من التوقيعات العامة، بما في ذلك تقارير التحميل والتدفق، وأنواع النصوص والخطوط وOCR، وأنواع منشئ التخطيط، وأنواع التحقق من PAdES، وأنواع الدفعات والتحقق، وأنواع العرض المتوازي
Version 3.50.0
مُضاف (Added)
- يفتح الآن كل عرض تجريبي بواجهة رسومية بمحتوى جاهز للاستخدام بدلاً من نموذج فارغ: تحمّل عروض العارض والمختبر مستندًا نموذجيًا مُولَّدًا، وتنتج عروض التقارير تقريرًا مكتملًا عند بدء التشغيل، وتولّد عروض المعالجة مدخلات نموذجية مسبقًا بحيث يعمل الإجراء الرئيسي بنقرة واحدة
MultiPageViewerوSplitViewوFontPropertiesتولّد مستندات نموذجية في الذاكرة عند بدء التشغيل (عرض تقديمي من ست صفحات، ومستندان للمقارنة جنبًا إلى جنب، وصفحة متعددة الخطوط للتفحص بالنقر)- عروض المعالجة مثل
MergePDFوBatchExportوSplitPDFوExtractTextوPDFtoJpgوPrintPDFوPrintPreferencesتولّد مسبقًا ملفات PDF نموذجية بجوار الملف التنفيذي وتعبّئ عناصر الإدخال الخاصة بها مسبقًا، مع إعادة توليد متسامحة لا تستبدل الملفات الموجودة أبدًا FormFillوExtractImagesيحمّلان تلقائيًا الملفات النموذجية المرفقة في مجلدات العرض التجريبي الخاصة بهما، ويولّدImageToPDFصورتين نقطيتين نموذجيتين، ويبنيWatermarkStampعينات الأختام مسبقًا، ويفتحXfdfLabعلى مستند مُولَّد يحمل تعليقات نصية وتعليقات تمييز
مُغيَّر (Changed)
- يولّد
CreatePDFالآنSample.pdfبجوار الملف التنفيذي عند بدء التشغيل دون عرض مربع حوار، بحيث يوجد المستند لحظة فتح العرض التجريبي - يُبلّغ
TPdf.AboutInfoوبيانات تعريف المُثبّت الآن عن Version 3.50.0 بشكل متسق
Version 3.49.0
مُضاف (Added)
- أصبح
FORM_GetTextDirectionوFORM_SetTextDirectionمن ثنائيات PDFium المحدّثة مربوطين الآن، مما يُبقي طبقة الربط الديناميكي بتغطية كاملة لجميع 472 من صادرات PDFium - يكشف
TPdf.FocusedFormFieldTextDirectionوTPdf.SetFocusedFormFieldTextDirectionعن اتجاه النص في الذاكرة لعنصر الواجهة المركّز عبر تعدادTPdfFormTextDirectionالجديد (ftdUnknownوftdAutoوftdLTRوftdRTL)، مع نظائر فيTPdfViewتعيد رسم مشهد الصفحة بعد تغيير الاتجاه
مُغيَّر (Changed)
- يعكس
FPDF_LIBRARY_CONFIGالآن تخطيط الإصدار 6 من PDFium مع الحقل التجريبيm_BrotliEnabledللثنائيات المبنية معPDF_ENABLE_BROTLI - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.49.0 بشكل متسق
Version 3.48.0
مُضاف (Added)
- يُنشئ العرض التجريبي
PDFViewerالآن مستندًا استعراضيًا من ست صفحات في الذاكرة عند بدء التشغيل باستخدام واجهة الإنشاء، بحيث يُفتح العارض بمحتوى مُصيَّر ودون أي ملف نموذجي على القرص - توفر لوحة مصغّرات مبنية على
TPdfThumbnailViewمعاينات صفحات قابلة للنقر للتنقل بجوار شجرة العلامات المرجعية في منافذ العرض التجريبي الثلاثة - يُبرز البحث في العارض الآن كل تطابق في الصفحة الحالية عبر
HighlightSearchTextبدلاً من مستطيل نتيجة واحد، مع عرض عدد التطابقات في شريط الحالة - تُبدّل أزرار شريط الأدوات
Nightو2-Upبنقرة واحدة وضع العرض الليلي ثنائي اللون ووضع عرض الصفحتين المتجاورتين
مُغيَّر (Changed)
- يستخدم تحديد النص في العارض الآن محرك التحديد المدمج في
TPdfViewمع تحديد الكلمات بالنقر المزدوج والتحديد بالسحب واختصارات الحافظة، ليحل محل كود التحديد المكتوب يدويًا - تُصيَّر الصفحات بظل ساقط وتمرير سلس لتجربة قراءة عصرية
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف المُثبّت الآن عن Version 3.48.0 بشكل متسق
Version 3.47.0
مُضاف (Added)
- يشغّل
FPdfBenchmarkمجموعات PDF محدودة الحجم مع إحماء قابل للتهيئة وتمريرات مُقاسة، وحدود للصفحات والبكسلات، وإلغاء تعاوني، وحالة نجاح أو فشل أو تخطٍّ لكل حالة - يسجّل
TPdfBenchmarkReportأحجام الإدخال والمخرجات المحفوظة بالبايت، وزمن التحميل وزمن أول صفحة، وإنتاجية العرض، وتوقيت الحفظ وإعادة الفتح، وذروة مجموعة العمل المُستهلَمة، وبصمات SHA-256 الدلالية والبكسلية، وثبات التكرار، وبوابات البصمات المتوقعة، وتكافؤ إعادة الفتح المستقلة - تُصدّر تقارير المعايير ملفات CSV آمنة للصيغ و JSON مهيكلة لأغراض التكامل المستمر وتأهيل الإصدارات وتتبّع الأداء الزمني
- تُعرض
GetSkiaRenderCapabilitiesوRenderPageSkiaوRenderPageSkiaByIndexعرض Skia الأصلي الاختياري للصفحات والنماذج مع إعادة استخدام ذاكرة الصفحات المُحلَّلة ودون أي متطلب إلزامي لصادرات DLL - يعرض ABI مُخرجات الطباعة المُبوَّب بالإصدار والبوابات تعداد الألواح الفاصلة الدقيق وعرض الألواح وكشف الطباعة الزائدة ومعاينتها عندما يوفّرها نموذج PDFium المُحمَّل
مُصلح (Fixed)
- تُحمَّل الآن نسخ PDFium المبنية دون
PDF_USE_SKIAبشكل طبيعي بدلاً من الفشل بسبب غياب صادرات Skia التجريبية
مُغيَّر (Changed)
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.47.0 بشكل متسق
Version 3.46.0
مُضاف (Added)
- يتحقق
ValidatePdfRالآن من محتوى الصفحات النقطية حصرًا، وهندسة الشرائح، ونماذج الألوان، والدقة الفعّالة، ومعاملات الضغط، وبيانات التعريف المطلوبة، وملفات PDF 2.0 المشفّرة عبر خيارات تحقق قابلة للتهيئة - يحوّل
BuildPdfARepairPlanأدلة التحقق إلى خطوات معالجة مرتّبة حسب التبعيات مع فئات أمان وحمايات لتأثير التواقيع ومخرجات JSON - يُبلغ
BuildPdfXProductionPreflightعن صناديق الصفحات والخطوط المضمّنة ونوايا الإخراج والألوان الفاصلة والشفافية والطباعة الزائدة والفصل والدقة الصورية والجهوزية الإنتاجية دون فك ترميز حمولات الصور - يتحقق التحقق من بنية PDF/UA-2 الآن من ملكية الملفات المرتبطة وترتيب القراءة والأوصاف والعلاقات وقابلية الاكتشاف
مُغيَّر (Changed)
- تُعرض
TAssociateFile.DescriptionوTPdf.ImageInfoوTPdf.PageComplexityبيانات التعريف التي تحتاجها سير عمل الملفات المرتبطة والفحص الإنتاجي المسبق - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.46.0 بشكل متسق
Version 3.45.0
مُضاف (Added)
- يُحلّل
TPdfXmpPacketويحرّر ويستنسخ ويُسللسل XMP الواعي بمسارات الأسماء مع مسارات أسماء غير معروفة، وحاويات RDF مُنمّطة، وقيم URI والموارد، والمُؤهِّلات، والبدائل اللغوية، وغُلاف الحزمة، والحشو المُحافَظ عليه - تُعرض
TPdf.ReadXmpPacketوSaveAsWithXmpPacketقراءة بيانات التعريف عالية المستوى وإخراجًا ذرّيًا، مع اشتراط تصريح صريح لتغيير المستندات الموقّعة
الأمان (Security)
- يرفض قارئ XML المحدود DTD والكيانات الخارجية ويحدّ من بايتات الحزمة والتداخل والعُقد والسمات ومراجع الأحرف الرقمية
مُغيَّر (Changed)
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.45.0 بشكل متسق
Version 3.44.0
مُضاف (Added)
- يسجّل
TPdfValidationRuleRegistryبنود الملفات الشخصية مع درجة الخطورة والتبعيات وإرشادات الإصلاح والأدلة والمُسندات المدمجة أو المخصصة - يُقيّد
TPdfValidationBudgetوTPdfValidationExecutionContextالقواعد والإخفاقات والعناصر والتكرار وأدلة UTF-8 والذاكرة المحجوزة والوقت المنقضي والإيقاف السريع والإلغاء التعاوني - يتحقق
ValidatePdfFilesParallelمن الملفات عبر مستندات عامل معزولة مع الحفاظ على ترتيب الإدخال وتجميع توزيعات المشكلات والتوقيتات والإخفاقات والإلغاءات وأخطاء التحميل
مُغيَّر (Changed)
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.44.0 بشكل متسق
Version 3.43.0
مُضاف (Added)
- يحمل
TPdfStructureElementالآن حقائق مسار الاسم وتخطيط أدوار مسار الاسم والمرجع والملف المرتبط والتعليق التوضيحي وعنصر الواجهة والتسمية والمظهر للتحقق الدلالي من PDF/UA-2 - يتحقق
ValidatePdfUa2StructureElementsومُتحققاته المركّزة من مسارات أسماء ISO/TS 32005 والاحتواء، وشبكات الجداول المحدودة، والتعليقات التوضيحية، والنماذج، وارتباطات Formula/MathML، والملفات المرتبطة، وجذور المستند، وFENote، والقوائم، ومراجع جدول المحتويات، والعناوين، والتسميات التوضيحية دون تحميلpdfium.dll - يُحدّد
ClassifyPdfUaNamespaceمسارات أسماء البنية PDF 1.7 و PDF 2.0 و MathML و ARIA و DPUB والمخصصة والمفقودة - يوفر
PdfUa2StructureHasIssueاستعلامًا آمنًا لـ C++Builder عن مشكلة واحدة دون إرجاع مجموعة Pascal بالقيمة
مُغيَّر (Changed)
- يطبّق
ValidatePdfUaStructureElementsمجموعة القواعد الدلالية الجديدة لـpuc2تلقائيًا مع الحفاظ على مسار قواعد PDF/UA-1 - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.43.0 بشكل متسق
Version 3.42.0
مُضاف (Added)
- ينشئ
TPdfUaSaveOptions.PdfUa2مخرجات PDF/UA-2 معpdfuaid:partبقيمة 2 وpdfuaid:revبقيمة 2024 وإصدار كتالوج PDF 2.0 فعّال - يكشف
ValidatePdfUapuc2ويُبلغ عن بيانات تعريف المراجعة المفقودة، والملفات غير المطابقة لـ PDF 2.0، وتكوينات المحتوى الاختياري غير المُسمّاة، والتعليقات التوضيحية المهجورة، وعناوين H العامة
مُغيَّر (Changed)
- يختار التحقق من PDF/UA الآن قواعد ترتيب الجدولة وXFA والعناوين الخاصة بكل ملف شخصي لـ PDF/UA-1 و PDF/UA-2
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.42.0 بشكل متسق
Version 3.41.0
مُضاف (Added)
- يضيف
SetPageObjectMarkParamمعاملًا واحدًا صحيحًا أو حقيقيًا أو نصيًا أو ثنائيًا إلى مدخلة محتوى مُعلَّم قائمة أو يستبدله دون استبدال العلامة نفسها - يزيل
RemovePageObjectMarkParamخاصية واحدة مُحددة مع الحفاظ على اسم العلامة وكل خاصية غير ذات صلة
مُغيَّر (Changed)
- تُخزَّن أرقام المحتوى المُعلَّم غير الصحيحة الآن وتُسترجع بصيغة
pmpFloatبدلاً من اقتطاعها في لقطات صحيحة - يؤدي فشل التحقق من المعاملات أثناء
AddPageObjectMarkإلى إزالة العلامة الأصلية المُنشأة جزئيًا - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.41.0 بشكل متسق
Version 3.40.0
مُضاف (Added)
- يثبّت
ConfigureSystemFontProviderمُخطِّط خطوط التطبيق قبل بدء PDFium ويُوفّر بايتات TrueType أو OpenType مُتحقَّقًا منها للخطوط المفقودة أو المُستبدلة في المستند - يتحكم
TPdfSystemFontPolicyفي استبدال الأوجه، والتراجع الأصلي، وحدود البايت لكل خط، والتخزين المؤقت المحدود للطلبات - يُبلغ
GetSystemFontProviderStatisticsعن نشاط التخطيط والتخزين المؤقت والتراجع والرفض وجداول البيانات والمقابض الحيّة
مُغيَّر (Changed)
- تُظهر استدعاءات المُزوِّد الوجه والوزن والنمط ومجموعة الأحرف والميل المطلوبة من PDFium مع إبقاء إخفاقات الاستدعاء داخل الحدود الأصلية
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.40.0 بشكل متسق
Version 3.39.0
مُضاف (Added)
- يُضمّن
AddCidType2Textبيانات TrueType المُزوَّدة من المُستدعي مع هندسة CID-to-GID صريحة لكل محرف وتخطيطات CID-to-Unicode - يختار
TPdfCidFontOptionsالتضمين الكامل، أو التضمين الجزئي المفضّل مع التراجع، أو التضمين الجزئي الإلزامي ويهيّئ ميزانيات الخط والمحارف و Unicode المحدودة - يُبلغ
TPdfCidFontReportعن قرارات التضمين الجزئي وأحجام البايت والمحارف الفريدة وحالة التضمين والنص المتوقع والنص المستخرج وسلامة الاستخراج
مُغيَّر (Changed)
- يحافظ التضمين الجزئي لـ TrueType على مُعرّفات المحارف المطلوبة ويرفض المخرجات غير الآمنة ويلغي كل عنصر صفحة مُدرَج إذا فشل التحقق من التخطيط أو الاستخراج
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.39.0 بشكل متسق
Version 3.38.0
مُضاف (Added)
- ينشئ
BuildReflowDocumentشجرة عُقد دلالية قابلة لإعادة الاستخدام ومحدودة الحجم من بنية PDF المُوسوم أو من استنتاج التخطيط الفيزيائي عبر نطاق صفحات مُحدد - يُصدر
TPdfReflowDocument.ToHtmlعناوين وفقرات وقوائم وأشكال وتسميات توضيحية وأقسام صفحات وجداول متجاوبة مع مُهربِيات مع دلالات الرأس والامتداد - يتحكم
TPdfReflowOptionsفي كشف الجداول وأقسام الصفحات والهندسة و CSS وفواصل الأسطر ونطاق الصفحات والإلغاء وميزانيات الموارد
مُغيَّر (Changed)
- يحل محتوى الجداول محل كتل الفقرات المتداخلة أثناء إعادة التدفق، وتُستعاد حالة الصفحة النشطة بعد النجاح أو الفشل أو الإلغاء
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.38.0 بشكل متسق
Version 3.37.0
مُضاف (Added)
- يعرض
ApplyOcrSearchLayerالصفحات المُحددة عبر PDFium ويرسل بكسلات BGRA محدودة من الأعلى إلى الأسفل إلىIPdfOcrProviderيُزوِّده المُستدعي - يحمل
TPdfOcrWordنص Unicode ودرجة الثقة والأرباعية الإحداثية في فضاء البكسلات التي تُخطَّط عبر هندسة الصفحة الأصلية إلى نص قابل للبحث غير مرئي - يسجّل
TPdfOcrReportالاكتمال لكل صفحة، وتخطيات النص الموجود، والإخفاقات، والإلغاء، والبكسلات المُعرَضة، والكلمات المقبولة أو المرفوضة
مُغيَّر (Changed)
- يحافظ إدخال OCR على تدفقات صور المسح الأصلية، ويرشّح النتائج المشوّهة أو منخفضة الثقة، ويلتزم مرة واحدة لكل صفحة، ويستعيد الصفحة النشطة
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.37.0 بشكل متسق
Version 3.36.0
مُضاف (Added)
- يكشف
ExtractTablesالجداول المُحاطة بخطوط والمُحاذية بالفراغات من هندسة الكلمات الأصلية وخطوط التحكم المُحوَّلة - يُبلغ
TPdfTableعن الصفوف والأعمدة والامتدادات المدمجة وحدود الصفحة وخلايا الرأس ونمط الكشف ودرجة الثقة وإخراج CSV أو JSON المباشر - يفحص
ExtractDocumentTablesكل صفحة تحت ميزانيات مشتركة ويضع علامات على الجداول المتطابقة التي تمتد عبر حدود الصفحات
مُغيَّر (Changed)
- يفرض استخراج الجداول حدودًا قابلة للتهيئة للكلمات وخطوط التحكم والخلايا والجداول ويستعيد الصفحة النشطة بعد عمليات الفحص على مستوى المستند
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.36.0 بشكل متسق
Version 3.35.0
مُضاف (Added)
- ينشئ
GenerateTaggedLayoutمستند تخطيط دلالي جديدًا مع محتوى مُعلَّم أصلي، وشجرة بنية Document، وتخطيطات ParentTree و IDTree، وبيانات تعريف لغة المستند - ينمذج
TPdfLayoutSemanticsالعناوين والأقسام والقوائم والأشكال والتسميات التوضيحية والجداول وارتباطات الرأس والامتدادات والنص البديل والنص الفعلي واللغات ومُعرّفات العناصر - يُصدر
TPdfLayoutDocument.AddLinkتعليقات Link التوضيحية لـ URI ويربط كل تعليق توضيحي بعنصر بنية Link الخاص به عبر تخطيطات OBJR و StructParent
مُغيَّر (Changed)
- يستخدم نص التخطيط دلالات الفقرات افتراضيًا بينما تتحول الرؤوس والتذييلات والفواصل والصور والنماذج القابلة لإعادة الاستخدام إلى عناصر ثانوية ما لم تُعلَّم صراحةً
- يرفض التحقق من الخطة الدلالية المُعرّفات المكررة والآباء المفقودين والدورات والاحتواء غير الصالح للقوائم أو الجداول والأشكال دون نص بديل ومُعرّفات رؤوس الجداول غير المُحلولة قبل إصدار المستند
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.35.0 بشكل متسق
Version 3.34.0
مُضاف (Added)
- يكتب
TPdf.AddShapedTextمسارات محارف RTL و bidi والسياقية والمركّبة عبر تشكيل النظام الأصلي وواجهات خطوط PDFium من نوع CID Type 2 - تُعرض
ShapePdfTextوTPdfUniscribeTextShaperمُعرّفات المحارف المُموضعة والتقدّمات والإزاحات وعناقات المصدر ومواضع المسارات البصرية ومستويات bidi دون تعديل المستند
مُغيَّر (Changed)
- تغطي تخطيطات ToUnicode المُنشأة كل محرف مُشكَّل بينما يخزّن
ActualTextسلسلة Unicode المنطقية الأصلية للمستهلكين المطابقين للاستخراج وإمكانية الوصول - تُفكّك الآن سلاسل المحتوى المُعلَّم التي تحمل علامات ترتيب بايتات UTF-16 بشكل صحيح عبر
PageObjectMarks - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.34.0 بشكل متسق
Version 3.33.0
مُضاف (Added)
- يبني
TPdfLayoutCachedNodeمحتوى التخطيط المُصنَّف فرعيًا عند أول استخدام ويدعم المواضع المُقيَّسة المتكررة عبرAddCachedNode - يُبلغ
TPdfLayoutPlanعن إصابات ذاكرة القياس وإخفاقاتها ومواضع العُقد المخزّنة و XObjects الأصلية المُعاد استخدامها
مُغيَّر (Changed)
- يعيد
BuildPlanاستخدام الخطط المتطابقة وفق قيود الصفحة الكاملة والمحتوى والخط والنمط والمصدر وهويات المُقيس دون تكرار قياس النص - يحوّل
GenerateLayoutكل عُقدة مخزّنة فريدة إلى XObject واحد مرتبط بالوجهة ويُنشئ كائنات Form خفيفة لكل موضع - يُبلّغ
TPdf.AboutInfoوبيانات تعريف الحزمة وبيانات تعريف المُثبّت الآن عن Version 3.33.0 بشكل متسق
Version 3.32.0
مُضاف (Added)
- يبني
TPdfLayoutDocumentنصًا مُلتفًّا وفواصل وقواعد وصورًا و XObjects صفحات قابلة لإعادة الاستخدام وفواصل صفحات صريحة ورؤوسًا وتذييلات في خطة صفحات مُقاسة - يُرقّم
GenerateLayoutالتخطيط الكامل صفحاتٍ قبل إلحاق الصفحات وعناصر الصفحات الأصلية بشكل ذرّي، مع مراجع{page}و{pages}المستقرة
مُغيَّر (Changed)
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف الحزمة وبيانات تعريف المُثبّت الآن عن Version 3.32.0 بشكل متسق
Version 3.31.0
مُضاف (Added)
- تُصف بُناة
TPdfPagePlanعمليات حذف الصفحات ونقلها وإدراجها وتقسيمها ودمجها دون تطبيقها - يُعيد
ValidatePagePlanتخطيط الصفحات الدقيق من القديم إلى الجديد ويُحصي العلامات المرجعية ونوايا الوصول المُسمّاة وتسميات الصفحات وحقول النماذج والصفحات المُوسومة والميزات المُستوردة والتواقيع المتأثرة
الأمان (Security)
- تُرفض الخطط التي قد تترك أهداف تنقّل معلّقة أو تغيّر محتوى موقّعًا دون تصريح صريح قبل تشغيل أي عملية صفحات أصلية
مُغيَّر (Changed)
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.31.0 بشكل متسق
Version 3.30.0
مُضاف (Added)
- يكتب
SaveRecoverySnapshotحزمة استرداد مُتحقَّقًا من مجموعها التدريجي ومحدودة الحجم تحتوي على بصمة المصدر وسجل تحرير المستند المُتحقَّق منه - يُعيد
RestoreRecoverySnapshotتشغيل حزمة استرداد فقط عندما يتطابق مجموعها التدريجي وسلسلة السجل وبصمة المصدر وبصمة المُسترد جميعها - يُحدّث
EnableRecoveryAutosaveملف استرداد صريحًا بشكل ذرّي بعد كل التزام مُغيَّر أو تراجع أو إعادة دون إعادة كتابة ملف PDF المصدر
مُغيَّر (Changed)
- يُبلغ
InspectRecoverySnapshotعن مصدر الاسترداد والبصمات وعدد المدخلات والموضع والتخزين المحدود دون تطبيق الحزمة - يطلب
ImportEditJournalواسترداد الاسترداد الآن تصريحAllowSignedDocumentصريحًا قبل تطبيق التعديلات على ملف PDF موقّع - يستخدم تخزين حزم الاسترداد مخزن الوصول العشوائي المحدود المُهيّأ والاستبدال الكتابي المباشر في نفس المجلد للسجلات الكبيرة وتحديثات الحفظ التلقائي الآمنة للأعطال
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.30.0 بشكل متسق
Version 3.29.0
مُضاف (Added)
- تُجمّع
BeginEditTransactionوCommitEditTransactionوRollbackEditTransactionتحريرات المستند الأصلية الاعتباطية في معاملات ذرّية - تُطبّق
UndoEditوRedoEditفروقات عكسية وأمامية مُتحقَّقًا منها بـ SHA-256 عبر تغييرات الصفحات والعناصر والتعليقات التوضيحية والمرفقات وبيانات التعريف - تُثبّت
ExportEditJournalوImportEditJournalفروقات محمولة محدودة مع التحقق من بصمة المصدر وسلسلة المُلخصات لإعادة التشغيل لاحقًا
مُغيَّر (Changed)
- تستخدم لقطات المعاملات مخرجات أصلية قابلة لإعادة الإنتاج بحيث تبقى الالتزامات غير المُغيَّرة فارغة حتى عندما تحتوي عمليات حفظ PDFium العادية على مُعرّفات أو طوابع زمنية غير حتمية
- تستعيد الالتزامات الفاشلة وإعادة تشغيل السجلات غير الصالحة المستند القابل للتحميل السابق بشكل ذرّي، بينما يبقى عدد المدخلات والبايتات المخزّنة وحجم اللقطة تحت حدود يُهيّئها المُستدعي
- تطلب ملفات PDF الموقّعة تصريح
AllowSignedDocumentصريحًا قبل بدء معاملة تحرير المستند - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.29.0 بشكل متسق
Version 3.28.0
مُضاف (Added)
- يُعدّد
TPdf.InspectOptionalContentطبقات OCG والتكوينات الافتراضية والبديلة وحالات الاستخدام View/Print/Export وبيانات تعريف التكبير واللغة والطبقات المقفلة ومصفوفات الترتيب ومجموعات الأزرار الراديوية وسياسات OCMD وتعبيرات الرؤية وحالة العرض الفعّالة - يكتب
TPdf.SaveAsOptionalContentConfiguredنسخة مُتحقَّقًا منها بدقة مع حالات الطبقات التي يختارها المُستدعي لاستخدام وتكوين مُحددَين
مُغيَّر (Changed)
- يُحدّث إخراج حالة الطبقات الآن كلتي مصفوفتَي
/ONو/OFFللتكوين وقواميس حالة OCG Usage بحيث يطبّق PDFium الرؤية المطلوبة عبر سياق العرض الأصلي الخاص به - ترفض كتابات التكوين المجموعات غير المعروفة وتغييرات الطبقات المقفلة وتعارضات مجموعات الأزرار الراديوية والملفات المُرحّلة المشفّرة والملفات الموقّعة دون تصريح صريح، وتزيل قواعد الحالة التلقائية افتراضيًا للحفاظ على النتيجة المُحددة حتميًا
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.28.0 بشكل متسق
Version 3.27.0
مُضاف (Added)
- يعرض
TPdf.RenderPageByIndexأي صفحة ذات أساس واحد بحجم بكسل دقيق دون تغيير صفحة التحرير النشطة أو إطلاق أحداث تغيير الصفحة - تُعرض
PageSceneCacheCapacityوPageSceneCacheCountوClearPageSceneCacheتحكمًا وتشخيصات محدودة لذاكرة المشاهد
مُغيَّر (Changed)
- تعيد عمليات العرض المُفهرسة والصور المصغّرة المُعرَضة واستخراج الصور المصغّرة المضمّنة الآن استخدام حالة صفحات PDFium المُحلَّلة عبر ذاكرة LRU ذات ثمانية مدخلات افتراضيًا
- تُبطَل مدخلات المشهد عند تنشيط الصفحة أو تحريرها أو تغييرات شجرة الصفحات أو استدعاءات حالة النموذج أو المسح الصريح أو تفكيك المستند، مع الاحتفاظ بالعمليات الجارية بأمان حتى الإصدار
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.27.0 بشكل متسق
Version 3.26.0
مُضاف (Added)
- يُبلغ
TPadesSignatureAlgorithmInfoعن كل مُلخّص مُوقِّع CMS وتوقيعه ومفتاحه العام و OID المنحنى المُسمّى مع حالة سياسة الخوارزمية المُقيَّمة بشكل مستقل - يتعرّف
InspectPadesSignatureAlgorithmوEvaluatePadesSignatureAlgorithmعلى ملفات P-256 و P-384 و P-521 و brainpoolP256r1 و brainpoolP384r1 و brainpoolP512r1 و Ed25519 و Ed448
الأمان (Security)
- يرفض التحقق من PAdES الآن عدم تطابق المنحنيات الإهليلجية والمُلخّصات، و OID توقيعات ECDSA التي تتعارض مع مُلخّص CMS، ومعاملات EC غير المُسمّاة، ومعاملات Ed25519، وأطوال مخرجات SHAKE256 لـ Ed448 غير البالغة 512 بت
- يبقى التحقق الأصلي من CMS مصدر الصلاحية التشفيرية، بينما تُبلَّغ الخوارزميات غير المتاحة والمنحنيات غير المعروفة بصيغة
pcsUnsupportedبدلاً من اعتبارها تواقيع غير صالحة - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.26.0 بشكل متسق
Version 3.25.0
مُضاف (Added)
- يُصدّر
TPdf.ExportObjectGraphكائنات classic النشطة و xref-stream و object-stream بصيغة JSON مُنمّطة محدودة الحجم مع قواميس ومصفوفات وسلاسل وأسماء وقيم قياسية ومراجع غير مباشرة صريحة وعدادات بايتات التدفق وبصمات SHA-256 اختيارية للتدفقات - يضبط
TPdf.SaveAsObjectGraphPatchedقيم القواميس العلوية المُتحقَّق من مخططها أو يزيلها عبر قيم رقع منمّطة فارغة أو منطقية أو صحيحة أو حقيقية أو أسماء أو سلاسل نصية أو مراجع غير مباشرة
الأمان (Security)
- يفرض تصدير مخطط الكائنات ميزانيات للكائنات والتكرار والسلاسل وبايتات الإخراج، بينما تتحقق عملية الترقيع من كل عملية قبل التسليم وترفض المراجع المعلّقة والعمليات المكررة والمدخلات المشفّرة وتغييرات مُرشِّح التدفق أو طوله المحمية والمستندات الموقّعة ما لم يُصرَّح بها صراحةً
- تُرحَّل رُقع مخطط الكائنات بوصفها مراجعة تزايديّة، ثم تُتجسَّد مرة أخرى للتحقق من xref، ثم تُحمَّل بشكل صارم عبر PDFium، ولا تُنسخ أو يُعاد تسميتها ذرّيًا إلا بعد نجاح جميع الفحوصات
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.25.0 بشكل متسق
Version 3.24.0
مُضاف (Added)
- يتحقق
TPdf.ValidatePadesTrustمن كل توقيع منفصل قابل للاكتشاف مقابلByteRangeالأصلي الدقيق، ويُقيّم ربط signing-certificate-v2 وثقة نظام Windows الحالية، ويُبلغ عن حالات التوقيع والسلسلة والإبطال والطابع الزمني المستقلة - يُلقط
TPdf.ValidatePadesTrustAsyncالمصدر الأصلي المُحمَّل قبل الإرسال، ويُبلغ عن تقدّم مرحلي لأعمال التحليل والتشفير وبناء السلاسل وAIA وOCSP وCRL والطابع الزمني RFC 3161، ويدعم الإلغاء التعاوني - يختار
TPadesTrustValidationOptionsالثقة دون اتصال أو عبره، والتحقق الاختياري من الإبطال والطوابع الزمنية، ومهلة استرجاع URL محدودة، ورمز إلغاء، واستدعاء تقدّم
الأمان (Security)
- تتحقق الطوابع الزمنية للتوقيع ورموز Document Time-stamp الآن من بصمة رسالة SHA-256 والتوقيع المرفق بـ CMS وسلسلة TSA وحالة الإبطال الاختيارية بشكل مستقل عن توقيع المستند العادي
- لا يُنشئ التحقق من الثقة أبدًا بصمة لنسخة أُعيد حفظها عبر PDFium، ويفترض استرجاع الشهادات من ذاكرة التخزين المؤقت دون اتصال فقط، ويُبلغ عن الحالات غير المدعومة أو غير المُحددة بدلاً من اعتبار أدلة الثقة أو الإبطال الأصلية غير المتاحة صالحة
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.24.0 بشكل متسق
Version 3.23.0
مُضاف (Added)
- يُلحق
TPdf.RenewPadesArchiveTimestampوRenewPadesArchiveTimestampToStreamطابع زمني RFC 3161 جديدًا للمستند إلى سلسلة توقيع PAdES قائمة دون تغيير أي بايتات تاريخية - يتحكم
TPadesArchiveTimestampOptionsفي وصول TSA والقيمة العشوائية وسعة الرمز المحجوزة وتحديث DSS كامل اختياري بينما يسجّلTPadesArchiveTimestampReportمستويات المصدر والنتيجة وأطوال السلاسل وأطوال البايتات وهوية الطابع الزمني المُعاد
مُصلح (Fixed)
- تُعلن مخرجات PAdES B-LTA الجديدة والمُجدَّدة عن ESIC ExtensionLevel 2، بينما لم يعد التحقق من B-LT يتطلب المستوى 2 ما لم يكن هناك طابع زمني للمستند
الأمان (Security)
- يُنشئ التجديد بصمة للبايتات الأصلية المُحمَّلة الدقيقة مضافًا إليها أي تحديث DSS مطلوب، ويرفض المصادر المشفّرة أو غير المكتملة، ويتحقق من نتيجة B-LTA القابلة للاكتشاف قبل كتابة المخرجات، ويرحّل مخرجات الملف قبل الاستبدال
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.23.0 بشكل متسق
Version 3.22.0
مُضاف (Added)
- يعيد
TPdf.AnalyzeSignatureRevisionsبناء سلسلة المراجعات التزايديّة الأصلية ويُعيد تغييرات الكائنات لكل توقيع مُصنّفة وفق أذونات DocMDP و FieldMDP - يميّز
TPadesRevisionAnalysisReportتحديثات النماذج والتعليقات التوضيحية والتواقيع ومواد التحقق المسموح بها عن تغييرات الصفحات أو المستندات غير المسموح بها، والحالات غير المُحلولة، والتعريفات الظلّية المشبوهة
الأمان (Security)
- يكشف تحليل المراجعات تعريفات الكائنات غير المُشار إليها، وإعادة تعريف كائنات التوقيع، والمحتوى النشط، وسلاسل المراجعات المشوّهة، والكائنات المضغوطة غير المُحلولة مع فرض ميزانيات محدودة للمراجعات والكائنات والتغييرات
- يستخدم التحليل دائمًا الملف الأصلي المُحمَّل، أو ذاكرة التخزين المؤقت، أو التدفق المخصص، أو المصدر التقدمي المكتمل بدلاً من البايتات التي أعاد PDFium كتابتها
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.22.0 بشكل متسق
Version 3.21.0
مُضاف (Added)
- ينشئ
TPdf.PreparePadesRemoteSignatureحجزًا مُثبَّت العرض للتوقيع المنفصل ويُعيد طلبًا دائمًا يحتوي على مُلخّص المستند SHA-256 وByteRangeالدقيق وإحداثيات الحجز وبصمة PDF المُجهَّز - يُكمل
TPdf.CompletePadesRemoteSignatureجلسات توقيع HSM أو السحابة أو المُقاطَعة بعد التحقق من الطلب المُثبَّت و CMS المُعاد - توفر
TPdf.SavePadesRemoteSigningRequestوTPdf.LoadPadesRemoteSigningRequestتنسيق جلسة ثنائيًا مُراعيًا للإصدار لحدود العمليات والأجهزة
الأمان (Security)
- يرفض الإكمال ملفات PDF المُجهَّزة المُعدَّلة، وإحداثيات
ByteRangeالمُغيَّرة، والاحجوزات غير الفارغة المُعاد استخدامها، وقيم CMS كبيرة الحجم جدًا، وأشكال SignedData غير المدعومة، وسمات signing-certificate-v2 المفقودة، ومُلخّصات رسائل CMS التي لا تطابق المستند المُجهَّز - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.21.0 بشكل متسق
Version 3.20.0
مُضاف (Added)
- يكتب
TPadesDssOptions.Vrisقاموس/Type /VRIغير مباشر واحدًا لكل توقيع، مُفتاحًا بقيمة SHA-1 بالأحرف الكبيرة لقيمة/Contentsالمُفكوكة الترميز الكاملة بما فيها الحشو - يختار
TPadesDssVriمواد الشهادات و OCSP و CRL عبر فهارس مُتحقَّق منها بينما يُنشئ توقيع PAdES B-LT و B-LTA الآن VRI التوقيع الجديد تلقائيًا
مُغيَّر (Changed)
- تُزال تكرارات شهادات DSS واستجابات OCSP و CRLs حسب بصمة المحتوى مع ترتيب ثابت لأول ظهور، وفحوصات تصادم بالبايت الدقيق، وإعادة تخطيط مراجع VRI قبل كتابة أي بايتات وجهة
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.20.0 بشكل متسق
Version 3.19.0
مُضاف (Added)
- يحوّل
TPdf.GetStructuredTextالصفحة الحالية إلى سجلات كتل وأسطر وامتدادات مُنمّطة قابلة لإعادة الاستخدام مع الحفاظ على فهارس الأحرف المصدرية و Unicode المُسدَّي والهندسة وأسماء الخطوط والأحجام والأوزان وزوايا النص - يختار
TPdfStructuredTextOptionsترتيب تدفق المحتوى أو التخطيط الفيزيائي، وإثراءً اختياريًا للخطوط والدلالات، وميزانية أحرف قصوى مُغلقة على الفشل - تُثري ملفات PDF المُوسومة وشُذَيرات المحتوى المقروء المستنتجة الكتل بنوع البنية ومستوى العنوان واللغة والمصدر وهوية عنصر البنية بينما يبقى النص البديل للأشكال غير المتطابقة مُمثَّلًا
مُغيَّر (Changed)
- يستخدم الاستخراج بالتخطيط الفيزيائي الآن ترتيبًا للأحرف بتعقيد O(n log n)، وذاكرات مؤقتة للأسطر والامتدادات تنمو هندسيًا، وتجميعًا للأسطر والأعمدة، وبناءً مؤقتًا لـ Unicode، وتخزينًا مؤقتًا لخطوط عناصر النص المتجاورة غير الفارغة لأداء قابل للتنبؤ به في الصفحات الكبيرة
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.19.0 بشكل متسق
Version 3.18.0
الأمان (Security)
- يطبّق
TPdf.SaveAsRedactedكل مستطيل/Redactعلى لقطة مستند معزولة، ويزيل كل عنصر صفحة علوي متقاطع، ويرسم مستطيل استبدال معتمًا دون تغيير المستند المُحمَّل - تُزيل المخرجات المُحرَّرة تعليقات التحرير التوضيحية، وتزيل اختياريًا التعليقات التوضيحية المتقاطعة الأخرى، وتحذف المرفقات المضمّنة الأصلية، وتجرّد
/AFمن الكتالوج والمحتوى النشط والنماذج وبيانات التعريف وكائنات المراجعات السابقة غير القابلة للوصول - يتحكم
TPdfRedactionOptionsفي لون الاستبدال وإزالة التعليقات التوضيحية المتداخلة وميزانية فحص عناصر الصفحة المُغلقة على الفشل بينما يسجّلTPdfRedactionReportكل عملية إزالة ومقياس إخراج - يزيل
TPdfSanitiseOptions.StripAssociatedFilesالآن مراجع الملفات المرتبطة على مستوى الكتالوج افتراضيًا
مُغيَّر (Changed)
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.18.0 بشكل متسق
Version 3.17.0
مُضاف (Added)
- يعرض
TPdf.RenderPagesParallelطلبات الصفحات ذات الأساس الواحد بشكل متزامن بينما يمتلك كل عامل وحدة PDFium ومستندًا وحالة صفحة مُحمَّلة بشكل مستقل مصدرها لقطة مستند واحدة مُلتقَطة - يتحكم
TPdfParallelRenderOptionsفي DPI وعدد العاملين والدوران ومؤشرات العرض الأصلية ولون الخلفية وحدود البكسل لكل صفحة والحدود الإجمالية للمخرجات المُحتفَظ بها - يحافظ
TPdfParallelRenderReportعلى ترتيب الطلبات ويُعيد ذاكرات BGRA أو RGBA مؤقتة من الأعلى إلى الأسفل يملكها المُستدعي مع نجاح أو إلغاء أو فشل كل صفحة وأبعادها وتوقيتها وتفاصيل التشخيص - يستعلم عرض العامل التقدمي
IPdfCancellationTokenبين الأجزاء الأصلية بينما تبقى الطلبات غير الصالحة وإخفاقات الميزانية معزولة في نتائجها المقابلة - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.17.0 بشكل متسق
Version 3.16.0
مُضاف (Added)
- يضيف
TPdfEncryptionRevision.erR7مخرجات ISO/TS 32003 AES-256-GCM مع/V 6و/R 7و/CFM /AESV4وامتداد المطوّر المطلوب لـ PDF 2.0 - تتلقى كل سلسلة وتدفق مُشفَّرَين IV فريدًا بطول 96 بت، ونصًا مُشفَّرًا بطول غير مُغيَّر، ووسم مُصادقة بطول 128 بت، بينما يحافظ
EncryptMetadata = Falseعلى بايتات تدفق بيانات التعريف - يتحقق
DecryptAesGcmDocumentBytesمن كلمات مرور المستخدم أو المالك والصلاحيات المُشفَّرة وبيانات PDF MAC المستقلة الاختيارية وكل وسم GCM قبل إعادة بايتات النص الواضح المتوافقة مع PDFium - يمكن دمج مخرجات AESV4 مع
TPdfEncryptOptions.EnableIntegrityProtectionبحيث تتعايش مُصادقة GCM لكل كائن وحماية PDF MAC الكاملة للمستند وفق ISO/TS 32004 - يستخدم التشفير الآن مدخلات مراجع متبادلة صالحة بدلاً من تفسير نص على شكل كائن داخل بيانات التدفق بوصفها كائنات غير مباشرة
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.16.0 بشكل متسق
Version 3.15.0
مُضاف (Added)
- يكتب
TPdfEncryptOptions.EnableIntegrityProtectionرموز مُصادقة PDF MAC المستقلة وفق ISO/TS 32004 لمستندات معالج الأمان القياسي AES-256 من المراجعتين 5 و6 - يتحقق
TPdf.ValidatePdfMacمن بايتات المصدر الأصلية الدقيقة و/ByteRangeالصارم المغطي لـ EOF وAuthenticatedDataبـ CMS ومفتاح الملف المُشتق من كلمة المرور والسمات المُصادقة ومفتاح MAC المُغلَّف وقيمة HMAC - يضيف
FPdfHmacخوارزميات HMAC-SHA256 و HKDF-SHA256 بينما يضيفFPdfAesبدائيات تغليف مفتاح AES-256 وإلغاء تغليفه المُصادقة وفق RFC 3394 - يميّز
TPdfMacValidationResultرموز المُصادقة الصالحة والغائبة وغير الصالحة وغير المدعومة مع نص تشخيصي - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.15.0 بشكل متسق
Version 3.14.0
مُضاف (Added)
- يتحقق
TPdf.ValidatePadesالآن من التواقيع المنفصلة بـ CMS مقابل مقاطع/ByteRangeالأصلية الدقيقة على Windows، بما في ذلك السمات الموقّعة وقيمة التوقيع - يعرض
TPadesValidationResultحالة السلامة الإجمالية وحالات ByteRange و CMS وsigning-certificate-v2وثقة النظام والإبطال والطابع الزمني لكل توقيع دون خلط الأدلة غير المدعومة أو غير المُتحقَّق منها مع توقيع غير صالح - يتم التحقق من ربط شهادة المُوقِّع بـ SHA-256، وتستخدم سلاسل الشهادات تقييم ثقة نظام Windows من ذاكرة التخزين المؤقت فقط، وتبقى رموز الأخطاء الأصلية متاحة للتشخيص
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.14.0 بشكل متسق
Version 3.13.1
مُصلح (Fixed)
- يفحص
TPdf.ValidatePadesالآن الملف الأصلي أو الذاكرة المؤقتة أو بايتات التدفق المخصص بدلاً من نسخة أُعيد حفظها عبر PDFium كان يمكن أن تُبطل الإزاحات أو تُلقي قواميس التوقيع - تقبل فحوصات
/ByteRangeلـ PAdES الآن التواقيع التي تغطي مراجعة PDF كاملة سابقة تتبعها تحديثات تزايديّة صالحة، مع التحقق أيضًا من نطاقات الطوابع الزمنية للمستند - يميّز
TPadesValidationResult.SourceStatusالتحقق من المصدر الأصلي عن الإدخال التقدمي غير المتاح أو غير المكتمل، وترفض المُسندات الملتزمة النتائج دون البايتات الأصلية - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.13.1 بشكل متسق
Version 3.13.0
مُضاف (Added)
- يوفر
FPdfSha3بدائيات SHA3-256 و SHA3-384 و SHA3-512 و SHAKE256 خالية من التبعيات لأعمال ISO/TS 32001 والتشفيرية الأخرى المرتبطة بـ PDF 2.x - تمتص السياقات التزايديّة مدخلات مقسّمة بشكل اعتباطي بينما يدعم SHAKE256 استدعاءات عصر متكررة ومخرجات تعبر حدود معدل الإسفنج
- تكمّل مساعدات المصفوفات البايتية أحادية التشغيل والسداسية العشرية بالأحرف الصغيرة واجهة التدفق، مع تحقق صريح من دورة الحياة والحجم عبر Delphi و C++Builder و Lazarus
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.13.0 بشكل متسق
Version 3.12.0
مُضاف (Added)
- يستورد
TPdf.ImportFDFبيانات نماذج FDF من الملفات أو التدفقات ويطبّق القيم المُحلَّلة عبر مسار حقول عناصر الواجهة القائم - تُحلّل
FdfImportFromStreamوFdfImportFromFileالحقول الهرمية المباشرة أو غير المباشرة، وسلاسل PDF النصية والسداسية العشرية، و PDFDocEncoding، ونص Unicode، وقيم الأسماء، والقيم الفارغة الصريحة تحت ميزانيات موارد محدودة - يكتب تصدير FDF الآن أسماء الحقول والقيم غير الأسكي بصيغة سلاسل نصية UTF-16BE متوافقة مع المعايير ويُهرّب أسماء الملفات المصدر بأمان
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.12.0 بشكل متسق
Version 3.11.0
مُضاف (Added)
- يعرض
TPdf.DetectPageSkewالصفحة الحالية بدقة منخفضة ويكشف زاوية الميل بإسقاط البكسلات الداكنة على زوايا دوران مرشحة، مُعيدًا الزاوية التي تُعظّم تباين مجاميع الصفوف (محاذاة أسطر النص) بدقة تبلغ نحو 0.1 درجة - يعرض
TPdfSkewReportالزاوية المكتشفة ودرجة الثقة وأبعاد العيّنة - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.11.0 بشكل متسق
Version 3.10.0
مُضاف (Added)
- يستخرج
TPdf.GetTextInReadingOrderنص الصفحة الحالية بترتيب تدفق المحتوى الخام أو بترتيب التخطيط الفيزيائي (من الأعلى إلى الأسفل، من اليسار إلى اليمين) عبرFPDFText_GetCharBoxمع استخراج الأحرف مُرتَّبة حسب الموضع، بحيث يُقرأ النص متعدد الأعمدة والمُعاد ترتيبه بصريًا بشكل طبيعي - يختار التعداد
TPdfReadingOrderبينroContentOrderوroPhysicalLayout - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.10.0 بشكل متسق
Version 3.09.0
مُضاف (Added)
- تتجاوز
TPdfImageOptimizeOptions.PreserveBilevelالصور الثنائية ذات عمق 1-bit (ImageMask / المسح الضوئي للرسومات الخطية) أثناءOptimizeImages، كي لا يؤدي خفض الدقة باستخدام nearest-neighbour إلى إتلاف حوافها الحادة - يتخطى
TPdfImageOptimizeOptions.MinDimensionالصور الأصغر من العتبة (عادةً أيقونات أو عناصر زخرفية لا تستفيد من مزيد من الاختزال) - يوفر
TPdfImageOptimizeOptions.Defaultنقطة البداية الموصى بها (هدف 150 DPI، نسبة 1.5، حفظ الثنائية، أصغر بُعد 8) - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.09.0 بشكل متسق
Version 3.08.0
مُضاف (Added)
- يوفر
TPdfTileCacheذاكرة LRU محدودة لمربعات الصفحات المُعرَضة مُفتاحة بمراجعة المستند والصفحة والتكبير والدوران ومؤشرات العرض ومستطيل الجهاز، بحيث لا يُعاد عرض المربعات غير المُغيَّرة عند إعادة الرسم وتُزال المربعات القديمة من حفظ سابق تلقائيًا - يعرض
TTileKeyمفتاح الذاكرة المؤقتة المركّب مع مُنشئCreateثابت ومُقارنEquals - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.08.0 بشكل متسق
Version 3.07.0
مُضاف (Added)
- تُغلّف
TPdf.GetAnnotationFontColorوTPdf.SetAnnotationFontColorالدالتين المرتبطتين سابقًا وغير المُستخدمتينFPDFAnnot_GetFontColorوFPDFAnnot_SetFontColor، مُعرضتين قراءة لون نص عنصر الواجهة وكتابته لتحرير حقول النماذج دون لمس قاموس التعليق التوضيحي مباشرة - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.07.0 بشكل متسق
Version 3.06.0
مُضاف (Added)
- يعرض
TPdf.RenderPageBandedالصفحة الحالية في أشرطة أفقية عبر استدعاء راجع، بحيث يمكن تصدير الملصقات وصفحات الهندسة دون تخصيص صورة نقطية كاملة للوجهة قط — يُعرض كل شريط فيTBitmapمُنشأ حديثًا بارتفاع الشريط المطلوب ويُحرَّر بعد عودة الاستدعاء الراجع - يعرض
TPdfBandCallbackعقد الشريط الواحد (فهرس الشريط، إزاحة y العلوية، الصورة النقطية) مع قيمة إرجاع منطقية تتيح للمُستدعين إلغاء العرض المُشرَّط مبكرًا - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.06.0 بشكل متسق
Version 3.05.0
مُضاف (Added)
- يقود
TPdf.RenderPageProgressiveWithColorSchemeحلقة العرض التقدمي الأصلية بمخطط ألوان لضعاف البصر عبرFPDF_RenderPageBitmapWithColorScheme_Start، مُتيحًا للمُستدعين تجاوز ألوان تعبئة المسارات وتحديدها وتعبئة النص وتحديده لإمكانية الوصول مع الإبقاء على حلقة المتابعة الواعية بالإلغاء - يعرض
TPdfColorSchemeحقول التجاوز الأربعةTColorمعDefaultيفوّض إلى الألوان المدمجة في PDFium عندما تكون جميع الحقولclDefault - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.05.0 بشكل متسق
Version 3.04.0
مُضاف (Added)
- يُسللسل
TPdf.ExportFDFقيم حقول النماذج بصيغة مستند FDF (ISO 32000-1 §12.7.11) بجانب مسار XFDF القائم، مُعيدًا استخدام نموذج بياناتTXfdfFieldنفسه بحيث يجمع المُستدعون الحقول مرة واحدة ويُصدرون أيًّا من التنسيقين - تُعرض
FdfExportToStreamوFdfExportToFileفيFPdfXfdfالمُسللسل منخفض المستوى لـ FDF للمُستدعين الذين يبنون مجموعات الحقول بشكل مستقل عنTPdfمُحمَّل - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.04.0 بشكل متسق
Version 3.03.0
مُضاف (Added)
- يكتب
TPdf.SaveAsSanitisedنسخة نظيفة أحادية المراجعة تجرّد المحتوى النشط من الكتالوج (/OpenActionو/AAللكتالوج و/Namesو/AcroFormو/Metadata) ثم تُقلّم الكائنات غير القابلة للوصول بحيث تختفي أجسام JavaScript والإجراءات والمرفقات اليتيمة من جسم الملف - يعرض
TPdfSanitiseOptionsضوابط تجريد مستقلة لكل ناقل مع تمرير تقليم قابلية الوصول اختياري؛ ويسجّلTPdfSanitiseReportعدد المدخلات المُجرَّدة وعدد الكائنات المُقلَّمة وعدادات البايتات وأي خطأ - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.03.0 بشكل متسق
Version 3.02.0
مُضاف (Added)
- يكتب
TPdf.SaveAsPageLabelledنسخة PDF كاملة يُستبدل فيها شجرة أرقام/PageLabelsللكتالوج بالنطاقات المُزوَّدة، مع تطبيق أنماط الترقيم العشري والروماني بالأحرف الكبيرة/الصغيرة والحروف بالأحرف الكبيرة/الصغيرة مع سلاسل بادئة نصية اختيارية وأرقام بداية وفق ISO 32000-1 §12.4.2 - تُعرض
TPdfPageLabelRangeوTPdfPageLabelRangesوTPdfPageLabelStyleوTPdfPageLabelReportنموذج النطاق وتعداد النمط وعدادات البايتات/النطاقات لكل حفظ - تُكتشف مدخلات
/PageLabelsالقائمة في الكتالوج وتُرفض ما لم يُمرَّرReplaceExisting=True، وحينها تُجرَّد المدخلة القديمة قبل حقن النطاقات الجديدة - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.02.0 بشكل متسق
Version 3.01.0
مُضاف (Added)
- يخبز
TPdf.FlattenPageRotation/Rotateالحالي لكل صفحة في تدفق المحتوى وصناديق الصفحات ومستطيلات التعليقات التوضيحية ثم يعيد ضبط/Rotateإلى 0 — مُغلّفًاFPDFPageObj_TransformFوFPDFAnnot_GetRect/SetRectوFPDFPage_SetMediaBox/SetCropBoxوFPDFPage_SetRotationبحيث يُحفَظ التخطيط البصري دون الاعتماد على تلميح عرض الدوران - يعرض
TPdfFlattenRotationOptionsضوابط تحويل التعليقات التوضيحية لكل صفحة وتبديل صناديق الصفحات والتحديث التلقائي؛ ويسجّلTPdfFlattenRotationReportالصفحات المُعالَجة والمتخطاة والفاشلة مع إجمالي الكائنات والتعليقات التوضيحية المُحوَّلة - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.01.0 بشكل متسق
Version 3.00.0
مُضاف (Added)
- يختم
TPdf.StampPagesFromPdfصفحة مصدر بوصفها تراكبًا أو تراكبًا سفليًا من نوع Form XObject مُوضَّعًا ومُقيَّسًا ومُدارًا اختياريًا عبر صفحة هدف واحدة أو أكثر، مُغلّفًاCreateXObjectFromPageوFPDFPageObj_SetMatrixوFPDFPageObj_SetBlendModeوFPDFPage_InsertObjectAtIndexمع سياسات صندوق الصفحة والمرساة والهامش والقياس والدوران والمزج وترتيب z الصريحة - تعرض
TPdfOverlayOptionsوTPdfOverlayReportضوابط الموضع والتحويل والمزج وترتيب z مع عدادات الختم والفشل والتخطي لكل صفحة - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 3.00.0 بشكل متسق
Version 2.99.0
مُضاف (Added)
- يُعيد
TPdf.RefreshAppearanceتوليد تدفق مظهر عنصر واجهة واحد بشكل انتقائي عبرFPDFAnnot_SetAP، مُتجنبًا إعادة بناءNeedAppearancesللصفحة كاملة - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.99.0 بشكل متسق
Version 2.98.0
مُضاف (Added)
- يوجّه
TPdfView.MouseDownالآن أحداث الزر الأيمن إلى محرك تعبئة النماذج الأصلي عبرFORM_OnRButtonDown، مُتيحًا قوائم السياق وتفاعلات عناصر الواجهة عند النقر بالزر الأيمن - تأكيد اكتمال بنود خريطة المسار 78 (تخطيط تعليقات الروابط التوضيحية) و82 (عرض عناصر الواجهة) و83 (نموذج سمات البنية) مسبقًا عبر البنية القائمة
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.98.0 بشكل متسق
Version 2.97.0
مُضاف (Added)
- تتيح
TPdf.SetDeterministicTimeوTPdf.RestoreActualTimeللاختبارات والبنيات القابلة لإعادة الإنتاج حقن وقت إنشاء وتعديل وحالي ثابت عبر الاستدعاءات الراجعة الأصلية المدعومة - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.97.0 بشكل متسق
Version 2.96.0
مُضاف (Added)
- يقرأ
TPdf.GetWidgetAdditionalActionJavaScriptجافاسكريبت الإجراءات الإضافية لعنصر الواجهة لمُشغّل حدث مُعطى عبرFPDFAnnot_GetFormAdditionalActionJavaScriptدون تنفيذ أي نص برمجي - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.96.0 بشكل متسق
Version 2.95.0
مُضاف (Added)
- يستخرج
TPdf.GetObjectTextنص Unicode لكائن صفحة نصية عبرFPDFTextObj_GetTextللتحرير الدقيق للمحتوى وتشخيص الترميز - يُعيد
TPdf.GetObjectsByTypeفهارس كل كائنات الصفحة المطابقة لفئة (نص، مسار، صورة، نموذج، تظليل) للإخراج الفئوي الانتقائي - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.95.0 بشكل متسق
Version 2.94.0
مُضاف (Added)
- تقرأ
TPdf.AttachmentHasKeyوGetAttachmentStringValueوSetAttachmentStringValueقيم امتدادات مواصفات الملفات المخصصة على المرفقات المضمّنة وتكتبها وتفحصها - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.94.0 بشكل متسق
Version 2.93.0
مُضاف (Added)
- يُدرج
TPdf.InsertObjectAtIndexكائن صفحة في موضع مكدس مطلوب عبرFPDFPage_InsertObjectAtIndexبدلاً من الإلحاق دائمًا - يُثبّت
TPdf.UpdateAnnotationObjectكائن مظهر تعليق توضيحي مُحرَّرًا عبرFPDFAnnot_UpdateObjectبحيث تُحفَظ التغييرات على كائنات الصفحة المملوكة للتعليقات التوضيحية بشكل موثوق - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.93.0 بشكل متسق
Version 2.92.0
مُضاف (Added)
- ينشئ
TPdf.InsertClipPathمسار قصّ مستطيلًا ويُدرجه في الصفحة الحالية عبر المسارين الأصليينFPDF_CreateClipPathوFPDFPage_InsertClipPath، مُكمّلًا المُفتِّش القائمPageObjectClipPath - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.92.0 بشكل متسق
Version 2.91.0
مُضاف (Added)
- يفحص
TPdf.GetPageComplexityالصفحة الحالية ويُبلغ عن أعداد كائنات الصور والمسارات والنصوص مع إجمالي مقاطع المسارات وإجمالي بكسلات الصور ووجود الشفافية لتخطيط العرض - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.91.0 بشكل متسق
Version 2.90.0
مُضاف (Added)
- يسأل
TPdf.IsAnnotationSubtypeSupportedملف PDFium DLL المُحمَّل عن أنواع التعليقات التوضيحية التي يدعمها قبل التحرير - يختار
TPdf.ChooseRenderFlagsمؤشرات العرض الأصلية (التنصيف النصي، ذاكرة الصور المحدودة) من المقياس النهائي وحجم الوجهة للاختزال التكيفي للصور - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.90.0 بشكل متسق
Version 2.89.0
مُضاف (Added)
- يعرض
TPdf.GetTextRenderModeوضع العرض النصي الأصلي (تعبئة، تحديد، قصّ) لكائن صفحة نصية لتشخيص التأليف - يعرض
TPdf.GetTextObjectRenderedBitmapكائن نص واحد إلى صورة نقطية معزولة عبر المسار الأصليFPDFTextObj_GetRenderedBitmap - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.89.0 بشكل متسق
Version 2.88.0
مُضاف (Added)
- يعود
TPdf.GetThumbnailالآن إلى عرض بديل عندما لا تحتوي الصفحة على صورة مصغّرة مضمّنة، مُنفّذًا تفضيل الصورة المصغّرة المضمّنة أولًا - يُعيد
TPdf.LinkAtPointما إذا كان رابط أصلي موجودًا عند إحداثية في فضاء الصفحة باستخدامFPDFLink_GetLinkAtPointبدلاً من فحوصات المستطيلات فقط - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.88.0 بشكل متسق
Version 2.87.0
مُضاف (Added)
- يُعيد
TPdf.AuditActiveContentلقطةTPdfActiveContentAuditلعدد إجراءات JavaScript وعدد الملفات المضمّنة وعدد التواقيع ونوع نموذج XFA وصلاحيات المستند دون تنفيذ أي نص برمجي أو إجراء - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.87.0 بشكل متسق
Version 2.86.0
مُضاف (Added)
- يفحص
TPdf.GetFeatureInventoryكل صفحة مرة واحدة ويُعيد سجلًا موحدًا لعدد كائنات النص والمسار والصورة و XObject النماذج والتظليل مع حقائق المرفقات والتواقيع ونوع النموذج والصلاحيات وإصدار PDF - يجمّع
TPdfFeatureInventoryحقائق على مستوى المستند كانت تتطلب سابقًا استدعاءات خصائص منفصلة في لقطة واحدة - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.86.0 بشكل متسق
Version 2.85.0
مُضاف (Added)
- يعيد
TPdf.SaveAsReproducibleكتابة المستند بحيث يُنتج حفظان لنفس الحالة في الذاكرة مخرجات متطابقة بالبايت - تُجرَّد طوابع
/Infoالوقتية غير الحتمية (/CreationDateو/ModDate) ويُحذف/IDالمصدر (المُشتق من بايتات تعتمد على ساعة الحائط)، بينما يبقى ترتيب الكائنات وأجيالها مستقرًا - يُبلغ
TPdfReproducibleReportعن عدد الكائنات المُحتفَظ بها والمُقلَّمة مع عدد مدخلات الطوابع الوقتية المُجرَّدة - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.85.0 بشكل متسق
Version 2.84.0
مُضاف (Added)
- يعيد
TPdf.SaveAsInlineImagesExternalisedكتابة المستند مستخرجًا كل صورة مضمّنةBI/ID/EIإلى XObject صورة قابل لإعادة الاستخدام ومستبدلًا الكتلة المضمّنة بعامل/ImN Do - تُوسَّع اختصارات قاموس الصور المضمّنة (
/Wو/Hو/BPCو/CSو/Fوقيم مساحات الألوان وقيم المُرشِّحات) إلى أسماء XObject الصور الكاملة بحيث يكون الكائن المستخرج متوافقًا مع المعايير - يُحدَّث قاموس
/Resources /XObjectللصفحة بمراجع XObject الجديدة، ويُضغط تدفق المحتوى المُعاد كتابته بـ Flate - يُبلغ
TPdfInlineImageExternaliseReportعن عدد المُخرَجة والمتخطاة والفاشلة مع عدد XObjects المُنشأة - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.84.0 بشكل متسق
Version 2.83.0
مُضاف (Added)
- يعيد
TPdf.SaveAsFlateRecompressedكتابة المستند ويُعيد ترميز تدفقاتFlateDecodeالمؤهلة بأقصى ضغط، مُستبدلًا تدفقًا فقط عندما يتجاوز التوفير البايتي المُقاس عتبة يحددها المُستدعي - يختار
TPdfFlateRecompressOptionsحد أدنى للتوفير بالبايتات وحد أدنى لنسبة التوفير بحيث تُترك التدفقات المُثلى بالفعل دون مساس - يُبلغ
TPdfFlateRecompressReportعن عدد التدفقات المُعاد ضغطها والمتخطاة والفاشلة مع إجماليات بايتات التدفقات الأصلية والمُعاد ضغطها - تبقى أرقام الكائنات وأجيالها مستقرة؛ تتغير فقط حمولات التدفقات المُعاد ضغطها وقيم
/Lengthالمباشرة، بحيث تبقى كل مرجعية متبادلة ناجية صالحة - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.83.0 بشكل متسق
Version 2.82.0
مُضاف (Added)
- يتنقل
TPdf.OptimizeImagesعبر كل كائن صورة في الصفحة ويختزل الصور التي يتجاوز DPI وضعها الفعّال هدفًا يختاره المُستدعي، ثم يُثبّت كل صفحة مُلامَسة عبر مُولّد المحتوى الأصلي - يختار
TPdfImageOptimizeOptionsهدف DPI ونسبة دنيا بحيث يُعاد ترميز الصور المُفرَطة في أخذ العينات فعلًا فقط - يُبلغ
TPdfImageOptimizeReportعن عدد الصور المُحسَّنة والمتخطاة والفاشلة مع رسالة فشل مهيكلة - يستخدم الاختزال تمريرة الجار الأقرب على ذاكرة PDFium النقطية الأصلية، مُحافظًا على تنسيق المصدر والخطوة وقناة الشفافية، ويُعيد
FPDFImageObj_SetBitmapترميز الناجي - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.82.0 بشكل متسق
Version 2.81.0
مُضاف (Added)
- يعيد
TPdf.SaveAsDeduplicatedكتابة المستند بوصفه مراجعة نظيفة واحدة تدمج الخطوط والصور و XObjects النماذج المتوافقة في ممثل واحد مشترك - تجمع بصمة المحتوى التكرارية كل قاموس موارد مع مخططه الفرعي الكامل القابل للوصول وحمولة تدفقه الخام، بحيث تندمج التكرارات فقط عندما يكون محتواها الكامل متطابقًا
- تُعاد كتابة كل مرجعية إلى تكرار مُدمَج بعيدًا إلى الممثل الناجي بينما يُبقي جدول المراجع المتبادلة الكلاسيكي المُعاد بناؤه أرقام الكائنات مستقرة
- يُبلغ
TPdfDedupReportعن عدد الكائنات المُحتفَظ بها والمُقلَّمة مع عدد الخطوط والصور و XObjects النماذج المُدمجة لكل فئة - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.81.0 بشكل متسق
Version 2.80.0
مُضاف (Added)
- يعيد
TPdf.SaveAsReachableكتابة المستند بوصفه مراجعة نظيفة واحدة تُبقي فقط الكائنات غير المباشرة القابلة للوصول من الكتالوج وقاموس /Info للمقطورة - يُبلغ
TPdfPruneReportعن عدد الكائنات غير المباشرة المُحتفَظ بها والمُقلَّمة مع أحجام بايتات المصدر والمخرجات وأسباب الفشل المهيكلة للمدخلات المشفّرة أو المشوّهة - تُكنس كائنات اليتيم غير القابلة للوصول التي خلّفتها التحديثات التزايديّة أو دمجات الصفحات أو الحفظ المُصلَح، بينما تُحافِظ المراجع المتبادلة الكلاسيكية والمقطورة المُعاد بناؤهما على
/Rootو/Infoو/IDدون إعادة ترقيم - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.80.0 بشكل متسق
Version 2.79.0
مُضاف (Added)
- ينشئ
TPdf.CreateDocumentSearchبحثًا على مستوى المستند للأمام أو للخلف يُعيد تطابقًا واحدًا في كل مرة دون بناء فهرس نصي للمستند كاملًا - يُبلغ
TPdfDocumentSearchResultعن الصفحة ذات الأساس الواحد ونطاق الأحرف والنص المطابق ومستطيلات فضاء الصفحة لكل نتيجة - تقبل جلسات البحث
IPdfCancellationToken، وتُحتفظ فقط بمقابض PDFium للصفحة والنص الحاليين، وتُصبح مُنهية بأمان عند إغلاق المستند - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.79.0 بشكل متسق
Version 2.78.0
مُغيَّر (Changed)
- يستبق
TPdfRangeRequestSchedulerالآن عمليات النقل المتداخلة منخفضة الأولوية بحيث لا تنتظر تلميحات PDFium الحرجة للصفحات خلف تنزيلات الخلفية - تُلغي البايتات المتفرقة المتاحة خارجيًا عمليات النقل النشطة الزائدة، بينما تُعيد استدعاءات النقل المُتجاوزة أو المكررة القيمة False دون نشر تغطية قديمة
- يحافظ ترقية الأولوية على سجلات إعادة المحاولة المستقلة، ولم يعد استباق النقل يستهلك ميزانية إعادة المحاولة لذيول النطاقات غير المتأثرة
- يُبلغ
TPdfRangeRequestStatistics.SupersededRequestCountعن عمل النقل المُزاح بتلميحات ذات أولوية أعلى أو تغطية مُزوَّدة خارجيًا - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.78.0 بشكل متسق
Version 2.77.0
مُضاف (Added)
- يكتب
TPdf.SaveAsNormalizedContentمحتوى صفحات مُطبَّعًا نحويًا إلى تدفق أو ملف يُستبدل ذرّيًا ويُبلغ عن عدد الصفحات المُطبَّعة والمتخطاة والمُدمجة - يوفر
NormalizePdfContentSequenceتطبيعًا مستقلًا محدودًا للرموز لتسلسلات تدفقات المحتوى المُفكوكة
مُغيَّر (Changed)
- يمكن الآن دمج مصفوفات
/Contentsللصفحات في تدفق واحد مع الحفاظ على السلاسل والأسماء وحمولات الصور المضمّنة والعوامل غير المعروفة وحالة الرسومات عبر التدفقات - للرموز المشوّهة ونطاقات الحالة غير المتوازنة والمُرشِّحات غير المدعومة والمدخلات المشفّرة وإعادة كتابة المستندات الموقّعة سياسات صريحة وإبلاغ عن حالة مهيكل
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.77.0 بشكل متسق
Version 2.76.0
مُضاف (Added)
- يُحصي
TPdfStreamInspectorكائنات تدفق PDF الفيزيائية الاعتباطية ويُبلغ عن إزاحات الكائنات والأطوال الخام وسلاسل المُرشِّحات و DecodeParms وعلامات الملفات الخارجية وحالة التشفير ومسارات الصور أو المرفقات الأصلية - ينسخ
CopyRawDataحمولات مُرمَّزة كاملة أو نوافذ بايتات مُتحقَّقًا منها، بينما يطبّقDecodeDataترميزات ASCIIHex و ASCII85 و LZW و Flate و RunLength ومنبئات TIFF ذات 8 بت ومنبئات PNG بالترتيب المُعلن - يُقيّد
TPdfStreamInspectOptionsموارد المصدر والخام والمُفكوكة والقاموس وعدد التدفقات ونسبة التمدد، مع تقارير مهيكلة للحدود والبيانات المشوّهة والمرمّزات غير المدعومة والتشفير وإخفاقات الكتابة
مُغيَّر (Changed)
- يعرض حل طول التدفق الآن نطاقات دقيقة لقيم
/Lengthالمباشرة وغير المباشرة، بما في ذلك التدفقات ذات الطول الصفري والحمولات التي تحتوي على التسلسل الحرفيendstream - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.76.0 بشكل متسق
Version 2.75.0
مُضاف (Added)
- يضيف
TPdfLoadOptionsسياسات متوافقة وصارمة واسترداد إلى تحميل الملفات والذاكرة ونطاقات البايت والتدفقات المخصصة - يُبلغ
TPdfLoadReportعن مسار الاسترداد الأصلي وصلاحية xref والإزاحات التالفة وتعارضات المدخلات وعدد المراجعات وميزانيات التدقيق والمشكلات المهيكلة لمستندات classic والهجينة و xref-stream - ينشئ
TPdf.SaveAsRepairedنسخة كاملة أحادية المراجعة ويُحمّلها بشكل صارم بشكل مستقل قبل تسليم التدفق المُتحقَّق منه أو الاستبدال الذرّي لملف هدف
مُغيَّر (Changed)
- تحتفظ التحميلات الزائدة القائمة بالسلوك المتوافق وتنشر الآن صلاحية xref الأصلية وحالة الاسترداد عبر
LastLoadReport - يرفض التحميل الصارم المستندات التي تطلبت إعادة بناء xref الأصلية أو فشلت في التدقيق البنيوي، بينما تتطلب مخرجات الإصلاح الموقّعة تصريحًا صريحًا من المُستدعي
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.75.0 بشكل متسق
Version 2.74.0
مُضاف (Added)
- يدمج
TPdf.MergeFilesقوائم مصادر قائمة على الملفات مع نطاقات صفحات وكلمات مرور لكل مصدر مع إبقاء مستند مصدر واحد مفتوحًا على الأكثر - يضيف
TPdfBatchMergeOptionsمعالجة أخطاء الإيقاف أو التخطي، واستيرادًا محدودًا بالنطاق أو مُقسَّمًا، وسياسات النماذج والمخطط التفصيلي، وتحكم الإدراج، واستدعاءات التقدّم، والإلغاء، ونسخ تفضيلات العارض، وتحكم التراجع - يُبلغ
TPdfBatchMergeReportعن الصفحات المُثبَّتة والمُلغاة ونتائج المصادر واستدعاءات الاستيراد الأصلية وأكبر دفعة وذروة المصادر المفتوحة واكتشافات السياسات والمشكلات والحالة النهائية
مُغيَّر (Changed)
- يُنفّذ مسار الدُفعة الافتراضي استيراد صفحات أصليًا واحدًا لكل مصدر بحيث يستطيع PDFium إعادة استخدام الكائنات المُستنسخة عبر ذلك المصدر، ثم يُغلق المصدر قبل فتح الملف التالي
- يوفر الوضع المُقسَّم نقاط إلغاء أدق ودُفعات أصلية أصغر، بينما يمكن للمصادر الجزئية الفاشلة ونتائج الإيقاف أو الإلغاء إزالة كل الصفحات المُدرجة بعملية الدمج
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.74.0 بشكل متسق
Version 2.73.0
مُضاف (Added)
- يوفر
TPdfRandomAccessStoreإدخال/إخراج تسلسليًا ومُوضَّعًا آمنًا للخيوط، ويُبقي المحتوى الصغير في ذاكرة محدودة، ويسكب مرة واحدة إلى تخزين مؤقت خاص عند سقف يختاره المُستدعي - تهيّئ
TPdf.SaveMemoryLimitوSaveTemporaryDirectoryتجهيز الحفظ المرحلي، بينما تكشفLastSaveSpillCountوLastSaveLargestMemoryBufferتشخيصات قابلة للقياس لكل حفظ
مُغيَّر (Changed)
- تتشارك ذاكرات الحفظ والتحويل القياسي والتحقق والتشفير و DSS و PAdES المرحلية الآن تخزين عمل محدودًا مع ملفات سكب حصرية تُحذف عند الإغلاق ومسح للذاكرة
- تُسللسل استدعاءات كتل PDFium المخصصة عمليات السعي العادية للتدفقات وتستخدم قراءات مُوضَّعة مستقلة عن المؤشر عندما تدعمها
TPdfRandomAccessStore - يقرأ فحص قدرات XFA القائم على الملف الآن كتلًا متداخلة ذات حجم ثابت بدلاً من نسخ ملف PDF الكامل إلى الذاكرة
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.73.0 بشكل متسق
Version 2.72.0
مُضاف (Added)
- توفر
TPdf.BeginIncrementalSaveوCommitIncrementalSaveوEndIncrementalSaveجلسة مراجعة تُلحق فقط الكائنات غير المباشرة المُغيَّرة أو المُنشأة حديثًا - يُبلغ
TPdfIncrementalCommitInfoعن عدد الكائنات المُغيَّرة والبايتات المُلحقة وإجمالي بايتات المخرجات وعدد المراجعات الناجحة لكل التزام
مُغيَّر (Changed)
- يحفظ كل التزام متسخ المخرجات السابقة الكاملة بوصفها بادئة بايتات دقيقة، ولا يُصدر مراجعة عندما لا شيء تغيّر، ويُكمل تنسيق classic أو xref-stream للمصدر
- تُصلَح مخرجات xref-stream التزايديّة الأصلية بنوعها المطلوب ومدخلتها الذاتية وطولها وفهرسها ومُنهي كائنها قبل المعالجة الإضافية
- تُرفض المستندات المشفّرة قبل بدء الجلسة، بينما تتطلب المستندات الموقّعة إذنًا صريحًا من المُستدعي بحيث لا يمكن تجاوز سياسة التواقيع عرضًا
- تُكمل دالة التحميل الزائد للملفات ملفًا مؤقتًا شقيقًا قبل الاستبدال الذرّي للوجهة وتراجع حالة الجلسة بعد أي فشل في الكتابة أو الاستبدال
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.72.0 بشكل متسق
Version 2.71.0
مُضاف (Added)
- يكتب
TPdf.SaveAsObjectStreamملفات PDF 1.5+ بمجموعات كائنات مضغوطة محدودة وتدفق xref نقي يحتوي مدخلات type-2 كاملة - يمكن لـ
PackPdfObjectStreamsتحديث مدخلات classic والهجينة و xref-stream وتدفقات الكائنات القائمة بعد حل المراجعة النشطة
مُغيَّر (Changed)
- يوازن ترتيب الكائنات المحلي بالصفحة وعروض حقول xref التكيفية والوصول المباشر إلى الكتالوج والحدود القابلة للتهيئة للأعضاء والبايتات المُفكوكة حجم الملف مع أداء الوصول العشوائي
- تُكمل دالة التحميل الزائد للملفات ملفًا مؤقتًا شقيقًا قبل الاستبدال الذرّي للوجهة، بينما تُرفض خيارات التزايديّة والإصدار والتجميع غير الصالحة قبل بدء الإخراج
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.71.0 بشكل متسق
Version 2.70.0
مُضاف (Added)
- يكتب
TPdf.SaveAsLinearizedملف PDF حقيقيًا بعرض الويب السريع إلى تدفق أو ملف باستخدام تجميع كائنات الصفحة الأولى وقسمَي مراجع متبادلة وجداول تلميح لإزاحة الصفحات والكائنات المشتركة وفق الملحق F - يُتجسَّد أعضاء تدفقات الكائنات النشطة تلقائيًا، مُتيحًا لمدخلات xref-stream وتدفقات الكائنات أن تصبح مخرجات ودودة للنطاقات دون تغيير محتوى الصفحات المرئي
مُغيَّر (Changed)
- تُكمل دالة التحميل الزائد للملفات ملفًا مؤقتًا شقيقًا قبل الاستبدال الذرّي للوجهة، بينما تحتفظ دالة التحميل الزائد للتدفقات بخيارات حفظ PDFium العادية والفحوصات الصريحة للإصدار
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.70.0 بشكل متسق
Version 2.69.0
مُضاف (Added)
- يحوّل
TPdfRangeRequestSchedulerتلميحات نطاقات البايت من PDFium إلى عمل نقل مُرتَّب بالأولوية ومُدمج ومحدود الحجم دون فرض تنزيل متصل - يدعم الإكمال الكامل والجزئي وإعادة المحاولة المحدودة وإزالة تكرار التوافر المتفرقة وإحصاءات الطلبات والإلغاء الآمن للأجيال خطوط HTTP Range والنقل المخصصة
- تتلقى
TPdfProgressiveDocument.RangeRequestsتلقائيًا تلميحات المستند والنموذج والصفحة، مُرقّيةً فقط البايتات الدقيقة التي تعوق صفحة تفاعلية
مُغيَّر (Changed)
- يُلغي
CancelProgressiveLoadالآن عمل النطاقات النشطة قبل هدم التوافر الأصلي والتدفقات، وتُتجاهل عمليات إكمال النقل القديمة بأمان - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.69.0 بشكل متسق
Version 2.68.0
مُضاف (Added)
- يُبقي
TPdfProgressiveDocumentجلسة التوافر الخاصة بـ PDFium حية بينما يتلقى تدفق وصول عشوائي بعيد أو متنامٍ نطاقات البايت التي يطلبها PDFium - تُعيد
CheckDocumentAvailabilityوCheckFormAvailabilityوLoadAvailablePageتلميحاتTPdfDownloadRangeمدمجة بحيث يستطيع المضيف جلب البيانات اللازمة فقط لفتح صفحة مُخطَّطة وعرضها - تدعم
AvailableByteCountالتنزيلات المتصلة الرتيبة، بينما تدعمOnDataAvailableذاكرات النطاقات المتفرقة وغير المُرتَّبة
مُغيَّر (Changed)
- تستخدم الملفات المُخطَّطة بوابات المستند والنموذج والصفحة التقدمية الأصلية لـ PDFium؛ وتتحول الملفات غير المُخطَّطة تلقائيًا إلى مُحمِّل التدفق المخصص الأصلي بعد اكتمال استيعاب الملف بالكامل
- يمكن لـ
TPdfStreamAdapterكشف حجم نهائي منطقي يختلف عن البايتات المخزنة حاليًا، مع الحفاظ على حدFPDF_FILEACCESSالصريح البالغ 4 GiB - يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.68.0 بشكل متسق
Version 2.67.0
مُضاف (Added)
- تُطفئ
TPdfView.AllowFormEventsأحداث الفأرة ولوحة المفاتيح والتركيز التي يوجّهها العارض إلى طبقة تعبئة النماذج، لعارض للقراءة فقط أو عارض يقود تفاعل النماذج بنفسه - تظل حقول النماذج تُعرض بشكل طبيعي وهي مطفأة: يُترك تحميل الصفحات وإغلاقها دون بوابة عمدًا، لأن تلك تُمهّد طبقة النماذج بدلاً من التفاعل مع الإدخال
- ينضم المفتاح إلى مفتاحَي
AllowUserPageChangeوAllowUserTextSelectionالقائمَين ويكون افتراضيه True، فلا يتغير السلوك القائم
مُغيَّر (Changed)
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.67.0 بشكل متسق
Version 2.66.0
مُضاف (Added)
- تصل الآن الإجراءات المُسمّاة التي يُطلقها مستند (ISO 32000-1 §12.6.4.11) إلى المضيف عبر الحدث الجديد
OnNamedAction؛ وكان كل واحد منها يُهمَل سابقًا - عند تُركها دون معالجة، تنقل الأسماء القياسية الأربعة للتنقل —
NextPageوPrevPageوFirstPageوLastPage— الصفحة مع التثبيت عند الأولى والأخيرة بدلاً من الالتفاف - تتيح
TPdf.PerformNamedActionللتطبيق تشغيل السلوك نفسه مباشرة، مُعيدًًا False لاسم لا معنى له مُزوَّدًا من المكتبة
مُصلح (Fixed)
- قاس اختبار تشفير جسم تدفق بالمسح عكسيًا من
endstream، وهو ما أخطأ أحيانًا في أخذ بايت نص مُشفَّر على أنه مُنهي سطر وأبلغ عن فشل متقطع؛ كانت المكتبة صحيحة طوال الوقت
مُغيَّر (Changed)
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.66.0 بشكل متسق
Version 2.65.0
مُضاف (Added)
- يُنشئ
BuildToUnicodeCMapخريطة CMap للتحويل إلى Unicode (ISO 32000-1 §9.10.3) التي يحتاجها خط CID بحيث يمكن نسخ نصه والبحث فيه وقراءته بتقنيات المساعدة — دونها يُعرض النص صحيحًا لكنه يُستخرج لا شيء - تُقسّم الإدخالات إلى كتل لا تتجاوز 100 إدخال وفق الحد الذي تفرضه المواصفة، ويُكتب كل glyph مكرر مرة واحدة، مع تجاهل
.notdef - تتبع الخريطة اصطلاح CID = GID، فلا حاجة لتدفق
CIDToGIDMapبجانبها
مُغيَّر (Changed)
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.65.0 بشكل متسق
Version 2.64.0
مُضاف (Added)
- ترسم تعليقات الحبر والختم التوضيحية نفسها من كائنات صفحتها الخاصة لا من تدفق محتوى الصفحة، وهذه الكائنات أصبحت الآن قابلة للوصول: تقرأها
AnnotationObjectCountوAnnotationObjectInfo، وتسلّمAddPathToAnnotationالتعليق التوضيحي مسارًا مبنيًا بـCreatePath، وتحذفRemoveAnnotationObjectكائنًا واحدًا - لم يعد بناء مظهر ختم يتطلب أداة خارجية: أنشئ المسار كالمعتاد ثم أعطه للتعليق التوضيحي بدلًا من الصفحة
- لا يقبل PDFium كائنات الصفحة إلا على نوعَي الحبر والختم، لذا يُرفض أي نوع آخر برسالة تُسمّي القيد بدلاً من الفشل غامضًا
مُغيَّر (Changed)
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.64.0 بشكل متسق
Version 2.63.0
مُضاف (Added)
- يرسم
TPdf.AddStandardFontTextنصًا بأحد الخطوط الـ 14 التي يُلزَم كل قارئ PDF بتوفيرها دون تضمين أي برنامج خط — الملف الناتج أصغر قابلًا للقياس من النص نفسه المرسوم بـAddTextالذي يُضمّن وجه النظام الذي يجده - يُسمّي التعداد الجديد
TPdfStandardFontالوجوه الـ 14 كلها، فلا يستطيع المُستدعي أن يخطئ في اسم خط أساسي؛ يطابق PDFium هذه الأسماء تمامًا وكان خطأ مطبعيًا سيلت بلا خط بصمت - يطلب كل من PDF/A و PDF/X تضمين كل خط، لذا يجب على المخرجات الموجهة لهذين الملفين الشخصيين مواصلة استخدام
AddText
مُغيَّر (Changed)
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.63.0 بشكل متسق
Version 2.62.0
مُضاف (Added)
- يُعيد
TPdf.TextObjectGlyphOutlineمخطط محرف واحد من خط كائن نصي بوصفه مقاطع مسار، لتحويل النص إلى فن متجهي أو فحص محرف قد يكون استبدال الخط قد غيّره - يعيد النتيجة استخدام النوع القائم
TPdfPathSegments، فيُقرأ تمامًا مثل مخطط كائن مسار مرسوم - الإحداثيات في فضاء تصميم الخط نفسه، مُطبَّعة بحيث يساوي الإيم الواحد 1.0؛ حجم الخط المطلوب لا يُقيّسها، فمن أراد وحدات جهاز يضرب في حجم النقطة بنفسه
- النتيجة الفارغة تعني أن الخط لا يكشف مخططًا لذلك المحرف، وليس هذا خطأً؛ طلب محرف من كائن غير نصي يُطلق استثناء
مُغيَّر (Changed)
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.62.0 بشكل متسق
Version 2.61.0
مُضاف (Added)
- يُبلغ
TPdf.InspectAvailabilityعمّا يستطيع PDFium قوله عن ملف PDF دون تحميله مستندًا: هل الملف مُخطَّط (“مُحسَّن للويب”)، وهل التحليل الكامل سينجح، وهل يحمل بيانات نماذج، وأي صفحة سيعرضها العارض أولًا - تحمل الأنواع الجديدة
TPdfAvailabilityوTPdfLinearizationوTPdfFormAvailabilityالأجوبة؛ يُقرأ التدفق لكن لا يُحتفَظ به، ويُستعاد موضعه عند العودة - يغلق هذا الفجوة الأخيرة في عائلة
FPDFAvail_*التي كانت مرتبطة ومُحمَّلة بلا أي مُستدعٍ في المكتبة - يغطي كل من Delphi و Lazarus و C++Builder الحقائق المُبلَّغة وضمان موضع التدفق ورفض التدفق الفارغ
مُغيَّر (Changed)
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.61.0 بشكل متسق
Version 2.60.0
مُضاف (Added)
- أصبح المحتوى المُعلَّم (ISO 32000-1 §14.6) قابلًا للوصول من واجهة API عالية المستوى: تقرأ
PageObjectMarksكل وسم BDC وقائمة خصائصه من كائن صفحة، وتكتبAddPageObjectMarkواحدًا، وتحذفRemovePageObjectMarkواحدًا، وتُبلغPageObjectMarkedContentIDعن MCID - تحمل الأنواع الجديدة
TPdfContentMarkوTPdfContentMarkParamوTPdfMarkParamKindاسم الوسم ومعاملاته المُنمّطة (صحيح، عائم، سلسلة، ثنائي)، مع حل نوع القيمة من PDFium بدلًا من تخمينه من الدالة القارئة التي تنجح - إضافة علامة تعيد بناء تدفق محتوى الصفحة، فينجو الوسم من الحفظ؛ كان لا بد أن يكون هذا صريحًا لأن
SaveAsلا يُولّد المحتوى بنفسه - يحمل كل من Delphi و Lazarus و C++Builder ست حالات، منها حالة تُضخّم تدفق المحتوى المحفوظ للتأكد من أن عامل BDC وقائمة خصائصه حطّا فعلًا في الملف
مُغيَّر (Changed)
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.60.0 بشكل متسق
Version 2.59.0
مُضاف (Added)
- يكتسب
TPdfAnnotationالحقلينHasLinkUriوLinkUri، فيستطيعCreateAnnotationالآن إنتاج رابط ويب عامل: يُحفظ التعليق التوضيحي مع إجراء/URIيشير إلى العنوان المُعطى - يُطلق استثناءً تعيين رابط URI على أي نوع غير
anLink، لأن تعليق Link وحده يحمل قاموس إجراء - الحقل للكتابة فقط حاليًا؛ قراءة هدف الرابط تمر عبر عائلة
FPDFLink_*التي تحتاج مقبض المستند - تتحقق Delphi و Lazarus و C++Builder جميعها من أن البايتات المحفوظة تحمل إجراء
/URIوالعنوان الهدف
مُغيَّر (Changed)
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.59.0 بشكل متسق
Version 2.58.12
مُضاف (Added)
- يُبلغ التحقق من PDF/X عن
pvxiTrimBoxWithArtBoxعندما تحمل صفحة/TrimBoxو/ArtBoxمعًا؛ كلاهما يذكر الصفحة النهائية، فلا سبيل لمعالج RIP لمعرفة أيهما الموثوق (ISO 15930) - يُبلغ التحقق من PDF/X عن
pvxiPageBoxOutsideMediaBoxعندما يخرج/TrimBoxأو/BleedBoxعن/MediaBox، بما في ذلك صندوق بأصل سالب؛ الصندوق المتجاوز للوسط لا يمكن تصويره - تُطبَّع المستطيلات قبل المقارنة، فيُقبل أي ترتيب للزوايا، ويبقى الصندوق الملامس لحافة الوسط تمامًا صالحًا
- تُصنّف تقارير الفحص المسبق كلا المشكلتين تحت البنية وتُسمّي العلاج الملموس
- تغطي Delphi و Lazarus و C++Builder الحالتين المرفوضتين والحالة المطابقة
مُغيَّر (Changed)
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.58.12 بشكل متسق
Version 2.58.11
مُضاف (Added)
- يُبلغ التحقق من PDF/UA عن
pvuaiTociWithoutTocعندما يوسم مستند مدخلات TOCI لكنه لا يوسم أبدًا حاوية جدول المحتويات التي تنتمي إليها، تاركًا التقنية المساعدة تُعلن بنود جدول محتويات بلا جدول محتويات (ISO 14289-1 §7.7) - تُصنّف تقارير الفحص المسبق المشكلة تحت البنية وتوصي بتغليف المدخلات في عنصر TOC
- يكتسب C++Builder أول تغطية اختبار PDF/UA بجانب حالات Delphi و Lazarus
مُغيَّر (Changed)
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.58.11 بشكل متسق
Version 2.58.10
مُضاف (Added)
- يُبلغ التحقق من PDF/A عن
pvaiSymbolicTrueTypeEncodingعندما يحمل خط TrueType رمزيًا مدخلة/Encoding؛ لا يقبل ISO 19005-1 §6.3.7 إلا cmap المدمج في الخط، فمدخلة/Encodingتناقضه - تُقرأ الراية الرمزية من
/FontDescriptor، سواء كُتبت داخل قاموس الخط أو أُشير إليها بشكل غير مباشر؛ يحتفظ الخط غير الرمزي بـ/WinAnsiEncodingأو/MacRomanEncodingالمطلوب دون أن يُعلَّم - تُصنّف تقارير الفحص المسبق المشكلة تحت المحتوى وتوصي بإزالة المدخلة
- تغطي Delphi و Lazarus الحالة المُعلَّمة مع كلتا الحالتين المقبولتين؛ ويغطي C++Builder الحالة المُعلَّمة وحالة الخط غير الرمزي
مُغيَّر (Changed)
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.58.10 بشكل متسق
Version 2.58.9
مُضاف (Added)
- يُبلغ التحقق من PDF/A عن حدود التنفيذ الحاوية للملحق C من ISO 19005-1:
pvaiNameOverLimitللأسماء الأطول من 127 بايتًا، وpvaiArrayOverLimitبعد 8191 عنصرًا، وpvaiDictOverLimitبعد 4095 مدخلة، وpvaiNestingOverLimitبعد 28 مستوى تداخل - الحدود شاملة، فالحاوية الجالسة على حد تمامًا تظل صالحة؛ تُثبّت الاختبارات كلا الجانبين المرفوض والمقبول من كل حد
- تُصنّف تقارير الفحص المسبق المشكلات الأربع تحت البنية وتُسمّي الحد الملموس في كل توصية
- تغطي Delphi و Lazarus الحدود الأربعة مع حالات الحدود؛ ويغطي C++Builder حد المصفوفة والحالة الحدية
مُغيَّر (Changed)
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.58.9 بشكل متسق
Version 2.58.8
مُضاف (Added)
- يُبلغ التحقق من PDF/R عن
pvriPageImageMismatchعندما لا يطابق عدد الصور عدد الصفحات؛ يجعل ISO 23504-1 §6.5.1 كل صفحة صورة شريط واحدة تمامًا، فالصفحة بلا صورة أو بعدة صور غير مطابقة - تغطي اختبارات Delphi و Lazarus و C++Builder صفحة بلا صورة، وصفحة بصورتين، وحالة الصورة الواحدة المطابقة
مُغيَّر (Changed)
- تبدأ اختبارات حقن علامات PDF/R الآن من صفحة مصدر تحمل أصلًا صورة شريط، لأن حقن العلامات يضيف بيانات تعريف ولا يمكنه توفير محتوى الصفحة
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.58.8 بشكل متسق
Version 2.58.7
مُضاف (Added)
- يُبلغ التحقق من PDF/R عن
pvriFontForbiddenعندما تُسمّي صفحة مورد خط؛ تحمل صفحة PDF/raster صورة المسح الممسوح ولا شيء غيره (ISO 23504-1 §6.5.2) - يُبلغ التحقق من PDF/R عن
pvriForbiddenImageFilterلترميزات الشرائط خارج القائمة البيضاء، فتُرفض/LZWDecodeو/RunLengthDecodeو/ASCII85Decodeو/ASCIIHexDecodeو/JBIG2Decodeو/Cryptبينما تمر/CCITTFaxDecodeو/DCTDecodeو/JPXDecodeو/FlateDecode(ISO 23504-1 §6.6) - تُصنّف تقارير الفحص المسبق المشكلتين تحت المحتوى وتوصي بالعلاج الملموس
- تغطي اختبارات Delphi و Lazarus و C++Builder مورد خط، ومُرشِّحًا مرفوضًا، وصفحة تستخدم فقط ترميزات القائمة البيضاء
مُغيَّر (Changed)
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.58.7 بشكل متسق
Version 2.58.6
مُضاف (Added)
- يُبلغ التحقق من PDF/E عن
pveiFontNotEmbeddedعندما يُظهر مستند استخدامًا للخطوط دون حمل أي برنامج خط مضمّن، فيُفحص المتطلب على المسار الخالي من DLL أيضًا كما عبر PDFium - يجب أن تُرسم الرسمة الهندسية بشكل متطابق بعد عقود، لذا لا يعفي ISO 24517-1 أيًّا من الخطوط القياسية الـ 14؛ ينطبق الفحص على
/Type1و/TrueTypeو/Type0و/MMType1سواء - تُصنّف تقارير الفحص المسبق المشكلة الجديدة تحت المحتوى وتوصي بتضمين كل برنامج خط
- تغطي اختبارات Delphi و Lazarus و C++Builder مُوصِفًا بلا برنامج، و
/FontFile2مضمّنًا، ومستندًا لا يستخدم خطًا على الإطلاق
مُغيَّر (Changed)
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.58.6 بشكل متسق
Version 2.58.5
مُضاف (Added)
- يكتب
InjectPdfEMarkersالآن نية الإخراج التي يتطلبها ISO 24517-1 §6.2: ملف ICC تعريف sRGB مضمّنًا، ونية إخراج/GTS_PDFE1تُسمّيه، ومصفوفة/OutputIntentsللكتالوج، وكل ذلك كجزء من التحديث التزايدي نفسه - يستمد تدفق الملف قيمة
/Nمن ترويسة ICC بدلاً من افتراض ثلاثة مكوّنات، فالملف الشخصي CMYK يُوصف صحيحًا - يُبلغ التحقق من PDF/E عن
pveiMissingOutputIntentوpveiMissingIccProfile، فلم يعد يُقبل مرشح بلا حالة لونية مُعلنة - تغطي اختبارات Delphi و Lazarus و C++Builder نية إخراج مقبولة، وأخرى بلا ملف وجهة، وكتالوجًا بلا نية إخراج أصلًا
مُغيَّر (Changed)
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.58.5 بشكل متسق
Version 2.58.4
مُضاف (Added)
- يُبلغ التحقق من PDF/X الآن عن
pvxiFontNotEmbeddedمن مسح البايتات، فيُمسَك الخط غير المضمّن على المسار الخالي من DLL بدلًا من الفحص المدعوم بـ PDFium فقط - على خلاف PDF/A، لا تُعفى الخطوط القياسية الـ 14 في PDF/X، فأي استخدام لخط دون برنامج خط مضمّن يُبلَّغ عنه
- يبقى الفحص متحفظًا: لا يشتغل إلا عندما يُظهر الملف استخدامًا للخطوط ولا يحمل أصلًا أي
/FontFileأو/FontFile2أو/FontFile3، لأن عدّ المُوصِفات مقابل البرامج يُنتج إيجابيات كاذبة على المُوصِفات المشتركة - تغطي اختبارات Delphi و Lazarus و C++Builder مُوصِفًا بلا برنامج، وبرنامجًا مضمّنًا، ومستندًا لا يستخدم خطًا
مُغيَّر (Changed)
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.58.4 بشكل متسق
Version 2.58.3
مُضاف (Added)
- يُبلغ التحقق من PDF/X الآن عن
pvxiColorSpaceForbiddenعندما يحمل مرشح PDF/X-1a فضاء/DeviceRGBأو/CalRGBأو/Lab، وهي التي يستبعدها ISO 15930-1 §6.2 من تبادله CMYK - الفحص مقيّد بـ PDF/X-1a وحده، فتظل PDF/X-3 وما بعدها تسمح بـ RGB والفضاءات المستقلة عن الجهاز التي تقرنها بنية الإخراج
- لا تُفحص إلا رموز أسماء فضاءات الألوان غير الملتبسة؛ تدفق
ICCBasedيحتاج حل قيمة/Nويبقى مع طبقة نموذج الكائن - تغطي اختبارات Delphi و Lazarus و C++Builder فضاء RGB مُعلَّمًا، وفضاء Lab مُعلَّمًا، وزوج CMYK ورمادي مقبولًا، والحالة المسموحة على PDF/X-3
مُغيَّر (Changed)
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.58.3 بشكل متسق
Version 2.58.2
مُضاف (Added)
- يُبلغ التحقق من PDF/X الآن عن
pvxiTransparencyForbiddenلمجموعة شفافية أو قناع ناعم نشط، وهما ما يحظره ISO 15930-1 §6.2 (PDF/X-1a) و ISO 15930-3 §6.3 (PDF/X-3) - الفحص مقيّد بالمطابقة المكتشفة، فتظل PDF/X-4 و PDF/X-6 تسمحان بالشفافية، ولا يُعلَّم أبدًا ملف لم يُتعرّف على مستواه بقاعدة قد لا تنطبق عليه
- القناع الناعم المطفأ صراحةً بـ
/SMask /Noneلا يُعامل شفافيةً - انتقلت
PdfHasActiveSMaskمنFPdfPdfaإلى واجهةFPdfPdfCommonليشارك كل مُتحقِّق في قاعدة قناع ناعم واحدة - تغطي اختبارات Delphi و Lazarus و C++Builder مجموعة مُعلَّمة على X-1a، وقناعًا ناعمًا مُعلَّمًا على X-3، وقناعًا معطّلًا، والحالة المسموحة على X-4
مُغيَّر (Changed)
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.58.2 بشكل متسق
Version 2.58.1
مُضاف (Added)
- يفحص التحقق من PDF/X الآن شكل نية الإخراج التي يتطلبها ISO 15930-7 §6.2.4: يُبلغ
pvxiOutputIntentSchemeعن نوع فرعي حاضر لكنه ليس/GTS_PDFX، ويُبلغpvxiOutputIntentMissingIdentifierعن/OutputConditionIdentifierمفقود - يُطابَق النوع الفرعي بوصفه رمز اسم كاملًا، فلم يعد الاسم الأطول مثل
/GTS_PDFXVersionيمر، بينما لا يزال الهجاء المهروب#xxللاسم نفسه يمر - تُترك نية الإخراج التي لا تحمل نوعًا فرعيًا أصلًا دون مساس، لأن غيابه تُبلغ عنه مسبقًا مشكلات مستوى العلامات
- تُدرج تقارير الفحص المسبق المشكلتين تحت فئة نية الإخراج وتقترح الإصلاح
- تغطي اختبارات Delphi و Lazarus و C++Builder النوع الفرعي المقبول، ونوعًا فرعيًا لـ PDF/A، ورمز اسم أطول، ونوعًا فرعيًا غائبًا، ومعرّف شرط مفقود
مُغيَّر (Changed)
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.58.1 بشكل متسق
Version 2.58.0
مُغيَّر (Changed)
- تحصر الآن الاستدعاءات الراجعة الـ 35 التي يُطلقها PDFium من أُطر C++ الخاصة به (تعبئة النماذج، XFA، منصة JavaScript، توقف العرض التقدمي، وقراءة التدفقات وكتابتها) أي استثناء Pascal داخلها وتُعيد قيمة الفشل الموثقة بدلًا من الفك عبر حدود اللغتين
- لم يعد معالج حدث يُطلق استثناءً، أو حجز فاشل، أو خطأ غير متوقع داخل استدعاء راجع قادرًا على إسقاط العملية أو ترك PDFium في حالة غير مُعرّفة
مُصلح (Fixed)
- كان تسجيل مؤقت نموذج يُسرّب مدخلته عندما يتعذر إنشاء المؤقت الأساسي
مُضاف (Added)
- تغطي اختبارات Delphi و Lazarus و C++Builder الآن الحفظ في تدفق وجهة يرفض الكتابة وتؤكد بقاء المستند صالحًا للاستخدام وقابلًا للحفظ بعدها
Version 2.57.8
مُصلح (Fixed)
- توقفت إصدارات Delphi الأقدم (XE5 وما قبلها) عن ترجمة مكتبة التجربة بالخطأ
E2003 Undeclared identifier: 'GetTickCount64'فيFPdfPades.pas، لأن وحدة Windows المرفقة مع تلك المترجمات لا تصدّر الرمز - فشلت المترجمات نفسها أيضًا في
GetUserDefaultLocaleNameفيPDFium.pasوفي إسنادTBytesإلىarray of ByteفيGetXfaFormPackets، فالاستدعاء الراجع للغة XFA ولقطة الحزم تُبنى الآن على تلك المترجمات كذلك
مُغيَّر (Changed)
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.57.8 بشكل متسق
Version 2.57.7
مُغيَّر (Changed)
- تقطع الآن كل إعادة كتابة من جهة الحفظ تدفق الوجهة قبل الكتابة بدلًا من كَبْحه فقط، فلا يستطيع مخزن مُؤقت أظهره المُستدعي كان يحمل مستندًا أطول أن يُبقي ذيلًا قديمًا بعد
%%EOFالجديد - تغطي اختبارات Delphi و Lazarus و C++Builder الآن الحفظ في تدفق مُعبَّأ مسبقًا
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.57.7 بشكل متسق
Version 2.57.6
مُصلح (Fixed)
- كان مسح الكائنات الذي يسبق التشفير يقبل سلاسل أرقام بأي طول، فيمكن لرقم طويل في أي مكان من الملف أن يلتف إلى رقم كائن سالب أو زائف ويضيف مدخلة شبحية إلى جدول المراجع المتبادلة المُعاد بناؤه
- تُرفض الآن أرقام الكائنات فوق حد الملحق C من ISO 32000-1 والأجيال فوق 65535 بوصفها ترويسات كائن بدلًا من اقتطاعها
مُضاف (Added)
- تؤكد اختبارات Delphi و Lazarus و C++Builder الآن العدد الدقيق للمدخلات المستخدمة في الجدول المُعاد بناؤه
مُغيَّر (Changed)
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.57.6 بشكل متسق
Version 2.57.5
مُصلح (Fixed)
- كان التشفير بـ
EncryptMetadata = Falseيكتب/EncryptMetadata falseفي قاموس Encrypt لكنه يُشفّر مع ذلك تدفق بيانات تعريف المستند، فيجد قارئ يتبع ذلك الإعلان XMP غير قابل للقراءة - يُنسخ الآن تدفق
/Type /Metadataدون تغيير عند إطفاء تشفير بيانات التعريف، بينما يُشفَّر كل تدفق آخر كالمعتاد
مُضاف (Added)
- أصبحت
AnsiNameTokenMatchesKeyجزءًا من واجهةFPdfPdfCommonلمقارنات الأسماء الواعية بالفواصل - تغطي اختبارات Delphi و Lazarus و C++Builder الآن كلا وضعَي تشفير بيانات التعريف
مُغيَّر (Changed)
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.57.5 بشكل متسق
Version 2.57.4
مُصلح (Fixed)
- أغفل جدول المراجع المتبادلة المُعاد بناؤه أثناء التشفير رأس القائمة الحرة الإلزامي للكائن 0 الذي يتطلبه ISO 32000-1 §7.5.4، فبدأ قسمه الفرعي الأول متأخرًا كائنًا واحدًا
- ادّعت كل مدخلة مُعاد بناؤها الجيل 0؛ تحتفظ الآن الكائنات المكتوبة بجيل أعلى به، فيتفق الجدول مع ترويسات الكائنات التي يشير إليها
مُضاف (Added)
- تغطي اختبارات Delphi و Lazarus و C++Builder الآن مدخلة رأس القائمة الحرة والحفاظ على الأجيال في الجدول المُعاد بناؤه
مُغيَّر (Changed)
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.57.4 بشكل متسق
Version 2.57.3
مُصلح (Fixed)
- كانت المخرجات المُشفَّرة تُسقط كلمة
streamمن كل كائن تدفق، فلم يعد الملف المحفوظ صيغة PDF صالحة وأبلغ القرّاء الصارمون أن محتوى الصفحة ليس تدفقًا ولا مصفوفة تدفقات - كانت إعادة كتابة
/Lengthتطابق/Lengthكسلسلة فرعية مجردة، فيُفسد اسم مفتاح قاموس تدفق يحمل/Length1(أي خط مضمّن) بينما يظل الطول الحقيقي قديمًا - كان التدفق الذي يذكر طوله بشكل غير مباشر بصيغة
/Length N 0 Rيحصل على رقم كائنه مُستبدلًا بالطول الجديد؛ تُستبدل المدخلة الآن بالطول المُشفَّر المباشر - يحصل الآن قاموس تدفق لا يحمل
/Lengthأصلًا على واحد بدلًا من ترك القارئ بلا طول
مُضاف (Added)
- أصبحت
AnsiFindDictKeyTokenجزءًا من واجهةFPdfPdfCommonللبحث عن مفاتيح القواميس العلوية الواعي بالفواصل - تغطي اختبارات Delphi و Lazarus و C++Builder الآن الحفاظ على
/Length1، واستبدال الطول غير المباشر، وتوافق حجم جسم التدفق
مُغيَّر (Changed)
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.57.3 بشكل متسق
Version 2.57.2
مُصلح (Fixed)
- كانت
SaveAsEncryptedوSaveAsEncryptedToStreamبـRevision = erR6تُنتجان مستندات ترفض كلمة مرورها الصحيحة في نحو ملف من أربعة، لأن عدّاد جولات الخوارزمية 2.B في ISO 32000-2 §7.6.4.3 كان يبدأ جولة أقل من اللازم والجولة الزائدة تُغيّر قيم/Uو/Oو/UEو/OE - تُفتح الآن المستندات المُشفَّرة بـ R6 بكلمة مرور المستخدم أو المالك في أي قارئ مطابق، وترفض كلمة مرور خاطئة كما هي
مُضاف (Added)
- اكتسبت مجموعتا اختبار Lazarus و C++Builder تغطية تشفير كانت حكرًا على Delphi سابقًا: أطوال مفاتيح R6، وحقول قاموس Encrypt، وجولة تشفير وإعادة فتح متكررة، ورفض كلمة المرور الخاطئة
مُغيَّر (Changed)
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.57.2 بشكل متسق
Version 2.57.1
مُغيَّر (Changed)
- الكتابة في حقل نموذج، وتحريك المؤشر، وتبديل مربعات الاختيار تعيد الآن رسم المنطقة التي يبلغ PDFium أنها متضررة فقط بدلًا من العارض كله
- تُطبَّع صناديق الضرر لمحور Y الصاعد للصفحة، وتُوسَّع بكسلًا واحدًا لتبقى حدود عناصر الواجهة المُنعَّمة نظيفة، وتُقتطع إلى منطقة العميل المرئية
- لم يعد صندوق ضرر دُحر تمامًا خارج المنفذ يجدول إعادة رسم، بينما تظل الرؤية غير النشطة أو الصفحة غير المُخطَّطة تتراجع إلى إعادة رسم كاملة
- تغطي اختبارات Delphi و Lazarus و C++Builder الآن إبطال النماذج المحدود، وصناديق الصفحات المقلوبة، والصناديق خارج الشاشة، وسلامة العرض غير النشط
- يُبلّغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.57.1 بشكل متسق
Version 2.57.0
مُضاف (Added)
- يدعم
TPdfThumbnailView.Orientationتخطيطات الصور المصغّرة الرأسية والأفقية مع الحفاظ على القيمة الرأسية الافتراضية الحالية - تكشف
FirstVisiblePageIndexوLastVisiblePageIndexوEnsureCurrentPageVisibleمنفذ عرض الصور المصغّرة وتتحكم به باستخدام فهارس صفحات ذات أساس واحد
مُغيَّر (Changed)
- أصبح تغيير
CurrentPageIndexيمرّر الصورة المصغّرة المحددة إلى العرض في أي من الاتجاهين - تغطي اختبارات Delphi وLazarus وC++Builder الآن افتراضات الاتجاه والتبديل والنطاقات المرئية وظهور الصفحة المحددة
- يُبلغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.57.0 بشكل متسق
Version 2.56.2
مُغيَّر (Changed)
- تُبطّل
HighlightSearchTextوAddSearchTextHighlightوClearHighlightالآن مستطيلات الجهاز الخاصة بنطاقات البحث التي أُضيفت أو أُزيلت فقط بدلاً من إعادة طلاء العارض بالكامل - لا يحجز استبدال التظليلات بنفس المطابقات أو إلحاق مطابقات مكرّرة إعادة طلاء غير ضرورية
- تغطي اختبارات Delphi وLazarus وC++Builder الآن الإبطال المحدود والتحديثات التساكنية والمسح وأمان العرض غير النشط
- يُبلغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.56.2 بشكل متسق
Version 2.56.1
مُغيَّر (Changed)
- يعيد
TPdfThumbnailViewالآن استخدام الصور النقطية المرسومة للصفحات التي تبقى مرئية عبر عمليات إعادة الطلاء ومواضع التمرير المجاورة - يحتفظ المخزن المؤقت بنطاق الصفحات المرئية الحالي فقط ويُحرّر الإدخالات بدقة عند مغادرة الصفحات لذلك النطاق أو تغيير المستند المعيّن أو تغيير أبعاد الصور المصغّرة
- تغطي اختبارات Delphi وLazarus وC++Builder الآن إعادة استخدام المخزن المؤقت وتقليم منفذ العرض وإبطال الحجم واستبدال المستند وتدمير المكوّن
- يُبلغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.56.1 بشكل متسق
Version 2.56.0
مُضاف (Added)
- توفر
TPdfView.CutSelectedFormTextToClipboardوTPdfView.PasteFormTextFromClipboardتحرير حافظة Unicode لعنصر واجهة النموذج القابل للتحرير المركّز عليه
مُغيَّر (Changed)
- تعالج محررات النماذج المركّز عليها الآن اختصارات لوحة المفاتيح القياسية للنسخ والقص واللصق وتحديد الكل قبل تمرير إدخال النص إلى PDFium
- يرفض القص واللصق الحقول للقراءة فقط والجلسات التي تفتقر إلى صلاحية ملء النموذج أو التعديل، بينما ينجح القص في النسخ قبل إزالة النص المحدد
- تغطي اختبارات Delphi وLazarus وC++Builder الآن سلوك غياب التركيز وجولة اختصارات لوحة المفاتيح ورفض القراءة فقط
- يُبلغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.56.0 بشكل متسق
Version 2.55.0
مُضاف (Added)
- تُلحق
TPdfView.AddSearchTextHighlightالمطابقات الفريدة لمصطلح بحث آخر بتراكب الصفحة الحالي، ما يسمح لعدة استعلامات بالبقاء مظلّلة معاً
مُغيَّر (Changed)
- يظل
HighlightSearchTextنقطة الدخول البديلة ويشارك الآن الماسح الإضافي، بينما تُتجاهل نطاقات الأحرف المكرّرة ويزيلClearHighlightالمجموعة المتراكمة بالكامل - تغطي اختبارات Delphi وLazarus وC++Builder الآن تراكم الاستعلامات المتميزة وكبح النطاقات المكرّرة
- يُبلغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.55.0 بشكل متسق
Version 2.54.0
مُضاف (Added)
- يكشف
TPdfالآن لقطات كاملة لكائنات الصفحة وتحديثات النمط الدفعية وتحويلات الكائنات الأفينية وقطع المسار ومسارات القص وأبناء Form XObject - يشمل فحص الأحرف الآن ألوان التعبئة والحد، واسم الخط وخصائصه، وحدود المحارف الفضفاضة، والمصفوفات الفعّالة، ومقابض كائن النص، وتحويل فهرس الأحرف إلى نص
- تقوم التعليقات التوضيحية الآن برحلة ذهاب وإياب لهندسة الحدود وتدفقات المظهر العادية وعند المرور وللأسفل
- توفر أدوات الوصول الجديدة للصور المصغّرة الخام والمفكّكة، وتحويلات محتوى الصفحة والتعليقات التوضيحية، و
RenderPageWithMatrixمسارات عرض وتحرير متقدمة ومباشرة
مُغيَّر (Changed)
- يمكن تنفيذ تغييرات نمط كائن الصفحة كدفعة واحدة بحيث يعيد PDFium إنشاء محتوى الصفحة مرة واحدة فقط
- يستخدم عرض المصفوفة مسار الصورة النقطية الحالي بدون نسخ عندما يكون تخطيط الصورة النقطية الوجهة متوافقاً
Version 2.53.1
مُصلح (Fixed)
- يستخدم عنوان قائمة النسخ الصينية المدمج الآن نقاط رموز Unicode مستقلة عن الترميز ويُعرض بشكل صحيح في بناءات Lazarus
- يمكن لسلاسل أدوات Delphi الأقدم تجميع
FPdfAsyncعندما تُغفل وحدةWinapi.Windowsالخاصة بها تعريفGetTickCount64
Version 2.53.0
مُضاف (Added)
- تجهيز اختبار جديد
Tests.ApiCoverageيغطي واجهات TPdf العامة التي لم يكن لديها تغطية اختبار من الطرف إلى الطرف سابقاً:GetPageBox/SetPageBox(قراءة/كتابة MediaBox/CropBox، وأخطاء الصندوق المفقود، وجولة الحفظ)،FlattenPage/FlattenAllPages(قيمة الإرجاع والحفاظ على عدد الصفحات)،GenerateFormAppearances(عملية لا شيء على المستندات غير النموذجية)،SaveAsEncrypted/SaveAsEncryptedToStream(AES-256 مع جولة كلمة المرور — يتحقق من أن الملف المشفّر يرفض الفتح بدون كلمة المرور ويفتح بها)، والتحقق من حدودDeletePage(تُثير الصفحة 0 وخارج النطاقEPdfError)، وحراس التعليقات التوضيحيةHasContents/HasAuthorالمُقدّمة في v2.38.0 (يتحقق من أنDefault(TPdfAnnotation)تتركهاFalse)
Version 2.52.0
مُضاف (Added)
- تنسخ
TPdfView.CopySelectedFormTextToClipboardتحديد النص داخل عنصر واجهة AcroForm المركّز عليه إلى حافظة Windows كـCF_UNICODETEXT
مُغيَّر (Changed)
- تشارك عمليات نسخ نص الصفحة والنموذج المركّز عليه نفس كاتب حافظة Unicode الدفاعي وتترك الحافظة دون تغيير عندما يكون تحديدها فارغاً
- تغطي اختبارات Delphi وLazarus وC++Builder الآن استدعاءات نسخ النماذج غير النشطة أو غير المركّز عليها وجولة تحديد النموذج المركّز عليه عبر حافظة Windows
- يُبلغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.52.0 بشكل متسق
Version 2.51.0
مُضاف (Added)
- تحدد
TPdfView.SelectLineAtسطر النص المرئي الذي يحتوي على صفحة ذات أساس واحد وفهرس أحرف ذي أساس صفري دون طلب إدخال الفأرة
مُغيَّر (Changed)
- يشارك تحديد السطر البرمجي وتحديد النقر الثلاثي و
Shift+HomeأوShift+Endالآن نموذجاً واحداً لحدود السطر القائم على صناديق الأحرف - تغطي اختبارات Delphi وLazarus وC++Builder الآن تحديد السطر المستقر وفهارس الصفحات أو الأحرف غير الصالحة
- يُبلغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.51.0 بشكل متسق
Version 2.50.0
مُضاف (Added)
- يقبل
TPdf.LoadDocumentالآن فهرساً ذا أساس صفريIndexونافذةCountداخل مخزنTBytesمؤقت، ما يسمح بتحميل ملفات PDF المضمّنة دون تخصيص شريحة مصفوفة بايتات مؤقتة
مُغيَّر (Changed)
- يرفض تحميل نطاق البايتات النوافذ السالبة أو خارج الحدود قبل تغيير حالة المستند ويحافظ على خيارات العمر المخزّن مؤقتاً والمستعار الموجودة
- تغطي اختبارات Delphi وLazarus وC++Builder الآن نوافذ PDF المضمّنة ووسائط نطاق البايتات غير الصالحة
- يُبلغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.50.0 بشكل متسق
Version 2.49.1
مُضاف (Added)
- يدعم
TPdfView.FitModeالآنpfmFitHeightلملاءمة الصفحة الحالية مع الارتفاع المرئ لإطار العرض مع السماح بالتمرير الأفقي عند الحاجة
مُصلح (Fixed)
- تتقارب أوضاع الملاءمة الآن بعد أن يغير ظهور شريط التمرير منطقة العميل، مما يبقي نتائج fit-page وfit-width وfit-height متسقة بين VCL وLCL
- تغطي اختبارات العارض Delphi وLazarus وC++Builder الآن تحديد
pfmFitHeightورحلات تعداد الذهاب والإياب - يُبلغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.49.1 بشكل متسق
Version 2.49.0
مُضاف (Added)
- تغطي واجهة ربط PDFium العامة الآن جميع الدوال المصدّرة البالغ عددها 470 في ملفات الترويسة التي تمت مراجعتها، بما فيها وصف المرفقات عبر
FPDFAttachment_SetDescriptionوFPDFAttachment_GetDescription - يُعرض
TPdfالآن أوصاف المرفقات وصلاحية المراجع المتقاطعة وإزاحات نهاية trailer ومراجعة security-handler وتحميل الذاكرة 64-بت ونطاقات بايت التوقيع ونطاقات نص روابط الويب ولقطات موسعة لبيانات الصورة والفلتر والبيانات الوصفية وملف تعريف ICC - تدعم مساعدات النماذج الآن التركيز الأصلي على الحقول واستعلامات وتحديثات خيارات الاختيار المركزة وتوجيه عجلة الماوس وضربات الحبر القابلة للكتابة وتراكبات النماذج بعد العرض التدريجي
مُغيَّر (Changed)
- يصف
FormFieldCountوفهارس حقول النموذج وترتيب الجدولة الآن تعليقات الودجت فقط بدلاً من تضمين تعليقات الصفحة غير ذات الصلة - تدخل صفحات
TPdfبلا واجهة وتغادر دورة حياة صفحة تعبئة النموذج الآن حتى يعمل التركيز الأصلي وواجهات برمجة الحقول المركزة دونTPdfView - تخضع عمليات تصدير أوصاف المرفقات لبوابات القدرات حتى تتمكن التطبيقات التي تستخدم بناء PDFium أقدم من تحميل المكتبة والكشف عن الميزة غير المتاحة
مُصلح (Fixed)
- يرسم العرض التدريجي للصفحة الآن عناصر تحكم النموذج عند تمكين تعبئة النموذج
- تغطي اختبارات Delphi وLazarus وC++Builder الآن تشخيصات المستند الجديدة وأوصاف المرفقات ومسارات الحبر وسلوك النموذج ونطاقات بايت التوقيع ونطاقات روابط الويب والبيانات الوصفية للصور
- يُبلغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.49.0 بشكل متسق
Version 2.48.0
مُضاف (Added)
- يُعرض
TPdfMatrixالآن المصانع والاستنساخ والإسناد وتشخيصات الحالة المنتهية والقابلية للعكس والمقارنة القائمة على التسامح والوصول إلى الترجمة والإبلاغ عن المحدد والتحليل التآلفي - يدعم تركيب prepend والدوران المدرك لنقطة الارتكاز والتحجيم والميل والانعكاسات، بالإضافة إلى تعيين مستطيلات stretch وcontain وcover مساحات العمل المحلية والتخطيطات الملائمة دون حساب يدوي للمعاملات
- يوسع الوصول العكسي غير المُغيِّر وتعيين النقاط العكسية وتحويلات المتجهات والمربعات ودفعات النقاط والمستطيلات الديناميكية ومتغيرات in-place والحدود المُحوَّلة بمرور واحد السطح الهندسي القابل لإعادة الاستخدام
مُغيَّر (Changed)
- تُحدِّث الترجمة والتحجيم وانعكاسات المحاور الآن المعاملات المتأثرة فقط بدلاً من التوجيه عبر الضرب التآلفي العام
- يُطبِّع تحويل المستطيل مدخله مرة واحدة، ويستخدم مساراً دقيقاً متخصصاً مُحاذياً للمحور حيثما أمكن، ويحسب حدوداً دوارة عامة دون سجلات نقاط مؤقتة
- تُخصِّص تحويلات دفعات النقاط والمستطيلات مصفوفة نتائج واحدة أو تعيد استخدام تخزين المُستدعي، بينما تُجمَّع حدود النقاط المُحوَّلة في مرور واحد دون مصفوفة وسيطة
مُصلح (Fixed)
- يرفض تعيين المستطيلات النتائج ذات الحجم الصفري وغير المنتهية والمُفيضة لـ
Singleقبل نشر مصفوفة غير قابلة للاستخدام - تتحقق اختبارات Delphi وLazarus وC++Builder الآن من ترتيب التركيب وثوابت نقطة الارتكاز ورحلات الذهاب والإياب العكسية والمستطيلات الملائمة والتحليل وسلوك الهندسة بالجملة
- يُبلغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.48.0 بشكل متسق
Version 2.47.0
مُضاف (Added)
- يوفر
FPdfAsyncالآن أسباب إلغاء ورسائل مهيكلة وتسجيلات استدعاء قابلة للإزالة ومصادر قائمة على المهلة وانتظار الإلغاء وعمليات try-cancel الذرية عبر واجهات ممتدة تحافظ على واجهة برمجة التطبيقات الأصلية - يضيف
TPdfFuture<T>.RunExإرسال رد قابل للتكوين وأولوية العامل بينما تكشف أظرفة النتائج عن مُعرِّفات العمليات وصلاحية القيم وأسماء فئات الاستثناءات وتوقيت الإكمال ومساعدات الإكمال القابلة لإعادة الاستخدام - يضيف
TPdfAsyncExecutorمجموعة عمال ثابتة قابلة لإعادة الاستخدام بأربعة مسارات أولوية FIFO، وضغط خلفي اختياري لقائمة الانتظار المحدودة، ومقابض مهام قابلة للإلغاء، وانتظار مدرك للمهلة، ولقطات للمهام، وإحصائيات مجمعة، وإيقاف تشغيل سلس
مُغيَّر (Changed)
- يمكن للوظائف غير المتزامنة المتكررة إعادة استخدام خيوط العامل وعمليات قائمة الانتظار O(1) بدلاً من إنشاء خيط لكل مهمة، بينما يظل الإكمال المتزامن متاحاً لمضيفات واجهة المستخدم
- تحتفظ أعطال المنفذ والمستقبل بتشخيصات فئة الاستثناء ورسالته، ويحتفظ الإلغاء بسببه الأصلي، وتبقى استثناءات الاستدعاء معزولة عن دورة حياة العامل والإيقاف
- تغطي اختبارات Delphi وLazarus وC++Builder الآن سطح الإلغاء الموسع والبيانات الوصفية للمستقبل والتحكم في المهام والضغط الخلفي وترتيب الأولويات والإحصائيات والأعطال والإيقاف
مُصلح (Fixed)
- يتلقى مالكو الإلغاء المتزامن الآن نتيجة كاتب أول حتمية بدلاً من الاعتماد على تسلسل مراقبة وإلغاء منفصل
- يعالج انتظار خمول الخيط الرئيسي ردود المهام المتزامنة، مما يمنع العامل المكتمل من ترك المنفذ في حالة عدم خمول دائمة أثناء الإيقاف المنسق
- يُبلغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.47.0 بشكل متسق
Version 2.46.0
مُضاف (Added)
- يُعرض
FPdfAsn1الآن فئات المُعرِّفات وترميز وفك ترميز أرقام العلامات العالية 64-بت وسجلات TLV المُحلَّلة ونوافذ قارئ فرعية بنسخ صفري وفكاكات بدائية مُكتبة وفصوص محتوى أو قيم مُرمَّزة - تدعم كُتَّاب DER الآن نطاق INTEGER كامل 64-بت غير المُوقَّع، ومحتوى INTEGER عشوائي مُتحقَّق منه، وENUMERATED، والاختيار التلقائي لـ UTCTime أو GeneralizedTime، وعلامات application وprivate، وSEQUENCE متعددة القيم، ومخرجات SET OF مرتبة بشكل قياسي
- يُرجع
ValidateDerأخطاء تحقق مدركة للإزاحة مع فرض حدود قابلة للتكوين للتداخل وعدد العقد وطول المحتوى وعدد الأخطاء والجذر والترتيب الاختياري لـ SET
مُغيَّر (Changed)
- يستخدم تسلسل DER وتركيب القيم المتعددة تخصيص مُخرج واحد، وتكشف مخازن الكاتب عن عمليات reserve وcount وcapacity ونقل الملكية، ويستخدم ترتيب SET OF الآن فرز الدمج
O(n log n) - تتلقى قيم BOOLEAN وINTEGER وBIT STRING وOBJECT IDENTIFIER وNULL وUTF8String وPrintableString وIA5String وUTCTime وGeneralizedTime فحوصات الشكل القياسي أثناء الترميز أو فك الترميز المُكتب أو التحقق
- تُصدِّر حزمة وقت تشغيل Lazarus الآن
FPdfAsn1، وتُمارِس مجموعات اختبار Delphi وLazarus وC++Builder نفس سطح DER العام
مُصلح (Fixed)
- لم تُقتطع أرقام علامات context-specific الأكبر من 30 بعد الآن في البتات الخمس المنخفضة للمُعرِّف
- تُرفض مُعرِّفات العلامات العالية المشوهة والأطوال المحددة غير الدنيا وUTF-8 غير الصالح وحشو BIT STRING غير الصفري وحقول الوقت غير الصالحة والجذور الزائدة وانتهاكات حدود الموارد بشكل حتمي
- يُبلغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.46.0 بشكل متسق
Version 2.45.0
مُضاف (Added)
- يُعيِّن
FPdfPreflightReportالآن خطورة Info أو Warning أو Error لكل مشكلة ويُعرض واجهات برمجة تطبيقات للخطورة والحالة والفئة وissue-code والبحث والlookup والتسطيح والتصفية على مستوى المعيار والتقرير - تُصدِّر تقارير preflight الآن SARIF 2.1.0 وJUnit XML وNDJSON وXML أصلي عبر طرق
To*وSave*ToFileالمطابقة لمسارات CI والأتمتة والدفق - تُحدِّد بصمات تقارير SHA-256 المستقرة نتائج التحقق المكافئة بشكل مستقل عن مسارات المصدر وطوابع زمن الإنشاء
مُغيَّر (Changed)
- تتضمن تقارير JSON وCSV وtext وMarkdown وHTML الآن الخطورة وملخصات حالة موسعة؛ يضيف HTML تسميات توضيحية للجداول يمكن الوصول إليها وملخص حالة
- يستخدم بناء مجموعات المشكلة والمعيار نمواً هندسياً للسعة، وتكون نتائج الاستعلام مُحجَّمة مسبقاً، ويكتب تخطي JSON في مخزن مُخرج واحد محدود، وتستخدم جميع ملفات التقارير كاتب UTF-8 مباشر واحد
- تستخدم ملخصات فئات المشكلة ترتيباً حتمياً، وتتضمن الطوابع الزمنية المللي ثانية، ويحمل JSON
formatVersion: 2، وتُحيِّد خلايا CSV صيغ جداول البيانات
مُصلح (Fixed)
- يحافظ تصدير JSON الآن على أزواج Unicode التكميلية الصالحة ويستبدل وحدات كود UTF-16 البديلة المعزولة بدلاً من إصدار بيانات قياسية مشوهة
- يتهرب تصدير HTML الآن من الفواصل العليا، وتملك عروض التقارير المُصفَّاة مصفوفات مشكلة مستقلة بدلاً من مشاركة تخزين نتائج قابل للتغيير
- يُبلغ
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف المُثبّت الآن عن Version 2.45.0 بشكل متسق
Version 2.44.0
تمت الإضافة (Added)
- تكشف الإشارات المرجعية والوجهات عن الحالة المفتوحة، وعدد السلال، وأهداف الإجراءات، وأوضاع عرض الوجهة، وما يصل إلى أربع معاملات عرض
- توفر
MetadataوGrantedPermissionsوUserGrantedPermissionsوHasPermissionوUserHasPermissionلقطات مفهرسة لفحص المستند واستعلامات الأذونات - يقوم
ExtractThumbnail(PageNumber)بعرض الصفحة المطلوبة دون تغيير الصفحة النشطة، وتكشف نتائج طوابع زمن RFC 3161 عن السياسة ووقت التوليد وتفاصيل الـ nonce
تم التغيير (Changed)
- تستخدم مسارات الإشارات المرجعية وJavaScript والبيانات التعريفية والوجهة والصور المصغرة مخازن مؤقتة محددة من مرورين ومجموعات نمو هندسية وعبوراً آمناً من الحلقات
- يحل المعالجة اللاحقة للحفظ الكتالوج النشط وشجرة الصفحات وإجراء الفتح عبر مراجعة xref الحالية، ويخزن مؤقتاً تدفقات الكائنات المفككة، ويمسح قواميس PDF مع حدود معجمية
- يفرض تحليل PDF المشترك الآن ترويسات كائنات دقيقة، وأجيالاً، ومفاتيح قواميس، وأطوال تدفقات، وهندسة المتنبئ، ونطاقات الأعداد الصحيحة، وحدود التعليقات والسلاسل الحرفية والسلاسل السداسية العشرية
- يربط التحقق من استجابة RFC 3161 الآن كلاً من الـ nonce وSHA-256
messageImprint، ويتطلب موقّعاً صالحاً بنيوياً، ويطبق قواعد DER الصارمة للطول وOID وINTEGER وGeneralizedTime
تم الإصلاح (Fixed)
- لم تعد المستندات التزايدية تختار كتالوجات مكررة غير نشطة أو لواحق مرجعية تالفة عند إضافة إجراء فتح افتراضي
- تحتفظ رموز الطوابع الزمنية ذات أطوال DER طويلة الشكل بالرمز المُرمَّز بالكامل، بينما يتم رفض ترتيب حقول CMS الاختيارية التالفة ومجموعات الموقّعين الفارغة
- تكتب الآن بنيات Delphi النظيفة حقول بذور الـ nonce لـ PAdES من خلال نسخ بايتية محاذية آمنة وتمرر بايتات استجابة XFA بنوع المؤشر الأصلي الدقيق
- يذكر
TPdf.AboutInfoوالبيانات التعريفية لحزمة Lazarus والبيانات التعريفية لبرنامج التثبيت الآن Version 2.44.0 بشكل متسق
Version 2.43.0
تمت الإضافة (Added)
- تكشف سجلات حقول XFDF والتعليقات التوضيحية الآن عن أعلام الحضور التي تميز بين قيمة XML المحذوفة والقيمة الفارغة صراحة
تم التغيير (Changed)
- يقبل استيراد XFDF العناصر والسمات ذات البادئات المساحية الاسمية، ومحتوى النص المختلط وCDATA، ومراجع الكيانات، والقيم ذات المسافات البيضاء الهامة بينما يرفض مراجع Unicode العددية غير الصالحة
- يستخدم استيراد وتصدير XFDF مطابقة الحقول المفهرسة ومخازن هندسية مؤقتة محدودة، مما يحسن معدل الإنتاجية وسلوك التخصيص الأقصى للنماذج المتداخلة بعمق، ومجموعات التعليقات التوضيحية الكبيرة، وقوائم الحبر، والرؤوس، ورباعيات الأضلاع المحددة
- يستخدم تدقيق PDF/A وPDF/UA نمواً محدوداً لمجموعات الصفحات الكبيرة، والتدفقات، وأسماء البنية، ومجموعات RoleMap؛ ويتبع تحليل RoleMap لـ PDF/UA الآن المصفوفات المباشرة وكائنات الأسماء أو المصفوفات غير المباشرة ذات التوليد الدقيق
تم الإصلاح (Fixed)
- تحافظ عمليات التحويل الدائري لـ XFDF الآن على مسارات الحقول المتداخلة بعمق، وقيم الحقول الفارغة صراحة، ومحتويات التعليقات التوضيحية الفارغة صراحة، والتمييز بين المحتويات الغائبة والفارغة
- يتم رفض عمليات تحميل مخزن الذاكرة المؤقت غير الصالحة وتعيينات الصفحات الخارجة عن النطاق دون ترك حالة مستند أو صفحة جزئية، وإعادة تحميل الصفحة الأصلية الفاشلة تحافظ على الصفحة النشطة سابقاً
- يتم تحديد مُعرفات المحتوى المحدد الكبيرة ومخازن البيانات التعريفية للتوقيع المؤقتة والتحقق من صحتها قبل التخصيص أو الوصول الأصلي
Version 2.42.0
تمت الإضافة (Added)
- يوفر
TPdfMatrixالآنInvertوTryInvertوTransformPointوTransformRectلرسم الخرائط الإحداثية، واختبار الضرب، والحدود المقيسة، ومعالجة المصفوفة المفردة الصريحة - اكتسب
TPdf.WrapTextحملاً زائداً لـBreakLongWordsيقسم نصوص CJK والنصوص الأخرى بدون مسافات مع الحفاظ على أزواج بدائل UTF-16 الصالحة معاً - يكشف
TPdfAnnotation.AttachmentPointSetsعن كل شكل رباعي الأضلاع في التعليقات التوضيحية للعلامات متعددة الأسطر بينما يظل حقلAttachmentPointsالحالي اسماً مستعاراً للمجموعة الأولى
تم التغيير (Changed)
- يستخدم الآن استخراج النصوص، وبناء المحتوى المقروء، والبحث عن الكلمات، ورسم خرائط إزاحة النصوص المنطوقة تخصيصاً محدوداً ومسارات بحث ثنائية، مما يقلل من التخصيصات المتكررة والمسوح الخطية في الصفحات الكبيرة
- يستخدم تسلسل ASN.1 وتوليد PDF المشفر الآن مخازن إخراج هندسية مؤقتة؛ ويستخدم ترتيب الكائنات المشفرة فرز
O(n log n)وتُكتب صفوف xref مباشرة في المخزن المؤقت النهائي - يحافظ
WrapTextعلى حدود الأسطر لـ CR وLF وCRLF ويعيد استخدام كائن قياس أصلي واحد للعملية بأكملها - يحافظ استيراد وتصدير XFDF على كل شكل رباعي الأضلاع للعلامات؛ ويقوم الاستيراد أيضاً بتطبيق ألوان RGB/الداخلية ويحلل الإحداثيات العشرية بشكل مستقل عن لغة العملية
تم الإصلاح (Fixed)
- يمكن للمستدعين القدامى مرة أخرى تحديث محتوى التعليق التوضيحي والمؤلف عن طريق تعيين سلاسل غير فارغة دون تعيين حارسي
HasContentsوHasAuthorالأحدث - تستخدم سلاسل التعليقات التوضيحية الفارغة صراحة الآن مخزناً مؤقتاً أصلياً صالحاً ومنتهياً بصفر، لذا فإن مسح
/Contentsو/Tومفاتيح النصوص الاختيارية الأخرى لم يعد يمرر مؤشراً فارغاً (nil) إلى PDFium
Version 2.41.0
تم التغيير (Changed)
- تقوم تقارير Preflight الآن عند استخدام
SaveJsonToFileوSaveMarkdownToFileوSaveTextToFileبالكتابة بترميز UTF-8 على Delphi (بما يطابقSaveHtmlToFileالحالي)، بدلاً من صفحة رموز ANSI الخاصة بالنظام؛ حيث كانت الحروف غير اللاتينية (Non-ASCII) في مسارات الملفات والتوصيات وملاحظات النطاق تظهر مشوهة على Delphi عند حفظها باستخدام هذه الطرق - يقوم
SaveCsvToFileالآن بالكتابة بترميز UTF-8 مع بادئة BOM، لكي يتعرف Excel لنظام Windows تلقائياً على الترميز؛ وبدون BOM، يتعامل Excel مع ملف CSV بترميز UTF-8 كصفحة رموز 1252 ويشوه أي حروف غير لاتينية (non-ASCII)
تم الإصلاح (Fixed)
- كان نموذج
ExtractImagesالتجريبي يسرب كائناتTBitmapالمخزنة مؤقتاً فيFExtractedImagesعند إغلاق النموذج دون مسحها صراحةً أولاً؛ وأصبح النموذج الآن يلغيDestroyلاستدعاءClearExtractedImages، مما يحرر كل صورة bitmap مخزنة مؤقتاً
Version 2.40.0
تم التغيير (Changed)
- يقوم
TPdf.RenderPage(HDC, ...)الآن بحجب استثناءات FPU/SSE حول استدعاءFPDF_RenderPage، بما يطابقTPdfView.RenderPage(HDC)(الذي تم إصلاحه في v2.25.0) وكل نقطة إدخال عرض تعيد bitmap؛ وكان الحمل الزائد المباشر إلى DC على مستوىTPdfيترك استثناءات FPU غير محجوبة سابقاً في مصرفات ما قبل D12
تم الإصلاح (Fixed)
- يعيد
ColorToARGBالآن بكسلاً شفافاً بالكامل (alpha 0) لقيمclNoneوclDefaultبدلاً من معاملة القيمة الحارسة كألوان RGB حرفية؛ حيث كان السلوك السابق ينتج تعبئة داكنة وشبه معتمة عندما يمرر المستدعيclNoneمتوقعاً "بلا لون"
Version 2.39.1
تم الإصلاح (Fixed)
- تقوم عمليات حفظ PDF 1.3 الصريحة الآن بإزالة إدخالات
/SMask /Noneو/AIS falseو/TK trueالتي تكرر فقط حالة الرسومات الأولية مع الاستمرار في رفض حالة الشفافية غير الافتراضية
Version 2.39.0
تم التغيير (Changed)
- يستخدم
CreatePDFوImageToPDFالآن وجهات حفظ مؤكدة ويبلغان عن النجاح فقط عند اكتمالSaveAsبنجاح - تقوم
BatchExportوPDFtoJpgوSplitPDFالآن بتخصيص أدلة إخراج فريدة لكي تحافظ عمليات التشغيل المتكررة والمدخلات ذات الأسماء المتطابقة على النتائج السابقة - يقوم
SplitViewالآن بإنهاء البحث مرة واحدة دون ترك حالة صفحة مخفية بعد الإلغاء أو عدم التطابق، ويجهض مهام الطباعة غير المكتملة بدلاً من تقديم إخراج جزئي
تم الإصلاح (Fixed)
- يرفض
MergePDFالآن رموز نطاقات الصفحات المشوهة ومسارات الإخراج التي تفرط في كتابة المصدر، ويحسب الصفحات التي تم استيرادها بالفعل، ويرفض حفظ نتيجة فارغة - تلتزم عروض
Attachmentالتوضيحية في Delphi وC++Builder بحفظ نفس المسار من خلال استبدال ملف آمن للتراجع بحيث لا يمكن أن تؤدي التسمية الفاشلة إلى إزالة ملف PDF الأصلي
Version 2.38.0
تم التغيير (Changed)
- يقوم
SetAnnotationDataالآن بحماية عمليات كتابة/Contentsو/Authorخلف حارسيHasContents/HasAuthorفيTPdfAnnotation، بما يطابق نمطHasName/HasSubject/HasIconالحالي؛ وسابقاً كان يتم كتابة هذين الحقلين دون قيد أو شرط، لذا فإن تعيين سجلDefault(TPdfAnnotation)لتحديث اللون أو الأعلام فقط كان يفرط في كتابة محتوى ومؤلف التعليق التوضيحي الحاليين بسلاسل فارغة؛ ويقومGetPageAnnotationالآن بتعيين الحراس بحيث تحافظ دورة القراءة والتعديل والكتابة على القيم الأصلية
تم الإصلاح (Fixed)
- يقوم
GenerateFormAppearancesالآن بقراءة قيمة مربع الاختيار/زر الاختيار عبرFPDFAnnot_GetFormFieldValue(الذي ينتقل إلى قاموس الحقل الأب وفقاً لـ ISO 32000-1 §12.7.5) بدلاً منFPDFAnnot_GetStringValue(Annot, 'V', ...)(الذي يقرأ قاموس الأداة)؛ ولا تحمل الأداة عادةً أي/V، لذا لم يتم مطلقاً مزامنة/ASمع الحالة المحددة ويتم عرض مربع الاختيار/زر الاختيار المسطح كغير محدد
Version 2.37.0
تم التغيير (Changed)
- يقوم
ParseTsaUrlالآن بتقييد المنفذ إلى1..65535بعد التحليل؛ وإلا فإن قيمة المنفذ ذات الحجم الزائد ستلتف عبر اقتطاعDWORDويمكن أن تستقر على منفذ صالح - تقبل
ParseFieldالخاصة بـ XFDF الآن معامل عمق (الافتراضي 0، والحد الأقصى 64)، وتعيد حقلاً فارغاً عند بلوغ الحد؛ لذلك لم تعد سلسلة<field>خبيثة بعمق 100 000 مستوى قادرة على التسبب في stack overflow
تم الإصلاح (Fixed)
- يحترس طلب TSA HTTP الآن من جسم الطلب الفارغ قبل تمرير
@ReqDer[0]إلىWinHttpSendRequest؛ حيث إن إلغاء إشارة مصفوفة ديناميكية ذات طول صفري سيصل إلى مؤشر غير مؤسس؛ ويعيدBuildTimeStampReqدائماً SEQUENCE غير فارغ، ولكن موقع الاستدعاء الآن يحمي العقد
ملاحظات (Notes)
- تم تصحيح تعليق رأس
FPdfTsaWinحول التحقق من إلغاء HTTPS؛ حيث يتحقق WinHttp من سلسلة شهادات الخادم افتراضياً ولكنه لا يجري فحص إلغاء CRL/OCSP ما لم يتم تمكينه صراحةً عبرWinHttpSetOption؛ والعبارة السابقة كانت تدعي أن التحقق من الإلغاء "يأتي مجاناً"، وهو أمر مضلل
Version 2.36.0
تم التغيير (Changed)
- ترسل طلبات TSA HTTP الآن رأس
Content-Lengthصريحاً بالإضافة إلى رأسيContent-TypeوAccept؛ ويقوم WinHttp بتركيبه من الطول الإجمالي، ولكن بعض وكلاء RFC 3161 يتطلبون رأساً صريحاً ويرفضون الطلب بـ411 Length Requiredبدونه - يسقط تصدير XFDF الآن رموز التحكم C0 (بخلاف TAB/LF/CR المهربة بالفعل) بدلاً من إصدار تسلسل مائل عكسي وست عشري غير صالح؛ فالهروب السابق
\-01Fليس XML صالحاً (ليس للشرطة المائلة العكسية معنى خاص في XML)، لذا فإن أي قارئ متوافق كان سيرفض المستند كونه مشوهاً - يقوم
InjectAssociatedFilesالآن بكتابة/Subtypeفي قاموس تدفق EmbeddedFile عندما يوفر المستدعيTAssociateFile.MIMEType؛ وقد تم التصريح عن الحقل وتوثيقه ولكن المحقن كان يكتب سابقاً/Type /EmbeddedFileبشكل ثابت ويتجاهله (يسمح ISO 32000-2 §7.11.4 بوجود/Subtypeفي التدفق)
تم الإصلاح (Fixed)
- يتخطى استيراد XFDF بايت المحتوى الأول بعد UTF-8 BOM والبايت الأول عند عدم وجود BOM؛ حيث استخدمت استدعاءات
BytesToAnsi(Bytes, 4, ...)(BOM) وBytesToAnsi(Bytes, 1, ...)(بدون BOM) إزاحات بدء غير دقيقة لأنBytesToAnsiيأخذ فهرس مصفوفة يبدأ من 0؛ وتستخدم الاستدعاءات الآن3و0 - كان لدى
ExtractSignatureValueخطآن في إزاحةifالمتدلية حيث تم تشغيلR.Position:= CNدون قيد أو شرط لفروعcertificates [0]وsignedAttrs [0]الاختيارية؛ وتم تغليف الفروع الآن بـbegin/endبحيث يتم تقديم الموضع فقط عند قراءة TLV الاختياري بالفعل (تم إصلاح نفس فئة الأخطاء فيAddSignatureTimestampToCmsفي v2.22.0)
Version 2.35.0
تم التغيير (Changed)
- تأخذ
TFPDFAvail_IsDocAvailوTFPDFAvail_IsPageAvailوTFPDFAvail_IsFormAvailالآنhints: PFX_DOWNLOADHINTSبدلاً منvar hints: FX_DOWNLOADHINTS، بحيث يمكن الوصول من Delphi إلى وضع الاستعلام فقطnullptrالموثق (التحقق من التوفر الحالي دون طلب المزيد من البيانات)؛ ويسمح رأس PDFium صراحةً بأن يكونhintsفارغاً؛ وقد جعل ربطvarالسابق ذلك مستحيلاً - تأخذ
TFPDF_SetSystemFontInfoالآنpFontInfo: PFPDF_SYSFONTINFOبدلاً منvar pFontInfo: FPDF_SYSFONTINFO، بحيث يمكن للمستدعين تمريرnilلإخبار PDFium بالتوقف عن استخدام واجهة خط النظام المسجلة سابقاً (مسار التعطيل الموثق) - تحسب
TPdfThumbnailView.PaintالآنVisibleRowsبنفس صيغةUpdateScrollBarRange(ClientHeight div RowHeight)، بحيث يتطابق عدد الصفوف المرسومة مع حجم صفحة شريط التمرير؛ وصيغة الرسم فقط السابقة ((ClientHeight - FMarginY) div RowHeight + 1) كانت تختلف بمقدار صف واحد عند الحواف المرتفعة، مما يهدر العرض على صف خارج الصفحة أو يفتقد الصف المرئي الأخير
Version 2.34.0
تمت الإضافة (Added)
TPdf.SaveAsEncrypted/SaveAsEncryptedToStream— واجهة برمجية عالية المستوى تحفظ المستند ثم تشفره باستخدام PDF 2.0 AES-256-CBC (V=5/R=5/R=6)؛ وتأخذTPdfEncryptOptionsمع كلمة مرور المستخدم/المالك والأذونات والمراجعة؛ وتفوض إلىEncryptDocumentBytes- تشفير السلسلة الحرفية StrF: يقوم
EncryptDocumentBytesالآن بتشفير السلاسل الحرفية(...)في الكائنات غير المتدفقة (قاموس المعلومات، وما إلى ذلك) إلى سلاسل سداسية عشرية AES-256-CBC، بما يطابق تنسيق تشفير التدفق (16 بايت IV + نص مشفر PKCS7)؛ وتُترك السلاسل السداسية العشرية<...>دون تغيير
Version 2.33.0
تمت الإضافة (Added)
- محقن تشفير AES-256-CBC للمستند بأكمله في وحدة
FPdfEncrypt.pas؛ حيث يأخذEncryptDocumentBytesملف PDF بنص واضح وكلمة مرور، ويشفر كل كائن تدفق غير مباشر (16 بايت IV + AES-256-CBC PKCS7 تحت مفتاح الملف)، ويصحح/Length، ويضيف كائن قاموس/Encrypt، ويعيد بناء جدول مرجعي كلاسيكي كامل للمستند بالإضافة إلى المقطع الدعائي مع/Encryptو/ID؛ ويكمل مكدس تشفير PDF 2.0 (كتلة AES + GCM + SHA-512/384 + اشتقاق مفتاح R6 + القاموس + مسح المستند) - مساعد
EncryptStreamPayload— تنسيق تدفق PDF 2.0 AES-256 (IV مسبق للنص المشفر AES-CBC-PKCS7)، وهو قابل لإعادة الاستخدام من قبل المستدعين الذين يديرون تخطيط الكائنات الخاص بهم
Version 2.32.0
تمت الإضافة (Added)
- أضيفت الوحدة
FPdfSha512.pasلحساب SHA-512 / SHA-384 وفق FIPS 180-4 بتنفيذ pure Pascal. تحتاجها دورة hash لكلمة المرور في PDF 2.0 R6، التي تستخدم قيمة mod-3 ذات 128-bit لاختيار SHA-256/384/512 في كل جولة. جرى التحقق باستخدام اختبار الإجابة المعروفة FIPS-180-4 B.1 - تضيف الوحدة
FPdfEncrypt.pasاشتقاق مفاتيح تشفير PDF 2.0 وبناء قاموس Encrypt. تنفّذ الخوارزمية 2.B من ISO 32000-2 §7.6.4.3 (دورة hash الخاصة بـ R6: AES-128-CBC مع اختيار SHA-256/384/512 تكرارياً)، وتشتق مفتاح تشفير الملف بطول 32-byte وإدخالات/Oو/Uو/OEو/UEو/Perms، وتبني قاموس Encrypt بقيم V=5/R=5/R=6 و/CFM /AESV3. تستخدم مخازن بايتات بأسلوب TBytes
Version 2.31.0
تمت الإضافة (Added)
- تضيف الوحدة
FPdfAes.pasأساسيات block cipher لـ AES وفق FIPS 197: تنفيذ pure Pascal لكل من AES-128 وAES-256، مع أدوات CBC وbackend لـ CSPRNG. تؤكد اختبارات الإجابة المعروفة في FIPS-197 Appendix C.2 / C.3 صحة التنفيذ. وهذه هي القاعدة التشفيرية لمكدس تشفير PDF 2.0 - تشفير مصادق AES-GCM (NIST SP 800-38D) في وحدة
FPdfAesGcm.pasالجديدة؛ حيث تنفذ GHASH (ضرب GF(2^128))، وGCTR وبنية GCM AEAD فوق بدائيات كتلة AES؛ وتطابق حالات اختبار NIST GCM 1 و3 (AES-128) النص المشفر والعلامة الرسمية تماماً؛ وحالة الاختبار 13 (AES-256) تدور دورة كاملة؛ وGCM هو وضع ISO/TS 32003 لـ PDF 2.0 - التحقق من سلامة ParentTree وClassMap لـ PDF/A Level A (ISO 19005-1 §6.8.3)؛ حيث يعلم
pvaiParentTreeMissingعن StructTreeRoot بدون شجرة أرقام /ParentTree؛ ويعلمpvaiClassMapUnresolvedعن مرجع فئة /C بدون /ClassMap
Version 2.30.0
تمت الإضافة (Added)
- حقن الملفات المرتبطة (
InjectAssociateFiles/TPdf.SaveAsWithAssociateFiles، ISO 32000-2 §7.11.4)؛ حيث تربط وحدةFPdfAssocFilesالجديدة مصفوفات/AFلمراجع مواصفات الملفات بالفهرس أو قاموس أي صفحة، وتغطي جميع قيم/AFRelationshipالثمانية الواردة في ISO 32000-2 Table 45; وتعيد استخدام نمط التحديث المتزايد الذي أثبت كفاءته بواسطةInjectPadesDssMarkers - دعم PDF/X-6 (ISO 15930-9:2020)؛ حيث يضيف
TPdfXConformanceالرمزpxc6؛ ويمرره المحقن والمدقق عبر تعريفpdfxid:GTS_PDFXVersion؛ وPDF/X-6 هو الخلف المعتمد على PDF 2.0 لـ PDF/X-4 للتبادل الكامل - يحظر PDF/A إجراء
/Thread(فجوة القائمة البيضاء في ISO 19005-1 §6.6.1); وتغطي قائمة الإجراءات المحظورة الآن Thread بجانب Launch وResetForm وImportData وSetOCGState وSetState وGoTo3DView وRendition وHide
تم الإصلاح (Fixed)
- يحترم مسار التحقق من PDF/A-4e الآن نفس عمليات التحقق من البنية المحددة بعلامات وMarkInfo وفواصل الكلمات كما في Level A؛ وكان خفض جانب الحفظ في v2.29.0 يغطي
PdfAIsLevelE، ولكن ثلاث بواباتValidatePdfAComplianceتحققت منPdfAIsLevelAوحده، لذا مر مستند PDF/A-4e الذي يفتقر إلى البنية المحددة بعلامات دون إخطار - انحراف اختبار OCG
/BaseState: وسعت مرحلة PostProcess في v2.28.0 القبول بشكل صحيح ليشمل/ONأو/OFF(ISO 32000-1 Table 8.70)، ولكن اختبارات Delphi وC++ كانت لا تزال تتوقع رفض/OFF؛ وتستخدم الاختبارات الآن قيمة غير صالحة حقاً (/Undefined) ويقفل اختبار إيجابي جديد قبول/OFF - مطابقة Geospatial
/Subtype /GEOالزائدة: طابقتContainsDictionarySubtype('GEO')أي قاموس يحمل الرمز، بما في ذلك القواميس غير ذات الصلة مثل/ViewerPreferences << /Subtype /GEO >>الضال؛ ويتطلبContainsMeasureDictionarySubtypeالجديد بالإضافة إلى ذلك/Type /Measureأو مفتاحاً شقيقاً حصرياً لـ Measure، لذا لم تعد القواميس غير المخصصة لـ Measure تشغل متطلبات ADBE ExtensionLevel 3
Version 2.29.0
تمت الإضافة (Added)
- دعم PDF/A-4 (ISO 19005-4:2020) عبر المدقق ومحقن XMP وطبقة نموذج كائن Pdfium؛ حيث يضيف
TPdfAConformanceالرموزpac4baseوpac4fوpac4e؛ والمستوى الأساسي هو PDF 2.0 (ISO 32000-2) ويستبدل مستويات A/B/U القديمة بالأساسي + F (النموذج) + E (إمكانية الوصول)؛ ويقرأValidatePdfAحزمةpdfaid:part=4XMP (المستوى الأساسي يحذف عنصر المطابقة)، ويصدرهاSaveAsPdfA، ويقبلSignPadesWithPdfAالرمزpac4baseكوعاء أرشيف طويل الأجل - ربط
FPDFBookmark_GetColor— التصدير العام الأخير غير المرتبط لـ PDFium (469/469)؛ ويكتسبTBookmarkحقليHasColorوColorالمكتوبين من مصفوفة الإشارات المرجعية/C(ISO 32000-1 §12.3.3); ويستخدم الربط تحميلاً متسامحاً بحيث تستمر مكتبات DLL القديمة التي تسبق التصدير في العمل - فحص إصدار رأس PDF/E-1 (ISO 24517-1 §5) وهو
pveiBadPdfVersion— حيث يعتمد PDF/E-1 على PDF 1.6 ويتم الآن تميز الرأس غير المتوافق مع 1.6 بالرمز - التحقق
pvriEncryptVersionMismatchلـ PDF/R-1 (ISO 23504-1) — حيث يُسمح بالتشفير فقط على رأس%PDF-2.0؛ ويتم الآن تميز نص 1.x الذي يحمل/Encryptبالرمز (سابقاً كانت عبارة بلا تأثير) - التحقق
pvriBadMediaBoxلـ PDF/R-1 — حيث يجب أن يكونMediaBoxلكل صفحة[0 0 w h]؛ ومؤشرPdfRHasNonZeroMediaBoxOriginهو ماسح ضوئي ASCII مستقل عن اللغة يتخطى صناديق MediaBox ذات المراجع غير المباشرة - التحقق
pvaiRoleMapUnresolvedلـ PDF/A Level A (ISO 19005-1 §6.8.3.4) — يتم الآن تميز RoleMap الموجود ولكنه غير مكتمل والذي يترك أنواع البنية المخصصة/Sغير مخططة، مما يسد الفجوة التي خلفها فحص وجودpvaiRoleMapMissingالحالي فقط
تم الإصلاح (Fixed)
- أعاد
PdfVersionToName(20)القيمة"1.0"بدلاً من"2.0"، مما أدى إلى تلف إدخال/Versionللفهرس ورسائل المدقق لكل حفظ لـ PDF 2.0؛ ويقوم المنسق الآن بتقسيم major.minor صراحةً لرموز الإصدارات>= 20 - فشل ترجمة برنامج ترميز INTEGER السالب في
FPdfAsn1.pasتحت Delphi 12 (خطأE2015عندInteger(-(V<0)))، مما منع مشروع الاختبار بأكمله؛ وتم الإصلاح باستخدامInt64(-Ord(V<0))لقناع امتداد الإشارة - تشمل قائمة التعليقات التوضيحية المحظورة لـ PDF/A الآن
/RichMediaعبر جميع الأجزاء (فاتت سابقاً؛ ويحظرها ISO 32000-1 §12.5.6.35 في PDF/A)
Version 2.28.0
تمت الإضافة (Added)
- يتضمن
TPdfVersionالآنpv20لـ PDF 2.0 (ISO 32000-2); ويعيدDecodePdfVersion(20)القيمةpv20بدلاً منpvUnknown، ويصدرEncodePdfVersion(pv20)القيمة 20 حتى لا يفقد إصدار مستند PDF 2.0 عند إعادة القراءة ويمكن كتابته صراحةً
تم التغيير (Changed)
- يقوم
DecodeDateالآن بتحليل سلاسل تاريخ PDF مع الحقول اللاحقة الاختيارية وفقاً لمرجع PDF 3.8.3، بدلاً من طلب نموذجD:YYYYMMDDHHmmSSOHH'mm'الكامل المكون من 23 حرفاً؛ وأصبحت التواريخ المقتطعة المتوافقة مثلD:20260712وD:20260712153000وD:20260712153000Zمقبولة الآن; بينما كان يتم رفضها سابقاً بواسطة بوابة صلبةLength=23؛ ويتم التحقق من إزاحة ساعة المنطقة الزمنية الآن مقابل نطاق UTC-12..UTC+14 الفعلي بدلاً من> 23 - يقوم
FPdfMeasure.MeasureTextالآن بترميز اسم الخط كـ FPCAnsiString/ DelphiUTF8Encode، بما يطابق مواقع استدعاء FPDF_BYTESTRING الأخرى للمكتبة، بدلاً من تحويلAnsiStringالمجرد الذي شوه أسماء العائلات غير اللاتينية عبر صفحة الرموز الحالية
تم الإصلاح (Fixed)
- تعطل مسار القيمة السالبة لـ
TDerWriter.Integerأو أنتج DER مشوهاً؛ حيث تركت الحلقةwhile V <> -1 do V := V shr 8المتغيرInnerفارغاً لـValue = -1(خطأ النطاق فيInner[Length(Inner)-1]اللاحق) وأنتجت بايتات زائدة للقيم السالبة الأخرى؛ ويستخرج المرمز الآن بايتات المكمل الثنائي مع إزاحات امتداد الإشارة ويتوقف بشكل صحيح عندما يكون المتبقي هو امتداد إشارة نقي؛ وحقول CMS/PAdES INTEGER موجبة، لذا يؤثر this فقط على المستدعين الذين يمررون قيماً سالبة، ولكن المسار أصبح صحيحاً الآن - تجاهل
TPdf.GetCharacterOriginوTPdfView.GetCharacterOriginقيمة إرجاعFPDFText_GetCharOriginوأعادا نقطة غير مهيأة عند الفشل؛ وتتم الآن تهيئة النتيجة إلى الصفر ويعيد الاستدعاء الفاشل نقطة الأصل (بما يطابق عقدGetCharacterRectangle)
Version 2.27.0
تم التغيير (Changed)
- تغلف عروض Delphi وC++Builder وLazarus
PDFViewerوMultiPageViewerعمليات البحث في المستند مرة واحدة، وتقبلEnterوF3للنتيجة التالية، وتعيد ضبط سياق البحث عند تغيير خيارات المطابقة، وتحجزEscلإلغاء البحث أو مهمة الطباعة النشطة - تتبع طباعة العارض الآن دوران العارض الحالي وتختار الإخراج العمودي أو الأفقي وفقاً لذلك، بحيث ينعكس دوران شريط الأدوات في الصفحات المطبوعة
- تدعم عروض
ViewerInteractionLabالثلاثة الآن اختصاراتCtrl+AوCtrl+CوEnterوF3وEscدون اعتراض أوامر التحديد والنسخ الأصلية لعناصر التحرير
تم الإصلاح (Fixed)
- يلغي إلغاء طباعة العارض في C++Builder وLazarus مهمة الطابعة الآن بدلاً من إرسال الصفحات التي عُرضت قبل الإلغاء، ويخرج Lazarus صراحةً من كل حلقة نسخ وصفحات وفرز متداخلة
- أصبح زر Cancel في Delphi
MultiPageViewerمتصلاً بمعالجه، وتحافظ حقول بحثMultiPageViewerفي C++Builder/Lazarus على تحرير مفاتيح الأسهم وHome وEnd الأصلي
Version 2.26.0
تم التغيير (Changed)
- تحصل
TPdf.GetObjectBitmapوTPdf.GetBitmapوTPdf.GetThumbnailونظائرها فيTPdfViewالآن على قفل العرض حول استدعاءFPDFImageObj_GetBitmap/FPDFPage_GetThumbnailAsBitmap، بما يطابقRenderPage/RenderTile، لتجنب سباق معUnloadPage/ReloadPageالمتزامن - تحترم
TPdf.RenderPageThumbnailالآن إدخال الصفحة/Rotate، وتعيد حساب الملاءمة للأبعاد المدورة في صفحات/Rotate 90أو270بحيث تطابق نسبة الصورة المصغرة ما يعرضه العارض بدلاً من استخدام الأبعاد الأصلية غير المدورة التي يعيدهاFPDF_GetPageSizeByIndex
تم الإصلاح (Fixed)
- كان
TPdfView.GetCharacterRectangleيتجاهل قيمة إرجاعFPDFText_GetCharBoxويمرر مستطيلاًTPdfRectangleغير مهيأ إلىPageToDevice. تتم تهيئة المستطيل الآن إلى الصفر ويعيدGetCharBoxالفاشلRect(0,0,0,0) - كان طول مخزن مسار URI والملف في
GetLinkAnnotationsأكبر بواحد: كان الاستدعاء الثاني لـFPDFAction_GetURIPath/GetFilePathيمررsize(الذي يشمل NUL الختامية) كطول للمخزن إلى مخزن خُصص بحجمsize-1، ويمرر الاستدعاء الآنsize-1فلا يكتب بعد التخصيص على بناء PDFium لا يقصّ نفسه ذاتياً
Version 2.25.0
تم التغيير (Changed)
- يبطل
TPdf.AddTextوSetTextوAddPathوInsertFormObjectFromXObjectالآن صفحة النص وتعليقات الروابط المخزنة مؤقتاً قبل إعادة إنشاء محتوى الصفحة، بما يطابقSetTextPositionsوRemoveObject؛ فكان استدعاءGetText/GetWebLinks/FindFirstبعد تحرير الصفحة يعيد نصاً وبيانات روابط قديمة التُقطت قبل التحرير، وكان مقبضFPDF_TEXTPAGEالمحتفظ به يُستخدم بعد إعادة توليد المحتوى بسلوك غير معرف - يحصل
TPdfView.RenderPage(HDC, ...)الآن على قفل العرض ويخفي استثناءات FPU/SSE حولFPDF_RenderPage، بما يطابق نقاط الإدخال الأخرى؛ فكان التحميل المباشر إلى DC السابق معرّضاً لسباق معUnloadPage/ReloadPageمتزامن على المستند نفسه، ويترك استثناءات FPU غير محجوبة على المترجمات السابقة لـ D12 - يستدعي عرض Delphi
PrintPDFالآنPrinter.Abortعند الإلغاء بدلاً من ترك بلوكfinallyيبلغPrinter.EndDocفيُرسل الصفحات التي رُندرت قبل الإلغاء، وقد كان عرض Lazarus يعالج ذلك صحيحاً أصلاً
تم الإصلاح (Fixed)
- كانت
TPdf.GetCharacterوTPdf.GetCharcodeونظائرهما فيTPdfViewتقصّ نقاط الشيفرة خارج المستوي الأساسي (الإيموجي وCJK Extension B) التي يعيدهاFPDFText_GetUnicodeإلى 16 بت الدنيا عبرWideChar()، فتولّد surrogate منفرداً يُفسد معالجة النص اللاحقة؛ تعيد النقاط الأعلى من U+FFFF الآن U+FFFD (محرف الاستبدال)، واستخدمGetTextلاسترداد ترميز UTF-16 الكامل للأحرف خارج المستوي الأساسي - كان
GetWebLinksيستدعيSetLength(Rectangles, FPDFLink_CountRects(...))دون التحوط من إرجاع-1، مما كان يرفعEOutOfMemoryعلى صفحة تالفة؛ يُقصّ الآن العدد السالب إلى الصفر - يمسح
TPdf.DestroyسلسلةPasswordمن الذاكرة عبرUniqueString+FillCharقبل تحرير المخزن
Version 2.24.0
تمت الإضافة (Added)
- تتحقق
TPdf.DeletePageوGetAttachmentوGetAttachmentNameوGetAttachmentTypeوSetAttachmentوDeleteAttachmentالآن من فهرس الصفحة أو المرفق وترفعEPdfErrorعند الخروج عن النطاق
تم الإصلاح (Fixed)
- تم إصلاح تسرب مقابض كائن الصفحة عند فشل
TPdf.AddTextوAddBitmapوAddJpegImage: فحين يرفعFPDFText_SetTextأوFPDFImageObj_SetBitmapأوFPDFImageObj_SetMatrixأوFPDFImageObj_LoadJpegFileInlineاستثناءً بعد إنشاء الكائن وقبل أن يسلّمهFPDFPage_InsertObjectإلى الصفحة، كان المقبض الأصليFPDF_PAGEOBJECTيتسرب؛ يدمر كل مسار الآن الكائن عند الاستثناء قبل إعادة رفعه - يدمر
TPdf.UnloadPageالآن مقبضFPathقيد التنفيذ (الذي تعيّنهCreatePathدون أن يستهلكهAddPathبعد) بدلاً من تعيينه إلىnilدون استدعاءFPDFPageObj_Destroy، فلا يتسرب بعد ذلك مسار أُنشئ ثم أُهمل (أو قاطعه تبديل صفحة) - كان
TPdf.InsertFormObjectFromXObjectيحذف استدعاءUpdatePage(FPDFPage_GenerateContent) الذي تنفّذه كل عمليات الإدراج الشقيقة (AddText/AddPath/AddBitmap/AddJpegImage/SetText/RemoveObject)، فكان Form XObject المدرج بهذه الطريقة يختفي عند إعادة التحميل أو الحفظ التاليين؛ يُستدعىUpdatePageالآن بعد الإدراج
Version 2.23.0
تم الإصلاح (Fixed)
- تقبل مصادقة المحتوى الاختياري
/BaseStateالآن/OFFإضافةً إلى/ON(يسمح ISO 32000-1 Table 8.70 بكليهما)؛ فكان الفحص السابق يرفض تهيئات/OCProperties /D /BaseState /OFFالمشروعة بخطأ «محتوى اختياري تالف» رغم أن الملف كان مطابقاً للمواصفة - تقبل مصادقة
/Intentالآن/Designومصفوفات الأسماء مثل[/View /Design]، وليس القيمة الحرفية/Viewفقط؛ إذ يعرّف ISO 32000-1 Table 8.70/Intentكاسم أو مصفوفة أسماء مأخوذة من/Viewو/Design، بينما كان الفحص أحادي القيمة السابق يرفض مخرجات التأليف القياسية رفضاً زائداً - لا تتطلب آلية كشف قاموس Geospatial Measure لبوابة PDF 1.7
/Extensions /ADBEExtensionLevel 3 وجود/Type /Measureالذي يعدّه ISO 32000-1 Table 254 اختيارياً؛ فمنتجو GeoPDF الذين يحذفون/Type(مثل PDFBox وQGIS وFME) كانوا يتجاوزون البوابة سابقاً وينتجون بصمت مخرجات PDF 1.7 غير مطابقة، ويطابق الكاشف الآن/Subtype /GEOوحده
Version 2.22.0
تم التغيير (Changed)
- تستخدم حسابات ملاءمة التكبير في
TPdfView(GetPageZoomوGetPageWidthZoomوGetPageHeightZoom) الآنClientWidth/ClientHeightبدلاً منWidth/Height، فتملأpfmFitPage/pfmFitWidth/pfmFitHeightمساحة العرض المرئية دون احتساب الإطار الخارجي - ترفع
AddSignatureTimestampToCmsالآنExceptionصريحاً يحدد حقل CMS SignerInfo غير المقروء (version / sid / digestAlgorithm / signedAttrs / signatureAlgorithm) بدلاً منExitالصامت الذي يترك التحليل الجزئي يمرّ كأنه CMS موقّع كامل، كما صُحح بلوكbegin/endالمفقود حول فرعsignedAttrs [0]الاختياري الذي كان يتركR.Positionدون تقدّم
تم الإصلاح (Fixed)
- يحرر مقبض المفتاح الخاص CNG
NCryptKeyHandleفيResolveWinSignerالآن عبرNCryptFreeObjectعند أي فشل بعد نجاحCryptAcquireCertificatePrivateKeyوقبل انتقال الملكية إلىTWinCmsSigner.Create، إذ كانت الملكية لا تنتقل إلى الموقّع إلا عند نجاح المنشئ - يرفض
EcDsaP1363ToDerالآن نصفrأوsالصفري بالكامل بدلاً من إصدارINTEGER 0؛ فقيم ECDSA ذاتr = 0أوs = 0غير صالحة (يشترط RFC 4754 §6 / FIPS 186-4 §6 تحقق1 ≤ r, s ≤ n-1) وإلا لقبلها مدقق متساهل على أنها صحيحة
Version 2.21.12
تم الإصلاح (Fixed)
- تحديثات حفظ PDF 1.5 إلى PDF 1.7 الصريحة ترفض الآن هياكل
/OCPropertiesغير المشوهة في الفهرس، بما في ذلك إدخالات/OCGsأو/Dالمطلوبة المفقودة، وقيم التكوين الافتراضية غير الصالحة، وإدخالات الحالة غير المصفوفة
Version 2.21.11
تم الإصلاح (Fixed)
- تحديثات حفظ إصدار PDF الصريحة ترفض الآن إدخالات
/Annotsالمباشرة أو غير المباشرة للصفحة التي تحذف قواميسها إدخال/Subtypeأو/Rectالمطلوب
Version 2.21.10
تم الإصلاح (Fixed)
- تحديثات حفظ PDF 1.7 الصريحة تتطلب الآن أن تُعلن قواميس
/Type /Measure /Subtype /GEOالجغرافية المكانية وتعليقات Projection عن/Extensions /ADBEمع/BaseVersion /1.7و/ExtensionLevel 3أو أحدث
Version 2.21.9
تم الإصلاح (Fixed)
- تحديثات حفظ PDF 1.7 الصريحة تتطلب الآن أن تُعلن تعليقات RichMedia وإجراءات
RichMediaExecuteعن/Extensions /ADBEمع/BaseVersion /1.7و/ExtensionLevel 3أو أحدث
Version 2.21.8
تم الإصلاح (Fixed)
- الحفظ صراحةً بصيغة PDF 1.7 يتطلب الآن أن تعلن تدفقات PRC 3D عن
/Extensions /ADBEمع/BaseVersion /1.7و/ExtensionLevel 1أو أحدث، بدلاً من اعتبار PRC ميزة أصلية في PDF 1.7
Version 2.21.7
تم الإصلاح (Fixed)
- تحديثات حفظ PDF 1.4 والإصدارات الأقدم ترفض الآن إدخالات
/SMaskInDataلعناصر صور XObject، بما في ذلك القيمة الصريحة0، لأن قنوات القناع الناعم JPEG 2000 المضمنة تتطلب PDF 1.5 أو أحدث
Version 2.21.6
تم الإصلاح (Fixed)
- تحديثات حفظ PDF 1.4 والإصدارات الأقدم ترفض الآن عناصر صور XObject ذات 16 بت، التي تتطلب PDF 1.5 أو أحدث، بينما تحتفظ أهداف PDF 1.5 إلى PDF 1.7 ببيانات صورها
/BitsPerComponent 16
Version 2.21.5
تم الإصلاح (Fixed)
- تحديثات حفظ PDF 1.4 والإصدارات الأقدم ترفض الآن قيم
/PageLayout /TwoPageLeftو/TwoPageRightفي فهرس المستند، التي تتطلب PDF 1.5 أو أحدث، بينما تحتفظ أهداف PDF 1.5 إلى PDF 1.7 بتخطيط الصفحتين المطلوب
Version 2.21.4
تم الإصلاح (Fixed)
- تحديثات حفظ PDF 1.3 الصريحة ترفض الآن إدخالات
/Langفي فهرس المستندات التي تتطلب PDF 1.4 أو أحدث، بينما تحتفظ بمعرّف اللغة لأهداف PDF 1.4 حتى PDF 1.7
Version 2.21.3
تم الإصلاح (Fixed)
- ترفض عمليات حفظ PDF 1.3 الصريحة الآن شجرات أسماء
/EmbeddedFilesالخاصة بالمستند والتي تتطلب PDF 1.4 أو أحدث، دون رفض تدفقات الملفات المُضمّنة المشار إليها عبر مواصفات الملفات الأقدم
Version 2.21.2
تم الإصلاح (Fixed)
- عند الحفظ صراحةً بصيغة PDF 1.3، تُرفض الآن تدفقات metadata النشطة لأنها تتطلب PDF 1.4 أو أحدث، وتُحفظ كما هي عند اختيار إصدار من PDF 1.4 إلى PDF 1.7
Version 2.21.1
تم الإصلاح (Fixed)
- يطبق التحقق المرجعي الهجين الآن إدخالات
/XRefStmالتكميلية قبل عناصر xref الكلاسيكية النائبة لنفس المراجعة، لذلك لا تفوت بعد التعليقات المضغوطة والكائنات المقيدة بالإصدار عندما تميز جدول التوافق هذه الكائنات بأنها حرة
Version 2.21.0
تم التعديل (Changed)
- تستطيع جميع أمثلة العارض Delphi وC++Builder وLazarus فتح PDF ممرر كأول وسيطة سطر أوامر، كما توفر أمثلة
MultiPageViewerلـC++Builder وLazarus اختصارات صريحة لتحديد الكل والنسخ
تم الإصلاح (Fixed)
- أمثلة العارض ترفض الآن أهداف الصفحات غير الصالحة في الإشارات المرجعية والروابط، وتحافظ على تفاصيل أخطاء التحميل، وتتحقق من إدخال التكبير اليدوي بالطريقة نفسها في جميع الأمثلة. وعند الطباعة تستخدم الصفحة المطلوبة مع قيم حقول النموذج بدلاً من تكرار الصفحة الظاهرة، وتوقف مهام طباعة Delphi الملغاة بدلاً من إرسال مخرجات جزئية
Version 2.20.0
تم التعديل (Changed)
- توفر جميع أمثلة العارض Delphi وC++Builder وLazarus الآن اختصارات متسقة للفتح والبحث والحفظ والطباعة والتكبير وتصفح الصفحات، بينما تدعم كل نسخة من
ViewerInteractionLabأيضاً الانتقال بين الصفحات والتكبير اليدوي المتحقق منه 10–600% وسجلات التفاعل الدائمة وفحوصات تحويل إحداثيات النقر
Version 2.19.1
تم الإصلاح (Fixed)
- التحقق من إصدار PDF المحدد يتبع الآن سلسلة المراجعات النشطة، سواء استخدمت xref تقليدياً أو هجينا أو تدفق xref، بما فيها إدخالات الكائنات المضغوطة. لذلك لم تعد الكائنات المستبدلة أو المحررة أو غير المشار إليها تسبب إخفاقات زائفة في التحقق من توافق الميزات مع الإصدار
Version 2.19.0
تم التعديل (Changed)
- أمثلة المرفقات واستخراج الصور والنصوص وتحويل الصفحات وتقسيم الملفات في C++Builder وLazarus تستخدم الآن مجلدات مخرجات مخصصة أو ملفات تُستكمل بأمان، وأسماء ثابتة مع أصفار بادئة، وتحديثات تقدم تستجيب أثناء العمل، وملخصات نهائية تتضمن عدد الأخطاء لكل عنصر
تم الإصلاح (Fixed)
- يقيس
CJKTextLabفي C++Builder الآن النص عبر وظائف تحرير PDFium المُصدَّرة، ويتجنبMergePDFتحميلاً زائداً على رسالة VCL غامضة، مما يُعيد بناءات RAD Studio 37 النظيفة
Version 2.18.3
تم الإصلاح (Fixed)
- يُسجَّل الآن Document Time-stamp الخاص بـ PAdES B-LTA كحقل توقيع قابل للاكتشاف — Widget غير مرئي يمكن الوصول إليه عبر
/Annotsالخاصة بالصفحة الأولى وحقل/Fieldsفي AcroForm (ETSI EN 319 142-1 §5.4.3) — بدلاً من كونه كائناً يتيماً لا يمكن الوصول إليه ولا تستطيع أدوات التحقق التي تعدّد حقول التوقيع إيجاده؛ تُحفظ التعليقات التوضيحية والحقول الموجودة
Version 2.18.2
تم الإصلاح (Fixed)
- يُثير التوقيع بـ PAdES والكتابة الكلاسيكية للمراجع الترابطية الآن خطأً واضحاً عندما يتجاوز إزاحة البايت عرض الحقل الثابت المؤلف من 10 أرقام (حوالي 9.3 غيغابايت)، بدلاً من ترك عنصر
/ByteRangeplaceholder غير مكتوب بصمت (مما يُنتج توقيعاً غير صالح) أو تجاوز سطر xref المؤلف من 20 بايت (ISO 32000-1 §7.5.4)؛ لا يتأثر إخراج تدفق المرجع الترابطي الذي يستخدم حقول ثنائية بحجم 8 بايت
Version 2.18.1
تم الإصلاح (Fixed)
- يحلّ التوقيع بـ PAdES الآن مراجع
/Annotsو/AcroFormو/Fieldsالخاصة بالصفحة الأولى غير المباشرة عبر رأس الكائن الكامل (ISO 32000-1 §7.5.3) ورقم الجيل الفعلي للمرجع؛ كان البحث عن سلسلة فرعية مجردة يتطابق مع رقم كائن داخل رقم أطول (يحلّ5 0 Rإلى15 0 obj) وكان رقم الجيل المُشفَّر يُفوّت كائناتgen>0، مما يُفسد مصفوفات حقول التوقيع أو يرفض المستندات الصالحة - عندما يقع الكتالوج أو الصفحة الأولى أو
/Annotsأو/AcroFormأو/Fieldsداخل تدفق كائن، يُعيد التوقيع الآن المحاولة على نسخة موسّعة قبل الفشل بدلاً من رفض المستند فوراً
Version 2.18.0
تمت الإضافة (Added)
- يُبلّغ
ReadPdfVersionInfoعن إصدار الرأس والإصدار الأساسي الفعلي وتجاوز الكتالوج ومستوى امتداد مطوّر Adobe من تدفق PDF
تم التعديل (Changed)
- الحفظ بإصدار PDF 1.3-1.7 محدد يتحقق الآن من بنى catalog وموارد الصفحات وXFA والتنقيح وامتدادات المطور ضمن سياق الكائن الذي يملكها؛ وللحفاظ على سلامة المستند، يُرفض الإخراج المشفر بإصدار محدد وتطبيع PDF 1.3 بطريقة incremental
- تكتب عمليات الحفظ بمسار الملف الآن إلى ملف مؤقت شقيق وتستبدل الوجهة فقط بعد نجاح جميع عمليات الضغط والتطبيع وفحوصات الإصدار
تم الإصلاح (Fixed)
- يحمل إخراج PDF 1.3 الآن مورد
/ProcSetالكامل المطلوب ويُزيل مفاتيح الشفافية في PDF 1.4 عندما تكرر فقط قيم الحالة الأولية لرسومات PDF 1.3 - لم تعد ملفات المرجع الهجين وتدفق xref وتدفق الكائن تُعاد كتابتها بواسطة ضاغط xref الكلاسيكي، مما يمنع حذف إدخالات الكائنات المضغوطة
- لم تعد الأسماء التي تشبه مفاتيح الشفافية أو ميزات الكتالوج داخل السلاسل أو التعليقات أو خرائط الموارد غير ذات الصلة تُسبب فشلاً زائفاً في إصدار الهدف
Version 2.17.0
تمت الإضافة (Added)
- تُسجَّل توقيعات PAdES الآن كتعليقات توضيحية Widget غير مرئية في مصفوفة
/Annotsالخاصة بالصفحة الأولى وفي مصفوفة/Fieldsالخاصة بـ AcroForm، مع الحفاظ على التعليقات التوضيحية وحقول النماذج الموجودة
تم التعديل (Changed)
- تحافظ تحديثات PDF/A وPDF/X وPDF/E وPDF/R وPDF/UA وPDF/VT وPAdES التزايدية الآن على تمثيل المرجع الترابطي المصدر: تتلقى مستندات تدفق xref تحديثاً كـ xref-stream وفقاً لـ ISO 32000-1 §7.5.8.1، بينما تستمر المستندات الكلاسيكية في تلقي جدول xref
- تستخدم الآن إزاحات المرجع الترابطي و
startxrefو/Prevوقيم ByteRange في PAdES ومعالجة نطاق SHA-256 مواضع 64 بت مع التجزئة المُجزَّأة، مما يدعم الملفات الأكبر من 2 غيغابايت في بنيات 64 بت - تحجز حزم XMP القابلة للكتابة المُنشأة الآن 2048 بايت من الحشو قبل تعليمة إغلاق الحزمة
Version 2.16.10
تم الإصلاح (Fixed)
- لا يُعيد توسيع تدفق الكائن بعد الآن إحياء نسخ قديمة من الكائنات التي نقلها تحديث تزايدي من تدفق الكائن إلى تعريف عادي (ISO 32000-1 §7.5.7)؛ كانت فحوصات الامتثال وحقن العلامات تحلّ سابقاً الكتالوج أو قاموس البيانات الوصفية القديم في مثل هذه الملفات
Version 2.16.9
تم الإصلاح (Fixed)
- في Free Pascal، يُوسَّع النص الذي ليس UTF-8 صالحاً بايت بايت كـ Latin-1 ويُكتب كسلاسل hex بترميز UTF-16BE؛ كانت البايتات العليا الخام تتسرب سابقاً إلى سلسلة حرفية، وهو ترميز غير قانوني لسلاسل النص في PDF 1.7
- يتعرف فك ضغط التدفق الآن على بيانات الانكماش الخام دون غلاف RFC 1950 zlib (عيب شائع لدى الكتّاب المكسورين) ويضغطها في الوضع الخام، لذا لم تعد عمليات فحص الامتثال تصمت على مثل هذه التدفقات
Version 2.16.8
تم الإصلاح (Fixed)
- تُحدِّث التحديثات التزايدية المكتوبة بواسطة مسار ما بعد معالجة الحفظ الآن عنصر
/IDالثاني (المتغير) للمقطورة كما يتطلب ISO 32000-1 §14.4؛ كان كلا العنصرين يُنسَخان حرفياً سابقاً، لذا كانت أدوات التخزين المؤقت والمزامنة ترى معرفاً غير متغير بعد كل تحديث
Version 2.16.7
تم الإصلاح (Fixed)
- يتطلب الآن تفريغ جسم التدفق المستخدم بواسطة فحوصات الامتثال أن تكون الكلمة المفتاحية
streamمتبوعة بنهاية سطر (ISO 32000-1 §7.3.8.1)؛ كانت الكلمة داخل سلسلة حرفية مثل(downstream)تُفرِّغ سابقاً كل البنية التالية حتىendstreamالتالي، مما يُخفي الانتهاكات الحقيقية من الفحوصات على مستوى البايت - تُفرِّغ عمليات المسح الخاصة بـ PDF/X وPDF/E للميزات المحظورة الآن السلاسل الحرفية والتعليقات (§7.2.2) أيضاً، لذا لن تُنتج قيمة مثل
/Title (see /JavaScript docs)أو رمز معلَّق نتيجة إيجابية زائفة لـJavaScriptأوAcroFormأوLZWDecode
Version 2.16.6
تم الإصلاح (Fixed)
- يُتحقق الآن من إدخالات DPM في PDF/VT عند الكتابة كما هو موثَّق: تُرفض أسماء المفاتيح التي تنتهك قاعدة NMTOKEN في ISO 16612-2 §6.6 أو قاعدة بادئة المسجِّل في الملحق E، والأسماء المكررة، بدلاً من كتابتها في قاموس DPart — كان الاسم الذي يحتوي على مسافة يُقسَّم سابقاً إلى زوج مفتاح/قيمة وهمي ويُفسد القاموس
Version 2.16.5
تم الإصلاح (Fixed)
- يُزيل الآن إزالة إدخال قاموس قيمته سلسلة hex (مثل
/Check <...>) الإدخال بأكمله؛ كانت أدوات الحقن تترك سابقاً قيمة hex يتيمة، مما يُنتج قاموساً مكسوراً نحوياً - لا يترك الآن إزالة إدخال مرجعه غير المباشر يستخدم أسطراً جديدة بين الرموز المميزة (يسمح ISO 32000-1 §7.3.10 بأي مسافة بيضاء) رقم الجيل والكلمة المفتاحية
Rخلفه
Version 2.16.4
تم الإصلاح (Fixed)
- لا تتطلب عملية المسح عن الحد الأقصى لرقم الكائن بعد الآن أن تبدأ رؤوس الكائن بسطر (يسمح ISO 32000-1 §7.5.3 بأي مسافة بيضاء أو محدد قبلها)، لذا لا يمكن لأدوات الحقن بعد الآن تخصيص رقم كائن يتصادم مع رأس
N G objمضمَّن ويُفسد الملف بصمت؛ تُحدَّد أرقام الكائن بحد الملحق C - تحلّ الآن التدفقات التي يكون
/Lengthفيها مرجعاً غير مباشر الكائن العدد صحيح المُشار إليه وتستخدم قيمته عندما تتوافق معendstreamالختامي؛ كانت هذه التدفقات مقيَّدة سابقاً بواسطة بحث نمطي يُقتطع الأجسام التي تحتوي قانونياً على تسلسل بايتendstream— نموذجي للمرفقات PDF المضمَّنة
Version 2.16.3
تم الإصلاح (Fixed)
- تُمرِّر مسارات ضغط التدفق مستندات تدفق المرجع الترابطي (ملفات PDF 1.5+ دون كلمة مفتاحية كلاسيكية لـ
trailer) دون تغيير؛ كان مسار إعادة البناء يُخطئ سابقاً في تحليلstartxrefكموقع الجدول ويُنشئ مقطورة مُخمَّنة مما قد يُنتج ملفاً لا يمكن فتحه - يتخطى الضاغط تدفقات بيانات XMP الوصفية كي يحتفظ مستند PDF/A بتدفق بيانات وصفية غير مُصفَّى إلزامي (ISO 19005-1 §6.7.2)، ويترك تدفقات الملفات الخارجية (
/Fمع/FFilter) دون تغيير - يمسح جدول المرجع الترابطي المُعاد بناؤه نسخة مجرَّدة من التدفقات من المستند، لذا لا يمكن لمحتوى التدفق الثنائي بعد الآن انتحال رؤوس الكائنات أو تضخيم الجدول؛ يعكس الآن
/Sizeفي المقطورة المُعادة البناء الجدول الفعلي وتُحدَّد أرقام الكائنات بحد الملحق C - يقبل تحديد موقع جدول المرجع الترابطي الأصلي علامات CR فقط لنهايات السطر (ISO 32000-1 §7.5.1) ولا يمكنه بعد الآن مطابقة حروف
xrefداخلstartxref؛ اكتسب مسح الكلمة المفتاحية للتدفق نفس حارس ذيلendstreamالمستخدم في أماكن أخرى ويتقدم الآن متجاوزاً أجسام التدفقات المتخطاة
Version 2.16.2
تم الإصلاح (Fixed)
- يقبل الآن تحليل الأعداد الصحيحة عبر قراء PDF على مستوى البايت العلامة
+الصريحة المسموح بها في ISO 32000-1 §7.3.3 ويرفض سلاسل الأرقام التي ستتجاوز، لذا لم تعد المستندات المعادية أو الفاسدة قادرة على تدوير الأطوال والإزاحات المحلَّلة إلى قيم مضللة
Version 2.16.1
تم الإصلاح (Fixed)
- يكتب مُحقِن PDF/UA قيمة
/Langللكتالوج كسلسلة نص PDF صحيحة؛ كان يُمرِّر سابقاً القيمة عبر أداة إفلات XML، لذا كان وسم اللغة الذي يحتوي على&أو أقواس يُنتج إدخالاً تالفاً، وكانت المدخلات غير ASCII تُكتب كـ UTF-8 خام - يستخدم إدخال Info الخاص بـ PDF/E
/ISO_PDFEVersionمُشفِّر سلسلة النص المشترك، مما يُبقي القيم غير ASCII قانونية في PDF 1.7 - تُسقط ترميز XML لحزم XMP أحرف التحكم غير القانونية في XML 1.0، لذا لم تعد البيانات الوصفية المنسوخة من مستند مصدر تالف قادرة على جعل تدفق البيانات الوصفية بأكمله غير متوافق مع قواعد XML
- يتحقق تحويل تاريخ PDF إلى XMP من أن حقول التاريخ رقمية ويُضيف حقل الدقيقة المفقود، مما يمنع تواريخ ISO 8601 مشوَّهة في XMP المُنشأ؛ على المنصات غير Windows، يتضمن الطابع الزمني الاحتياطي الآن وقت اليوم بدلاً من التاريخ المجرد
Version 2.16.0
تمت الإضافة (Added)
- يُعيد فك تشفير التدفق الآن بناء متوقعات
/DecodeParms(متوقعات PNG 10-15 ومتوقع TIFF 2، ISO 32000-1 §7.4.4.4) بعد FlateDecode، مع مراعاة/Colorsو/BitsPerComponentو/Columns؛ كانت تدفقات الكائنات المضغوطة بمتوقع — خيار شائع لكتّاب PDF 1.5+ — تُظهر سابقاً بايتات مُفاضَلة، لذا كانت الكائنات التي تحملها غير مرئية بصمت لعمليات فحص الامتثال وحقن العلامات
تم الإصلاح (Fixed)
- يُحلِّل الآن اكتشاف FlateDecode قيمة
/Filterكاسم أو مصفوفة بدلاً من مطابقة سلسلة فرعية، لذا لن تُؤدي سلاسل عوامل التصفية المتتالية أو ظهور الكلمة داخل قيم غير ذات صلة إلى نفخ زائف؛ تعود السلاسل غير المدعومة إلى البايتات الخام كما كان من قبل
Version 2.15.1
تم الإصلاح (Fixed)
- يتخطى ماسح القاموس الآن السلاسل الحرفية وسلاسل hex والتعليقات أثناء موازنة
<</>>(ISO 32000-1 §7.2.2)، لذا لم تعد القواميس التي تحتوي على قيم مثل(A >> B)أو سلسلة hex متاخمة للمحدد الختامي تُقتطع أثناء تحليل المقطورة والكتالوج وعمليات المسح للامتثال - يفك استخراج السلسلة الحرفية الآن ترميز مجموعة الإفلات الكاملة في §7.3.4.2 الجدول 3 —
\n \r \t \b \fووثماني\dddواستمرارية السطر وتطبيع EOL غير المُفلَت — بدلاً من نسخ حرف الإفلات حرفياً، مما يُعيد مقارنات/Producerو/GTS_PDFXVersionو/ISO_PDFEVersionالصحيحة للكتّاب الذين يستخدمون الإفلات الثماني - تُفلت الآن السلاسل الحرفية التي تكتبها أدوات حقن العلامات CR وLF وأحرف التحكم الأخرى حتى تبقى القيم سليمة بعد تطبيع نهاية السطر من جانب القارئ بايت بايت
Version 2.15.0
تم الإصلاح (Fixed)
- تحافظ الآن التحديثات التزايدية المكتوبة بواسطة أدوات حقن علامات PDF/A وPDF/X وPDF/E وPDF/R وPDF/UA وPDF/VT ومسارات توقيع PAdES وDSS على معرف الملف الدائم للمستند المصدر: يُنقل عنصر
/IDالأول للمقطورة كما هو كما يتطلب ISO 32000-1 §14.4 ولا يُحدَّث سوى العنصر الثاني (المتغير)؛ كان كلا العنصرين يُوُلَّدَان مجدداً سابقاً، لذا كانت المراجع الخارجية وسير عمل التحقق طويل الأمد ترى هوية مستند مختلفة بعد كل عملية حفظ - تُحمل توقيعات PAdES وحقن DSS وDocument Time-stamps لـ B-LTA الآن مرجع
/Infoالخاص بمقطورة المصدر (ISO 32000-1 §7.5.6)، لذا لن تختفي خصائص المستند من لوحات القارئ بعد التوقيع؛ تكتسب مقطورة Document Time-stamp أيضاً مصفوفة/ID - يُحدِّد الآن احتياطي
/Infoفي المقطورة لمستندات تدفق المرجع الترابطي قاموس تدفق XRef بشكل صحيح ويحفظ رقم جيل المرجع؛ لم يتطابق سابقاً أبداً مع ملفات PDF 1.5+ المتوافقة، مما أسقط/Infoبصمت
Version 2.14.4
تم الإصلاح (Fixed)
- يحمل الآن تاريخ
/Mلقاموس التوقيع الذي يكتبهTPdf.SignPadesوSignPadesBytesالبادئةD:الإلزامية وعلامة UTC الإزاحيةZالتي يتطلبها ISO 32000-1 §7.9.4؛ كانت أدوات التحقق الصارمة ترفض سابقاً وقت التوقيع كسلسلة تاريخ مشوَّهة
Version 2.14.3
تم الإصلاح (Fixed)
- تُطابق الآن عمليات البحث عن مفاتيح القاموس في قارئ PDF المشترك رموز الأسماء الكاملة (ISO 32000-1 §7.3.5)؛ كان تدفق تدرج قاموسه
/Length1قبل/Length(نموذجي لتدفقات FontFile) يُقتطع سابقاً إلى عدد بايتات خاطئ، مما يُعمي بصمت عمليات فحص امتثال PDF/A وPDF/UA وغيرها التي تقرأ تدفقات الخط وCMap والبيانات الوصفية - لم تعد عمليات البحث في مقطورة
/Encryptو/Rootو/Sizeو/Infoتُطابق المفاتيح الأطول التي تشترك في نفس البادئة (مثل/EncryptMetadata) - لا يثق توسيع تدفق الكائن بعد الآن في قيمة
/Nفاسدة أو معادية: تُعطي القيم غير الصحيحة 0 بدلاً من رقم غير مُهيَّأ، وحد أعلى مستمَد من/Firstيمنع التخصيصات المفرطة أثناء مسح المستندات المشوَّهة
Version 2.14.2
تم الإصلاح (Fixed)
- تُمرِّر الآن أدوات حقن علامات PDF/X وPDF/VT وPDF/UA وPDF/E وPDF/R المستندات المصدر المشفَّرة دون تغيير بدلاً من إلحاق أقسام تحديث بنص عادي؛ كان السلوك السابق يُنتج ملفات فقدت فيها آخر مقطورة إدخال
/Encrypt(ISO 32000-1 §7.5.6)، لذا كانت القراء المتوافقون يقرؤون الجسم المشفَّر كنص عادي - يُثير الآن
TPdf.SignPadesوSignPadesBytesوInjectPadesDssMarkersالاستثناءEPadesCryptoعندما يكون المستند المصدر مشفَّراً، بدلاً من إصدار ملف تالف أو لا يمكن التحقق منه بصمت؛ أزل التشفير قبل التوقيع أو تضمين مواد DSS
Version 2.14.1
تم الإصلاح (Fixed)
- يملأ الآن
TPdf.SignPadesوSignPadesBytesجميع حقول/ByteRangeالأربعة لقاموس التوقيع؛ كانت الحقول الثلاثة الأخيرة تبقى سابقاً عند عناصر نائبة صفرية، لذا كانت التوقيعات المُنتجة تُعلن نطاق بايت فارغاً وتفشل في التحقق لدى أدوات التحقق المتوافقة - تتلقى قواميس Document Time-stamp الخاصة بـ PAdES B-LTA نفس تصحيح تعبئة
/ByteRange - يقبل الآن
ValidatePadesComplianceتخطيط التوقيع القياسي حيث يحمل فجوة نطاق البايت قيمة/Contentsالسداسية عشرية، ويتحقق من أن مقطع النطاق الثاني ينتهي بالضبط عند نهاية الملف؛ كانت فقط النطاقات المتصلة تجتاز فحص التغطية سابقاً
Version 2.14.0
تمت الإضافة (Added)
- يُسلسل
TPdf.ExportXFDFكل قيمة حقل نموذج وتعليق توضيحي عبر جميع الصفحات إلى مستند XFDF (ISO 19444-1)، يُصدر<fields>للقيم الهرمية للنماذج و<annots>لجميع أنواع التعليقات التوضيحية المدعومة - يقرأ
TPdf.ImportXFDFمستند XFDF مرة أخرى في ملف PDF المحمَّل، مُعيداً إنشاء التعليقات التوضيحية في الصفحات المطابقة وتطبيق قيم الحقول على تعليقاتها التوضيحية Widget - اكتسب سجل
TPdfAnnotationحقولName(NM) وSubjectوModificationDate(M) وCreationDateوIconوOpacity(CA) ونقاط نهاية الخطوط ورؤوس المضلعات/المتعددة الخطوط وحقول قوائم الحركة الحرة حتى تحافظ رحلات XFDF ذهاباً وإياباً على البيانات الوصفية الكاملة للتعليق التوضيحي - يعرض النموذج الجديد
XfdfLabفي مجموعات عروض Delphi وC++Builder وLazarus التوضيحية رحلة تصدير/استيراد ذهاباً وإياباً
Version 2.13.6
تم الإصلاح (Fixed)
- يتعامل
ValidatePdfAالآن مع تدفقات/Metadataفي الكتالوج التي لا تحمل/Type /Metadataأو/Subtype /XMLكبيانات وصفية XMP مفقودة عبرpvaiMissingXmpMetadata - تُصنِّف تقارير جاهزية PDF/A الآن
pvaiMissingXmpMetadataضمن البيانات الوصفية وتوصي بتدفق/Metadataفي الكتالوج مع/Type /Metadataو/Subtype /XMLوXMP غير مُصفَّى وعلاماتpdfaid
Version 2.13.5
تم الإصلاح (Fixed)
- يُبلِّغ
ValidatePdfAالآن عن تعليقات توضيحية Widget بدون قاموس مظهر وتعليقات توضيحية PDF/A-2 / PDF/A-3 التي تتطلب/APولكنها تفتقر إليه عبرpvaiAnnotationApDictViolation - تُصنِّف تقارير جاهزية PDF/A الآن
pvaiAnnotationApDictViolationكمحتوى لا يمكن لحقن العلامات إصلاحه
Version 2.13.4
تم الإصلاح (Fixed)
- يُبلِّغ
ValidatePdfAالآن عن الصور المضمَّنة في PDF/A-2 وPDF/A-3 التي تكون قيمة/Iأو/InterpolateفيهاtrueعبرpvaiImageDictionaryViolation، متطابقاً مع التغطية الحالية لقاموس Image XObject - تُصنِّف تقارير جاهزية PDF/A الآن
pvaiImageDictionaryViolationكمحتوى لا يمكن لحقن العلامات إصلاحه
Version 2.13.3
تم الإصلاح (Fixed)
- يُبلِّغ
ValidatePdfAالآن عن الصور المضمَّنة في PDF/A-1 التي تستخدم مرشحات/LZWDecodeأو/LZWالمختصرة داخل تدفقات المحتوى عبرpvaiInlineImageLzwForbidden، متطابقاً مع تغطية الصور المضمَّنة الحالية لـ PDF/A-2 وPDF/A-3 - يتقدم الآن ماسح عوامل تصفية الصور المضمَّنة متجاوزاً أسماء الموارد الرائدة مثل
/GS1، متجنباً التوقف أثناء مسح تدفقات محتوى PDF/A-1 الأوسع
Version 2.13.2
تمت الإضافة (Added)
- يكتب
TPdf.SetFocusedFormFieldTextنصاً في مخزن تحرير حقل النموذج المُركَّز حالياً عبرFORM_ReplaceSelection، متماثلاً معFocusedFormFieldText. بالنسبة لحقول AcroForm النصية/التحرير المتعدد الخيارات، تُؤكَّد القيمة على/Vعند فقدان التركيز وتستمر؛ بالنسبة لحقول XFA النصية تُكتب في المخزن الداخلي فقط (لا تعرض PDFium واجهة API عامة لمطابقة قيم XFA مع حزمة مجموعات البيانات، لذا لا تستمر عبر عمليات الحفظ) - يُرتبط الآن منصة مضيف JavaScript في كل مرة يكون فيها محرك V8 متاحاً، بغض النظر عما إذا كان المستند XFA — حتى يمكن لـ JavaScript الخاص بـ AcroForm المضمَّن (نصوص مستوى المستند وحسابات الحقل و
app.alert) التنفيذ أيضاً. كانm_pJsPlatformمُسلَّكاً سابقاً فقط لمستندات XFA، مما يترك JS الخاص بـ AcroForm معطلاً بصمت
تم التعديل (Changed)
- أصبح الآن إرفاق منصة JavaScript مستقلاً عن قرار XFA في
InitializeFormFill— يُبنى جدولm_pJsPlatformكلما كانتV8FeaturesAvailableصحيحة، مُطبَّقاً بعد توصيل الإصدار/الاستدعاء الخاص بـ XFA وليس مُتداخلاً داخله
Version 2.13.1
تمت الإضافة (Added)
- تُظهر أحداث المضيف الجديدة معلومات كانت استدعاءات ملء النموذج في v2.13.0 تبتلعها سابقاً:
OnXfaUriActionوOnXfaPageCountChangedوOnXfaFocusChangeوOnXfaEmailوOnXfaHttpRequestوOnXfaOpenFileوOnJavaScriptBeepوOnJavaScriptPrintوOnJavaScriptMailوOnJavaScriptSubmitForm. يعتمد كل حدث افتراضياً على سلوك بدون عملية الموجود عند عدم التعيين، لذا المضيفون الموجودون غير متأثرين - تُعيد الخاصية
TPdf.XfaFormPacketsللقراءة فقط لقطة لمرة واحدة من جميع حزم XFA (TXfaPacketList)، مُستوفيةً أنواعTXfaPacket/TXfaPacketListالمُعلَنة سابقاً ولكن غير المُستخدَمة - تُربط الآن رموز خطأ PDFium الخاصة بـ XFA
FPDF_ERR_XFALOAD/FPDF_ERR_XFALAYOUTوتُعرض عبرLastPdfError، مستبدلةً "خطأ غير معروف" العام لفشل تحميل/تخطيط XFA
تم التعديل (Changed)
- يستشير
FFI_DoURIActionWithKeyboardModifierالآنOnXfaUriActionقبل تنفيذ رابط URI من حقل XFA بالصدفة، مما يمنح المضيف حق النقض (أمان: كان بمقدور حقل XFA الخبيث سابقاً إطلاق عناوين URL عشوائية دون قيد). تحافظ المعالجات غير المُعيَّنة على الافتراضي السابق لـShellExecuteW - يوجِّه
DecodeFormFieldTypeالآن أنواع حقول XFA عبرIsXfaFormFieldبدلاً من حالة صريحة ذات 8 فروع، مما يُبقي enum متوافقاً معFPDF_FORMFIELD_XFA_*بإزاحة ترتيبية
تم الإصلاح (Fixed)
- يُبلِّغ
ValidatePdfAالآن عن ادعاءات PDF/A-1 التي تستخدم تدفقات مرجع ترابطي بـ PDF 1.5 أو تدفقات كائن مع المشكلة الجديدةpvaiPdfA1Pdf15Structure، مع الاستمرار في السماح بتدفقات الكائنات لـ PDF/A-2 وPDF/A-3
Version 2.13.0
تمت الإضافة (Added)
- دعم كامل لـ XFA (XML Forms Architecture) في وقت التشغيل: يُسلِّك
TPdf.InitializeFormFillالآن جميع استدعاءاتFPDF_FORMFILLINFOالـ 14 للإصدار 2 (FFI_DisplayCaretوFFI_GotoURLوFFI_PageEventوFFI_PopupMenuوFFI_OpenFileوFFI_EmailToوFFI_UploadToوFFI_GetPlatformوFFI_GetLanguageوFFI_DownloadFromURLوFFI_PostRequestURLوFFI_PutRequestURLوFFI_OnFocusChangeوFFI_DoURIActionWithKeyboardModifier) ويُرفقIPDF_JsPlatformحتى يتمكنpdfium.dllالمُمكَّن بـ XFA من عرض نماذج XFA الديناميكية وكتابة النصوص البرمجية لها - وحدة
Lib\FPdfXfa.pasالجديدة تُعلن ثوابت XFA (FXFA_PAGEVIEWEVENT_*وFXFA_MENU_*وFXFA_SAVEAS_*وFPDF_FORMFIELD_XFA_*) وأنواعTXfaPacket/TXfaSaveFormatالتي كانت مُشار إليها سابقاً في التعليقات فقط - قارئ الحزمة الثابتة لـ XFA على
TPdf:GetXfaPacketCount/GetXfaPacketName/GetXfaPacketContent/GetXfaPacketByNameبالإضافة إلىGetXfaTemplate/GetXfaDatasets/GetXfaConfigتستخرج حزم XFAtemplateوdatasetsوconfigكـ XML خام دون الحاجة إلى وقت تشغيل مُمكَّن بـ XFA - مسبارات القدرة:
XfaFeaturesAvailableالعالمي، وTPdf.XfaRuntimeAvailableلكل مستند (ما إذا كانFPDF_LoadXFAنجح فعلاً) وTPdf.XfaStaticReadable(ما إذا كانت صادرات قارئ الحزمة تُحلّ) - تم توسيع
TPdfFormFieldTypeبـfiXfaوfiXfaCheckBoxوfiXfaComboBoxوfiXfaImageFieldوfiXfaListBoxوfiXfaPushButtonوfiXfaSignatureوfiXfaTextField، مع تعيينDecodeFormFieldTypeلقيمFPDF_FORMFIELD_XFA_*الجديدة - أحداث مضيف JavaScript على
TPdf:OnJavaScriptAlertوOnJavaScriptResponseوOnXfaGotoUrlوOnXfaRuntimeMissingتُمكِّن المضيف من تخصيص مربعات حوار JS وتنقل XFA، أو التفاعل عندما لا يستطيع مستند XFA تشغيل المحرك - نموذج Delphi الجديد
XfaLabيعرض اكتشاف XFA واستخراج الحزمة وتحقق القدرة ومسار احتياط وقت التشغيل المفقود
تم التعديل (Changed)
- يمسح
TPdf.LoadDocumentالآن مسبقاً المدخلات بحثاً عن علامات XFA (/XFAفي قاموس AcroForm، أو/NeedsRenderingفي الكتالوج) وعند إيجادها يختار تلقائياًpdfium.v8.dllبتعيينEnableV8Engine := Trueقبل تحميل مكتبة المثيل الفردي لأول مرة؛ وبمجرد تحميلpdfium.dllالعادي لا تستطيع العملية التبديل، فيُشيرOnXfaRuntimeMissingإلى هذه الحالة - يعكس
TPdf.GetPageCountالآن عدد الصفحات الذي يُبلِّغ به محرك XFA عبرFFI_PageEventبعد إعادة ترقيم الصفحات الديناميكي، بدلاً من شجرة صفحات PDF الثابتة فقط - عندما يُفتح مستند XFA ولكن وقت التشغيل غير متاح، يُثبِّت
InitializeFormFillالآنversion=1وxfa_disabled=1بدلاً من طلب الإصدار 2 مع استدعاءات غير مُعيَّنة
Version 2.12.2
تم الإصلاح (Fixed)
- يُبلِّغ
ValidatePdfAComplianceالآن عن مساحات أسماء XMP المخصصة المستخدَمة دونpdfaExtension:schemasمع الاستمرار في قبول بيانات وصفيةpdfaidالقياسية دون إعلانات امتداد - يتطلب الآن التحقق من صحة الملفات المضمَّنة في PDF/A-3 كلاً من الإدخالَين
/Fو/UFفي مستوى filespec dictionaries ويتجاهل مفاتيح تدفق/EFالمتداخلة عند فحص هذه الأسماء
Version 2.12.1
تم الإصلاح (Fixed)
- يفك
ValidatePdfAComplianceالآن ترميز رموز أسماء PDF المُفلَتة قبل مطابقة JavaScript وLZWDecode وType1 والأسماء المحظورة ذات الصلة، لذا تُبلَّغ الأسماء المُشفَّرة ولكن المتطابقة دلالياً بشكل صحيح - ترفض الآن فحوصات الصور المضمَّنة في PDF/A قيم
/Filterو/Fالتي تستخدم/LZWDecodeأو/LZWالمختصر أو/Crypt، بما في ذلك صور المصفوفة والأسماء المُفلَتة - يُبلِّغ التحقق من صحة PDF/A الآن عن تدفقات البيانات الوصفية بعوامل تصفية تدفق محظورة، وملفات شخصية ICC لـ OutputIntent التي يكون فيها عدد المكونات
/Nمفقوداً أو غير متناسق، ومواصفات ملفات PDF/A-3 المضمَّنة بـ/AFRelationshipمفقود أو غير صالح
Version 2.12.0
تمت الإضافة (Added)
- تُعيِّن الآن طلبات HTTP للـ TSA مهلات صريحة بمقدار 30 ثانية لكل مرحلة (حل/اتصال/إرسال/استلام) عبر
WinHttpSetTimeouts، لذا لا يمكن لسلطة الطوابع الزمنية البطيئة أو غير القابلة للوصول أن توقف مؤشر ترابط التوقيع إلى أجل غير مسمى - اشتقاق nonce لكل طلب لطلبات الطوابع الزمنية PAdES B-T / B-LTA عندما يُغفل المستدعي
TPadesSignOptions.Nonce: يحل طي SHA-256 للعداد الرتيب + الساعة الحائطية +GetTickCount64+ معرف العملية محل الاحتياطي الثابت السابق$100000000، لذا لن يُعيد الطلبان الصادران في نفس المللي ثانية استخدام نفس nonce المضاد للإعادة - يُحدِّد
PdfInflateالآن الإخراج المضغوط بحد أقصى 256 ميغابايت لإيقاف تدفق zlib المضغوط عن استنفاد الذاكرة على مدخل معادٍ أو فاسد ("قنبلة zlib")؛ الحد سخي بالنسبة لأي تدفق PDF حقيقي
تم التعديل (Changed)
- مزج طبقات
TPdfView، مثل تمييز نتائج البحث وتحديد النص والكلمة المقروءة وتحديد spread، لم يعد يستخدمGetPixel/SetPixelVلكل بكسل؛ يُمزج المستطيل الآن في مرور واحد عبرTBitmapخارج الشاشة بعمق 32-bpp وScanLine، ما يلغي آلاف الانتقالات إلى نواة GDI في كل عملية رسم ويحافظ على استجابة التحديدات الكبيرة - ترفض
FPdfAsn1.TDerReader.ReadIntegerالآن حقول INTEGER التي تتجاوز 8 bytes، وكذلك الأعداد السالبة ذات 8 bytes إذا كان بت الإشارة سيتطلبshl >= 64؛ وتعيد 0 بدلاً من حساب قيمة خاطئة بسبب إزاحة غير معرّفة عند معالجة CMS/PAdES ASN.1 - لا يُصدر
ParseTimeStampRespبعد الآن nonce الطلب مرة أخرى كـTPadesTimestamp.Nonce؛ يبقى الحقل 0 للإشارة إلى "لم يُتحقق منه"
تم الإصلاح (Fixed)
- كانت
PointsToPixelsتُعيد مدخلها دون تغيير لكل DPI: كان المقسوم عليهPointsPerInch(الثابت 72) بدلاً من 72 حرفياً، مما يُقلص الصيغة إلىResult := Points. يحصل الآن أي مستدعٍ خارجي يُحوِّل النقاط إلى بكسلات الجهاز عبر هذه الدالة المساعدة علىPoints × PixelsPerInch / 72الصحيحة - كانت
PdfMaxObjNumتُقلِّل العد في المستندات التي تستخدم تدفقات الكائن (ObjStm في PDF 1.5+): الكائنات المضغوطة داخل/ObjStmلا تحمل علامةN 0 obj، لذا كان المسح على مستوى البايت الخام يفوتها، وكانت المحقِنات التي تخصّصMaxObj+1للكائنات الجديدة تصطدم بأعضاء ObjStm المخفيين وتُفسد الملف بصمت. يوسِّع المسح الآن تدفقات الكائن أولاً حتى يكون كل رقم كائن مرئياً - لا يُزيف
InjectPdfAMarkersبعد الآن ادعاء امتثال PDF/A في مستند مشفَّر: يحظر PDF/A (ISO 19005-1 §7.1) التشفير، وكان المُحقِن يمرِّر المصدر مع العلامات حتى في هذه الحالة. عند تعيينHasEncryptيُمرَّر الآن المصدر دون تغيير؛ ومسارTPdf.SaveAsPdfAالعادي يجرد التشفير أصلاً (saRemoveSecurity) قبل الحقن، لذا لا يؤثر هذا إلا على المستدعين المباشرين - يرفض الآن
PdfReadStreamBytes/Lengthالأكبر من الملف بأكمله قبل تخصيص مخزن النتيجة
Version 2.11.0
تمت الإضافة (Added)
- يُعلن سجل PDFium
FPDF_FILEHANDLERالآن استدعاءاته الستة (ReleaseوGetSizeوReadBlockوWriteBlockوFlushوTruncate) كحقول حقيقية بدلاً من تعليقات، متطابقاً مع تخطيط رأس C؛ أما استدعاءات نقل الملفات في FFI لـ XFA (FFI_OpenFile/FFI_EmailTo/FFI_UploadTo/FFI_DownloadFromURL) التي تعيد أو تستهلكPFPDF_FILEHANDLERفلا تزال غير منفّذة في طبقة تعبئة النماذج Pascal، لكن النوع أصبح صحيحاً بنيوياً لأي مسار إرسال/رفع XFA مستقبلي - تُسلسَل الآن عمليات تحميل مكتبة PDFium وتفريغها (
LoadLibrary/UnloadLibrary) بواسطة قسم حرج عالمي للعملية، لذا لا يمكن لمؤشري ترابط عاملَينTPdfFuture<T>رؤيةPDFiumLibrary=0والارتباط المزدوج - يستدعي الآن قسم
initialization/finalizationUnloadLibraryعند تفريغ الوحدة، مما يضمن تشغيلFPDF_DestroyLibrary(انضمام مؤشر ترابط العامل، التخلص من عزل V8، هدم الخط/ذاكرة التخزين المؤقت)
تم التعديل (Changed)
- يبتلع الآن
TPdf.SetActiveأي استثناء أثناء التحميل (كان سابقاً فقطEPdfError)، لذا يترك خطأ التدفق أو انتهاك الوصول أثناء إعداد النموذج/الصفحةActive=Falseبدلاً من مكوّن محمَّل جزئياً بحالة غير محددة - ترميز أحرف متسق لوسيطات مفتاح البيانات الوصفية لـ PDFium: يستخدم
TPdf.GetMetaTextالآن نفس تقسيم FPCAnsiString/ DelphiUTF8EncodeكـGetViewerPreferenceومسارات التحميل، بدلاً من التحويل المباشرAnsiString(Tag) - تم توحيد الدوال المساعدة
BytesToAnsiوAnsiToBytesوWriteBytesوWriteStr: تستوردFPdfCompressالآن هذه الدوال منFPdfPdfCommon(أُوقفت أسماؤها المستعارةWriteBytesToStream/WriteAnsiToStream) وأُزيلت نسخةBytesToAnsiثلاثية الوسائط الزائدة عن الحاجة منFPdfPdfa؛ وتحتفظFPdfAsn1بنسختها المحلية عمداً لإبقاء طبقة التشفير خالية من وحدة طبقة المطابقة
تم الإصلاح (Fixed)
- تسريب موارد في
TPdf.LoadDocument(ملف، ذاكرة،TBytes،TMemoryStream، تدفق مخصص) وTPdf.CreateDocument: إذا رفعInitializeFormFillأوReloadPageاستثناءً بعد نجاحFPDF_LoadDocument/FPDF_CreateNewDocument، كان مقبضFPDF_DOCUMENTالأصلي يتسرب لأنFActiveكان لا يزال False عند تلك النقطة. يغلّف كل مسار الآن إعداد ما بعد التحميل داخلtry/exceptويُغلق المستند عند الفشل، فيبقى المكوّن غير نشط بحالة نظيفة - تشخيصات تحميل DLL لـ PDFium أكثر ودية: تكتشف
CheckLoadLibraryERROR_BAD_EXE_FORMAT(193) وتُبلِّغ عن عدم تطابق البنية 32/64 بت مشيرةً إلى بناءDLLs/Win32أوDLLs/Win64المطابق. تُفيدCheckGetProcAddressالآن بأنpdfium.dllالمنشور أقدم من الارتباط عند فقدان صادرة مطلوبة
Version 2.10.1
تم الإصلاح (Fixed)
- توحيد sid الخاص بـ SignerInfo في PAdES: يستخدم معرّف الموقّع الآن صيغة
issuerAndSerialNumberالخاصة بـ RFC 5652 §5.3 (issuer Name + serialNumber، كلاهما مستخرج كما هو من DER الخاص بشهادة الموقّع)، مما يحل محل صيغةsubjectKeyIdentifier+ full-cert SHA-256 placeholder غير القياسية السابقة التي رفضها Adobe Acrobat وأدوات التحقق المتوافقة الأخرى. يجتاز مُسافِر TbsCertificate DER جديد (ExtractIssuerAndSerial) issuer SEQUENCE وserial INTEGER كـ TLV bytes خام — تتجاوز الأرقام التسلسلية نطاقInt64غالبًا، لذا فإن الـ TLV الخام إلزامي. تبقى صيغةsubjectKeyIdentifierكبديل فقط عندما يفشل تحليل DER الخاص بالشهادة
تم التغيير (Changed)
- تم استبدال
TCmsSignerId.SerialNumber: Int64بـSerialDer: TBytes(serialNumber TLV الخام). يُضمّن منشئ CMS الـ TLV المُقتطع كما هو فيIssuerAndSerialNumber، متجنبًا بذلك تجاوزInt64في الأرقام التسلسلية لـ CA ذات 20 بايت (الحد الأعلى وفق RFC 5280 §4.1.2.2)
Version 2.10.0
أُضيف (Added)
- التحقق طويل الأمد PAdES B-LT: عندما يكون
TPadesSignOptions.Level >= plB_LT، يُلحقSignPadesBytesتحديثًا تزايديًا يحمل قاموس/DSSمع شهادة الموقّع وسلسلة الوسطاء الكاملة (يُستبعد الجذر ذي التوقيع الذاتي وفق RFC 5652 §10.2.3)، بالإضافة إلى علامة/Extensions /ESICLevel 1 (EN 319 142-1 §5.4.2) - طابع زمني للأرشفة PAdES B-LTA: عندما يكون
Level >= plB_LTAويكونTsaUrlمضبوطًا، يُلحق قاموس توقيع Document Time-stamp (/SubFilter /ETSI.RFC3161) يغطي/ByteRangeالخاص به الملف بأكمله؛ تُرقّى علامة ESIC إلى Level 2. يُكمل ذلك مستويات الأساس الأربع لـ PAdES (B-B, B-T, B-LT, B-LTA) - تجميع سلسلة الشهادات: يستدعي
ResolveWinSignerالآنCertGetCertificateChainويملأTPadesResolvedSigner.ChainCertDerبشهادات CA الوسيطة، بحيث يحمل/DSS /Certsالخاص بـ B-LT كل شهادة مطلوبة للتحقق من التوقيع دون عمليات بحث خارجية. أصبحCertFreeCertificateContextالآن مرتبطًا، مما يغلق تسريب سياق واحد لكل توقيع المذكور في v2.8.0 - سير عمل تكامل PDF/A: يحوّل
TPdf.SignPadesWithPdfAالمستند إلى PDF/A أولاً (أعلى مستوى تصدره المكتبة اليوم) ثم يطبّق توقيع PAdES المطلوب — نمط الحاوية طويل الأمد للأرشفة الذي يوصي به EN 319 142-1 الملحق A.7
Version 2.9.0
أُضيف (Added)
- طابع زمني موثوق PAdES B-T: يكتسب
TPadesSignOptionsالحقولLevelوTsaUrlوNonce. عندما يكونLevel >= plB_TويكونTsaUrlمضبوطًا، يستخرجSignPadesBytesقيمة التوقيع من CMS المبني، ويطلب طابعًا زمنيًا RFC 3161 عليها، ويُضمّن TimeStampToken المُعاد كسمة غير موقّعة لـ SignerInfo باسمsignature-time-stamp— خطوة B-T للوقت الموثوق (EN 319 142-1 §6.3 متطلب o) FPdfTsa: عميل RFC 3161 متعدد المنصات —BuildTimeStampReq(الإصدار 1، SHA-256 messageImprint فوق قيمة التوقيع، nonce، certReq=true)،ParseTimeStampResp(يقبل PKIStatus 0/1، يرفض 2+، يستخرج TimeStampToken ContentInfo كما هو)، وRequestTimestamp(تسلسل لمرة واحدة من build+POST+parse). يتحكمPadesTsaAvailableفي الميزة على المنصات التي بدون HTTP backendFPdfTsaWin: backend لـ Windows WinHttp، مرتبط ديناميكيًا من winhttp.dll (صفر تبعيات جديدة وقت الترجمة؛ يتم التفاوض على HTTPS بواسطة مخزن شهادات Windows). يعكس نمط الارتباط الديناميكي الخاص بـFPdfCryptoWin- تستخرج
ExtractSignatureValueفيFPdfCmsبايتات التوقيع الخام من CMS المُنشأ لاستخدامها كمدخل hash لدى TSA، وتعيدAddSignatureTimestampToCmsبناء ContentInfo معunsignedAttrs [1]جديد (0xA1) يحمل سمة الطابع الزمني. ويتعرف validator في stage-1 على النتيجة بوصفها توقيع B-T
Version 2.8.0
أُضيف (Added)
- مجموعة توقيع PAdES B-B: أربعة لبنات بناء جديدة بلغة Pascal خالصة/متعددة المنصات (
FPdfSha256،FPdfAsn1،FPdfCms،FPdfCrypto) بالإضافة إلى backend لـ Windows CNG (FPdfCryptoWin) تتيح لـTPdf.SignPades/SignPadesToStreamإنتاج توقيع PAdES B-B من البداية للنهاية. تُحلّ شهادة الموقّع عن طريق بصمة SHA-1 من مخزن Current User “MY&rdquo؛ يتم دعم RSA-PSS (موصى به) وRSA PKCS#1 v1.5 وECDSA جميعها عبرNCryptSignHash FPdfSha256: تنفيذ SHA-256 مستقل وفق FIPS 180-4 (Init/Update/Final + دوال مساعدة لمرة واحدة). لا يُجمّع FPC 3.2.2 وحدة SHA-2، لذا تمتلك المكتبة واحدة لإبقاء كل مسار كود CMS على نوعTSHA256Digestواحد دون تفرعات RTLFPdfAsn1: مُرمّز DER (TDerWriter) وقارئ (TDerReader) يغطي SEQUENCE/SET/OID/INTEGER/OCTET STRING/UTCTime/GeneralizedTime/context-specific tags، مع ترميز definite-length ومعالجة IMPLICIT-tag التي يتطلبها CMSFPdfCms: منشئ CAdES SignedData (BuildSignedData) يُصدر السمات الموقّعة content-type وmessage-digest وsigning-certificate-v2 التي يفرضها أساس PAdES، مع signing-time وcommitment-type-indication اختيارية. يُحسب هضم signedAttrs عبر الصيغة الموسومة SET (0x31) ويُعاد إصدارها بوسم IMPLICIT [0] (0xA0) وفق RFC 5652 §5.4FPdfCrypto+FPdfCryptoWin: تجريد backend تشفيري معPadesCryptoAvailable/ResolvePadesSigner، وتنفيذ Windows الذي يربط crypt32.dll / ncrypt.dll ديناميكيًا (بدون تبعية DLL جديدة وقت الترجمة). تُعاد ترميز توقيعات ECDSA من صيغة IEEE P1363 r¦s الخاصة بـ Windows إلى صيغة DERECDSA-Sig-Valueالتي يتطلبها CMSSignPadesBytes: حقن التوقيع على مستوى البايت — يحجز خانة hex/Contentsبعرض ثابت، يحسب/ByteRangeالمغطّي، يهضم المستند، يبني ويُضمّن CMS، ويُلحق التحديث التزايدي. يتعرّف المُحقّق (v2.7.0) على المخرجات كتوقيع PAdES B-B
Version 2.7.0
أُضيف (Added)
- مُحقّق بنيوي لـ PAdES (ETSI EN 319 142-1 V1.2.1): الوحدة الجديدة
FPdfPadesوالطريقةTPdf.ValidatePadesتفحص قواميس قيمة التوقيع القابلة للوصول من/ByteRange، وتجتاز CMSSignedDataداخل/Contentsبما يكفي لتأكيد صيغة CAdES detached، وتكشف المستويات الأساسية الأربعة (B-B, B-T, B-LT, B-LTA) بالإضافة إلى قواميس Document Time-stamp (/SubFilter /ETSI.RFC3161) - مجموعة مشكلات PAdES على مستوى البند: 26 تعداد
ppei*تغطي قبول/SubFilter(adbe.pkcs7.sha1وadbe.x509.rsa_sha1مُعلّمان كممنوعين)، وتغطية ملف/ByteRange، وحظر/Cert، وصيغة CMSSignedData(موقّع واحد، detached eContent، نطاق إصدار)، والسمات الموقّعة المطلوبة (content-type،message-digest،signing-certificate/v2)، والهضمات الممنوعة (MD5، SHA-1)، والاستبعاد المتبادل بين/Reasonوcommitment-type-indication(متطلب d)، ومتطلب B-T للوقت الموثوق، وعلامة B-LT/DSS+/Certs+ ESIC Level 1، وعلامة B-LTA Document Time-stamp + ESIC Level 2 - حاقن DSS:
TPdf.SaveAsPadesDss/SaveAsPadesDssToStreamيُلحقان تحديثًا تزايديًا بنسخة من المستند يحمل قاموس/DSS(مع مصفوفات تدفق/Certsو/OCSPsو/CRLs) وعلامة/Extensions /ESIC(Level 1 أو 2)، مع الحفاظ على البايتات الأصلية — خطوة تضمين مادة التحقق لـ B-LT/B-LTA (البند 5.4.2) - مرحلة متعددة المنصات وبدون تبعيات: المُحقّق والحاقن بلغة Pascal خالصة ويعملان على كل IDE مدعوم (Delphi، Lazarus، FPC، C++Builder)؛ لا يُطلب backend تشفيري لهذا الإصدار، ولا تُضاف تبعية DLL جديدة
Version 2.6.0
تم التغيير (Changed)
- إزالة التكرار بين المعايير: سبع دوال مساعدة مكررة إضافية (PdfEnclosingObjNum، PdfDictRefNum، PdfExpandObjectStreams، PdfTextStr، ExtractLiteralString، ExtractXmpAttr) أُزيلت من وحدات المعايير الفردية ودُمجت في
FPdfPdfCommon، مما يقلل عبء صيانة النسخ-اللصق بحوالي 300 سطر - جودة PreflightReport: مشكلات content-class لـ PDF/X وPDF/E التي كانت في السابق تسقط في فئة “missing marker” العامة تحمل الآن فئات Content/Metadata/Security دقيقة وتوصيات خاصة بالبند (~15 تعدادًا عبر كلا المعيارين)
- تغطية اختبارات PDF/E وPDF/R: ستة تعدادات إضافية ذات تغطية صفرية حصلت على اختبارات إيجابية (
pveiLzwForbidden،pveiJavaScriptForbidden،pveiFormFieldsForbidden،pveiEmbeddedFilesForbidden،pvriBadHeader،pvriProhibitedInfoEntry) - إصلاح بناء Lazarus:
Tests.PdfVT(وحدة DUnitX خاصة بـ Delphi فقط أُضيفت في v2.5.x) تُستبعد الآن من مشروع Lazarus لاستعادة الترجمة
Version 2.5.3
أُضيف (Added)
- اكتمال OutputIntent (PDF/X-4 §6.2.4):
pvviOutputIntentSchemeيُعلّم OutputIntent الذي يكون/Sالخاص به ليس/GTS_PDFX؛pvviOutputIntentMissingIdentifierيُعلّم/OutputConditionIdentifierالمفقود - إعفاء Reference XObject لـ PDF/VT-2 (§6.2.2): لم يعد
pvviReferenceXObjectForbiddenيُطلق لملفPDF/VT-2، والذي يجوز له قانونًا استخدام Reference XObjects على أساس X-5g/5pg - التحقق من حرف حدود MIME (RFC 2046 §5.1.1):
vtmviBoundaryInvalidCharيُعلّم حدًا تقع أحرفه خارج مجموعة bchars أو يتجاوز طوله 70
تم الإصلاح (Fixed)
- يكتب
InjectPdfVTMarkersالآن Info/CreationDateو/ModDateمن خيارات الحفظ، بحيث يمر الملف المُنتَج عبرValidatePdfVTComplianceدونpvviInfoModDateMismatchخاطئ (أعاد الحاقن سابقًا كتابة تواريخ XMP لكنه ترك تواريخ قاموس Info قديمة)
Version 2.5.2
أُضيف (Added)
- اتساق Info
/ModDate(§6.3 NOTE 2، أساس PDF/X-4):pvviInfoModDateMismatchيُعلّم/ModDateلقاموس Info والذي، بعد تسوية تاريخ-PDF إلى تاريخ-XMP، لا يساويxmp:ModifyDate - مطابقة inline chunk لـ PDF/VT-2s (الملحق A.2): يُشغّل مُحقّق MIME الآن
ValidatePdfVTComplianceعلى كل جزءapplication/pdfinline ويُعلّم جسمًا غير PDF/PT عبرvtmviInlinePdfNotPdfVT
Version 2.5.1
أُضيف (Added)
- التحقق من تقسيم DParts إلى أجزاء (ISO 16612-2 §6.5 Table 4):
pvviDPartsBadChunkingيُعلّم مصفوفة/DPartsلا تحتوي مصفوفاتها الفرعية غير النهائية على 8192 إدخال بالضبط أو تقع مصفوفتها الفرعية الأخيرة خارج 1..8192 - اتساق RecordLevel عبر التدفقات (الملحق A.2): يستخرج مُحقّق MIME لـ PDF/VT-2s الآن
/RecordLevelلكل PDF inline ويُعلّم الخلاف عبرvtmviRecordLevelMismatch، مكمّلًا فحص NodeNameList الموجود - تلميحات الكائنات الرسومية المتكررة (§6.7):
pvviGtsScopeInvalidValueيُعلّم/GTS_Scopeخارج {SingleUse، Record، File، Stream، Global، Unknown}؛pvviGtsScopeRecordWithoutRecordLevelيُعلّم/Recordبدون/RecordLevel؛pvviGtsXidNotUuidيُعلّم/GTS_XIDليس RFC 4122 uuid: URI؛pvviGtsEnvMissingيُعلّم/GTS_Envالمفقود عندما يكون/GTS_Scopeهو Stream أو Global (§6.7.4) - الكشف عن المرجع الأمامي لـ MIME (الملحق A.2):
vtmviForwardReferenceيُعلّم PDF inline يستشهد باسم ملف (عبر/EF /F) لم يُقدّمه جزء مرفق سابق في التدفق
تم الإصلاح (Fixed)
ExtractNodeNameListFromPdfوExtractRecordLevelFromPdfفيFPdfPdfvtMimeعالجا خطأ off-by-one متكرر حيث عُومِل الإزاحة 1-based التي أرجعهاAnsiFindKeyكإزاحة بايت مطلقة داخل PDF الموسّع
Version 2.5.0
أُضيف (Added)
- بيانات Document Part الوصفية لـ PDF/VT (DPM، ISO 16612-2 §6.6): اكتسب
TPdfVTSaveOptionsالحقلينDpmEntriesوDpmTargetبحيث يستطيع الكاتب إرفاق قاموس/DPMبعقدة DPart المُركّبة، مع التحقق من اسم المفتاح مقابل قاعدة second-class-prefix في الملحق E وقواعد NMTOKEN / التفرّد / صيغةGTS_Managedفي §6.6 على جانب المُحقّق - تبادل تدفق PDF/VT-2s (الملحق A): الوحدة الجديدة
FPdfPdfvtMimeتوفرBuildPdfVT2sStreamوValidatePdfVT2sStreamلغلاف MIME من نوعmultipart/mixedيحمل أجزاء PDF/VT inline بالإضافة إلى ملفات ICC مرفقة، مع قاعدة ترتيب الترويسةX-PDFVT-Stream-version: 1وفحص اتساقNodeNameListعبر التدفقات - يُجري
TPdf.ValidatePdfVTالآن عدًا موثوقًا لإجراءات JavaScript عبرFPDFDoc_GetJavaScriptActionCount، مكمّلًا مسح اسم/JavaScriptعلى مستوى البايت
تم الإصلاح (Fixed)
- صحة PDF/VT
Trappedعلى أساس PDF/X-4: تُزال قيمة التعدادptvUnknown(يحظر PDF/X-4/Unknown)، ويُطبّعptvUnspecifiedإلى/Falseوقت الكتابة (/Trappedالمفقود محظور أيضًا)، ومشكلة جديدةpvviTrappedInvalidتُعلّم قيمة غائبة أوUnknown - يُوسّع
ValidatePdfVTComplianceالآن تدفقات الكائن (PdfExpandObjectStreams) قبل المسح، بحيث يكون قاموس catalog أو OutputIntent أو Metadata المخزّن داخل ObjStm مضغوط (PDF 1.5+، نموذي لدى منتجي PDF/X-4) متاحًا لعمليات البحث على مستوى البايت
تم التغيير (Changed)
- يرث PDF/VT-1 الآن ممنوعات محتوى PDF/X-4 الكاملة:
pvviAcroFormForbidden(/AcroFormأو/XFA)،pvviAdditionalActionsForbidden(catalog/AA)،pvviMissingTrimBoxوpvviReferenceXObjectForbidden(Reference XObject، X-5g/5pg فقط) - إزالة التكرار بين المعايير: رُقّي
BuildDictObj،IccComponentCount، ملف تعريف ICC المضمّن sRGB (GetSrgbIccProfile)،PdfTextStr،PdfEnclosingObjNum،PdfDictRefNumوPdfExpandObjectStreamsمن نسخ محلية ثلاثية فيFPdfPdfa/FPdfPdfx/FPdfPdfvtإلى موطن واحد قياسي فيFPdfPdfCommon؛ يوجد literal الـ ICC المكوّن من 3144 بايت الآن مرة واحدة بالضبط في قاعدة الكود
Version 2.4.0
تم الإصلاح (Fixed)
InjectPdfUaMarkersلم يعد يسقط مرجع/Infoالخاص بـ trailer على قاعدة cross-reference-stream: تم استبدالSourceTrailerInfoRefالمحلي (الذي يفتقر إلى xref-stream fallback) بـPdfSourceTrailerInfoRefالمشترك (الذي تمت ترقيته من نسخة PDF/A التي كانت تحتوي على fallback منذ v2.0.0)- يتعامل
PdfReadStreamBytesالمشترك الآن مع مراجع/Length N G Rغير المباشرة (تم نقلها من نسخة PDF/A المحلية)، وبالتالي لم تعد أدوات التحقق من PDF/VT و PDF/R و PDF/E تخطئ في قراءة أو تتخطى تدفقات البيانات الوصفية لـ XMP التي تنتجها الأدوات التي تستخدم indirect Length (Acrobat و Ghostscript)
تم التغيير (Changed)
- إلغاء تكرار المعايير المشتركة: تم حذف نسخ
PdfReadTrailerالمحلية فيFPdfPdfaوFPdfPdfx، ونسخSourceTrailerInfoRefالمحلية فيFPdfPdfaوFPdfPdfua، وPdfReadStreamBytesالمحلي فيFPdfPdfa— تنطبق الآن إصداراتFPdfPdfCommonالمشتركة في كل مكان؛ هذا يزيل حوالي 330 سطرًا من الكود المكرر ويقضي على عبء الصيانة لإبقاء النسخ متزامنة - إغلاق ديون اختبار PDF/X: حصلت سبعة تعدادات content-class التي كانت ذات تغطية صفرية سابقًا على اختبارات إيجابية (
pvxiLzwForbidden،pvxiJavaScriptForbidden،pvxiFormFieldsForbidden،pvxiAdditionalActions،pvxiEmbeddedFilesForbidden،pvxiMissingTrimBox،pvxiTrappedNotSet)
Version 2.3.0
تم التغيير (Changed)
- يستمر إغلاق ديون اختبار PDF/A: حصلت ثلاثة تعدادات أخرى ذات تغطية صفرية على اختبارات إيجابية؛ يقوم
pvaiForbiddenRenderingIntent(§6.2.9) بتمييز اسم rendering-intent غير القياسي في content stream؛ بينما يقومpvaiJpeg2000Violation(§6.2.2) بتمييز صورة JPXDecode تحتوي على/NumComponentsخارج النطاق {1,3,4} في Part 2؛ ويقومpvaiInlineImageLzwForbidden(§6.1.10) بتمييز صورة مضمنة تستخدم فلتر LZW في Part 2
Version 2.2.0
تم التغيير (Changed)
- اختبارات التراجع لمجرى المراجع المتقاطعة (cross-reference-stream): يتحقق اختبار
Validate_XrefStreamTrailer_DetectsConformanceالحالي الآن أيضاً من أنه قد تم حل مرجع/Metadataالخاص بالفهرس (catalog) وقراءةpdfaid:partلـ XMP على أساس مجرى xref (وليس فقط/Root+/ID)؛ ويقوم اختبارInjectPdfA_XrefStreamBase_RoundTripsالجديد بحماية مسار مجرى xref الخاص بالحقن المضاف في الإصدار v2.0.0؛ ويتحقق اختباران عبر المعايير (PdfE_XrefStreamBase_NotRejectedAsUnparsableوPdfR_XrefStreamBase_NotRejectedAsUnparsable) من أن مدققي PDF/E و PDF/R لم يعودوا يرفضون ملفات PDF ذات مجرى xref كغير قابلة للتحليل - إغلاق ديون اختبار PDF/A: يؤكد اختبار
Validate_MinimalPdf_FlagsRequiredMarkersأن ملف PDF الأدنى المجرد يثيرpvaiMissingPdfAIdentifierوpvaiMissingOutputIntentوpvaiMissingIccProfileوpvaiMissingXmpMetadataوpvaiMissingXmpDates— مما يغلق فجوة التناظر مع مدققي PDF/E و PDF/X اللذين كانا يحتويان بالفعل على اختبارات مكافئة؛ واكتسب تعدادان إضافيان ذوا تغطية صفرية اختبارات إيجابية:pvaiUnembeddedFontوpvaiSubsetMissingCidSet
Version 2.1.0
تم الإصلاح (Fixed)
- تم استبعاد PDF/E سهواً من إصلاح مجرى المراجع المتقاطعة في v2.0.0: حيث استمر كل من
InjectPdfEMarkersوValidatePdfEComplianceفي استدعاءPdfReadTrailerبدونAcceptXrefStream، مما أدى إلى فشل حاقن PDF/E بصمت في مخرجات PDF 1.5+ (الافتراضي لـSaveAsCopyالخاص بـ pdfium)؛ ويمرر كلا موقعي الاستدعاء الآن القيمةTrue - يحمل الملاذ المشترك لـ
PdfReadTrailerالخاص بمجرى المراجع المتقاطعة الآن حارس/Type /XRefالذي كانت النسخ المحلية لـ PDF/A و PDF/X تمتلكه بالفعل، بحيث يفشل إزاحةstartxrefالتالف الذي يشير إلى قاموس غير ذي صلة بشكل نظيف بدلاً من تحليله بشكل خاطئ على أنه المقطورة (trailer) - كان محلل
/Langذو المرجع غير المباشر فيValidatePdfUaCompliance(v2.0.0) غير قابل للوصول: حيث تجد دالةPdfFindObjDictالقواميس<<فقط، بينما كائن سلسلة/Langهو(...)أو<...>بدون قاموس؛ وتم استبداله بمسح مباشر لجسم الكائن يحدد موقع رمز السلسلة
تم التغيير (Changed)
- تم إزالة سبعة تكرارات مساعدة ظلية ميتة (PdfStructureBytes و PdfHasName و PdfCountName و BuildStreamObj) التي كانت نسخاً متطابقة البايت من إصدارات
FPdfPdfCommonالمشتركة، منFPdfPdfaوFPdfPdfua— وتطبق الإصدارات المشتركة الآن في كل مكان عبرuses
Version 2.0.0
تم الإصلاح (Fixed)
- الفشل الصامت عبر المعايير: يقبل المساعد المشترك
PdfReadTrailer(المستخدم بواسطة حواقن ومدققي علامات PDF/UA و PDF/X و PDF/VT و PDF/R) الآن معلمةAcceptXrefStreamويتراجع إلى قاموس كائن مجرى المراجع المتقاطعة عند عدم وجود كلمة رئيسيةtrailer(PDF 1.5+)؛ سابقاً، تسبب مخرجSaveAsCopyلـ pdfium (الذي يستخدم مجرى مراجع متقاطعة) في فشل كل حاقن علامات بصمت — حيث تم نسخ بايتات المصدر دون تغيير وظل الاستدعاء يعيد النجاح؛ وكان مدقق PDF/R-1.0 (الذي يعتبر أساسه PDF 2.0 مجرى مراجع متقاطعة دائماً) بلا تأثير فعلي؛ وتم نقل التنفيذ الناضج لمدقق PDF/A إلى المساعد المشترك لكي تستفيد جميع المعايير - يستخدم مسح قاموس المقطورة (trailer) في
InjectPdfUaMarkersوInjectPdfAMarkersالآنPdfDictEndالمدرك للعمق بدلاً من البحث المجرد عن>>، بحيث لا يتم قطع المقطورة التي تحتوي على قاموس متداخل (على سبيل المثال/Encrypt << ... >>) قبل إدخال/Infoاللاحق
تم التغيير (Changed)
- تقوم دالة
TPdf.ValidatePdfUaالآن بكتمpvuaiFontNotEmbeddedالتقريبي على مستوى البايت عندما يتم إطلاقpvuaiPdfiumFontNotEmbeddedالدقيق لنموذج كائنات Pdfium بالفعل، بحيث لا يحمل تقرير التحقق المسبق (preflight) صفين شبه مكررين لـ "تضمين الخطوط الخاصة بك" لنفس العيب - تقوم دالة
pvuaiLangInvalidFormat(§7.2) الآن بحل/Langذي المرجع غير المباشر (N 0 R) إلى كائن السلسلة الخاص به وتتحقق من صحة المحتوى، وبذلك لم تعد علامة اللغة المشار إليها بشكل غير مباشر بقعة عمياء
Version 1.99.0
تم الإصلاح (Fixed)
- لا تمنح دالة
pvuaiLangInvalidFormat(§7.2) ميزة الاستثناء لسلاسل/Langالمرمزة بنظام السداسي عشر (hex): حيث يتم الآن فك ترميز أزواج UTF-16BE (مع علامة BOMFE FF) وسلاسل ASCII السداسية العشرية المجردة وإخضاعها لنفس فحص قواعد اللغة BCP 47 مثل سلاسل(...)الحرفية، وبذلك يتم رصد قيم/Langالسداسية العشرية المشوهة بينما لا تتعرض القيم المتوافقة (مثل UTF-16BEen-US) لخطر الإشارة إليها بوجود خطأ
تم التغيير (Changed)
- تعفي دالة
pvuaiFontMissingToUnicode(§7.21.7) الآن الترميز/MacExpertEncodingإلى جانب/WinAnsiEncodingو/MacRomanEncoding، بما يطابق شروط الإعفاء الأربعة المدرجة في البند
Version 1.98.0
تمت الإضافة (Added)
- تشير دالة
pvuaiNeedAppearancesTrue(§7.18.4) إلى AcroForm التي تحتوي على علامة/NeedAppearancesبقيمة true، بحيث لا يتم قفل مظهر عناصر التحكم (widget) بشكل موثوق ولا تستطيع التقنيات المساعدة ربطها بشجرة البنية؛ وقد تم نقل هذا الفحص من مدقق PDF/A وتقييده بوجود/AcroFormلتضييق نطاق الفحص
تم التغيير (Changed)
- تراجع في مجموعة اختبارات (corpus) لـ veraPDF: تم ربط زوج النجاح والفشل لـ Reference-XObject §7.20 وأزواج النجاح والفشل لـ subset CharSet/CIDSet §7.21.4.2 في
Live_Corpus_ValidatePdfUaMatchesConformance؛ كما تم أيضاً ربط عينات النجاح لـ ToUnicode-forbidden-value §7.21.7 و media-clip §7.18.6.2 كحراس ضد الحالات الإيجابية الخاطئة (حيث تستخدم عينات الفشل الخاصة بها مخططات قاموس لا يلتقطها الفحص على مستوى البايت، لذلك تم ربط جانب النجاح فقط) - حصلت قائمة توكيدات مسار النجاح في مجموعة الاختبارات (corpus) على 15 حارساً جديداً خالياً من الإيجابيات الخاطئة، بحيث يتم الآن اختبار كل فحص نشط لـ
pvuai*على مستوى البايت والبنية ضد عينات متوافقة (في السابق كان حوالي 30 فقط من أصل 60 مشكلة نشطة محمية)؛ وتم حذف حارسpvuaiLangInvalidFormatعمداً لأن فاحص مستوى البايت يشير بتحفظ إلى سلاسل/Langالمرمزة بنظام السداسي عشر التي لا يمكنه فك ترميزها
Version 1.97.0
تم الإصلاح (Fixed)
- تقوية
ValidatePdfUaStructureElements: يحمل مسار انتقال سلسلة الآباء لـEnclosingTableالآن عداداً للقفزات (محدوداً بعدد العناصر)، وبذلك لا يمكن لدورةParentIndexالمشوهة على مصفوفة عناصر بنية اصطناعية أن تؤدي إلى تعليق المستدعي؛ كما تم تقييد تخصيص مصفوفة معرّفات المحتوى المميز لـValidatePdfUaPageContentTaggingبمليون مدخل كحد أقصى، مما يمنع تخصيص مساحة تخزين بجيجابايت متعددة في حال وجودMarkedContentIDمشوه أو ضار
تم التغيير (Changed)
- يصف تعليق توثيق التعداد لـ
pvuaiOrderedListMissingListNumberingالآن بدقة ما يقوم به الفحص: فهو يشير إلى عنصرLالذي تكون قيمةListNumberingله خارج مجموعة الجدول 347 من ISO 32000-1 (ولا يتم الإشارة إلى السمة الغائبة)؛ بينما كان التعليق السابق يلمح إلى أنه يكتشف أيضاً القوائم المرتبة التي تفتقر إلى هذه السمة، وهو ما لا يفعله التنفيذ الحالي - تم الآن ربط عينتي الفشل الخاصتين بـ WMode-mismatch لـ
7.21.3.3-t02فيLive_Corpus_ValidatePdfUaMatchesConformance— فمنذ الإصدار v1.95.0 يتم توسيع مجرى CMap بفك ضغط FlateDecode، وبذلك يتم الآن إجراء المقارنة بين القاموس والمحتوى على جانب قابل للقراءة؛ وقد تم إزالة تعليق “not wired” القديم
Version 1.96.0
تمت الإضافة (Added)
- الاتساق عبر المعايير: تحصل دالة
TPdf.ValidatePdfUaعلى فحصين تم نقلهما من مدقق PDF/A؛ حيث تشير دالةpvuaiAnnotationFlagsViolation(§7.18.1) إلى التعليقات التوضيحية غير المعفاة التي تحمل علامة المخفي (Hidden) / غير المرئي (Invisible) / بلا عرض (NoView)، مما يقطع تدفق القراءة للتقنيات المساعدة؛ وتشير دالةpvuaiActionTargetMissing(§7.18.5) إلى إجراءات GoToR / URI / SubmitForm التي تفتقر إلى مفتاح الهدف المطلوب (/F+/D، /URI، /F)، مما يجعل الرابط غير قابل للاستخدام بواسطة التقنيات المساعدة AT
تم الإصلاح (Fixed)
- دمج شجرة البنية عبر الصفحات: تقوم حلقة تجميع
AllElemsفيTPdf.ValidatePdfUaالآن بإعادة تأسيس قيمةParentIndexلكل عنصر من المصفوفة المحلية للصفحة إلى المصفوفة المدمجة؛ ودون ذلك، كانت عناصر الصفحات الفرعية في الصفحة 2 تحتفظ بفهرس محلي للصفحة يشير إلى شريحة الصفحة 1، مما يؤدي بصمت إلى إتلاف كل فحص يعتمد على ParentIndex (بنية الجدول/القائمة، عدد H-child وفق §7.4.4، و EnclosingTable) - تحليل خريطة الأدوار RoleMap: لا ينهي إجراء
PdfReadRoleMapPairsفحص المفتاح/القيمة بالكامل عندما تكون القيمة مرجعاً غير مباشر (N 0 R) أو مصفوفة ([...]) — وكلاهما شكلان صالحان لخريطة الأدوار RoleMap وفقاً لمعيار ISO 32000-1 14.8.5.1؛ حيث يتخطى الآن هذا المدخل فقط (Continue) بدلاً من الخروج بـBreak، مما يزيل الحالات الإيجابية الخاطئة لـpvuaiRoleMapUnresolvedللأنواع التي يتم تعيينها بعد مدخل غير مباشر أو مصفوفة
تم التغيير (Changed)
- تقرير
FPdfPreflightReport: تحمل الآن 18 قيمة نشطة لـTPdfUaValidationIssue(والتي كانت تقع سابقاً ضمن فئة التوصية العامة “missing marker”) تصنيفات دقيقة (البنية / المحتوى / البيانات التعريفية / الأمان) وتوصيات محددة للبند؛ كما تم أيضاً إصلاح الخطأ الإملائيpuaNone / pua1→pucNone / puc1فيPDFSpecComplianceMatrix.md
Version 1.95.0
تم التغيير (Changed)
- مراجعة وصحة استدعاء
TPdf.ValidatePdfUa: يقوم فحصpvuaiCMapWModeMismatchوفق §7.21.3.3 وفحصpvuaiToUnicodeForbiddenValueوفق §7.21.7 الآن بتوسيع مجاري CMap / ToUnicode stream المضغوطة بترميزFlateDecodeقبل الفحص (في السابق كان يتم فحص المجاري غير المضغوطة فقط، وهو ما يمثل حالة سلبية خاطئة معروفة)؛ وتمت ترقية الدوال المساعدة المشتركةPdfInflate/PdfReadAndDecodeStreamمنFPdfPdfa/FPdfPdfxإلىFPdfPdfCommonلتتشارك كافة وحدات المطابقة نسخة واحدة
تمت الإضافة (Added)
- تشير دالة
pvuaiSubsetCharSetEmpty(§7.21.4.2) إلىFontDescriptorلخط فرعي من نوع Type 1 يحمل مفتاح/CharSetبقيمة نصية فارغة — حيث كانت دالةpvuaiSubsetMissingCharSetالحالية ترصد فقط المفتاح المفقود؛ بينما لا يتم الإشارة إلى قيمة/CIDSetفارغة بوجود خطأ، نظراً لأن الخط الذي لا يحتوي على معرّفات CID يمكنه قانونياً حمل خريطة بت فارغة
Version 1.94.0
تمت الإضافة (Added)
- أغلقت المراجعة الثانية لدالة
TPdf.ValidatePdfUaست فجوات في معيار ISO 14289-1 ظهرت خلال مراجعة بنداً ببند وإعادة فحص واجهات برمجة تطبيقات Pdfium الأصلية المغلفة بالفعل وغير المستخدمة في مسار PDF/UA؛ حيث تشير دالةpvuaiHeadingFormatInvalid(§7.4.3) إلى علامات العناوين المحددة من قبل المستخدم والتي تبدأ بالحرف H ولكنها تحمل فواصل أو مسافات أو أرقاماً رومانية بدلاً من الأرقام العربية البحتة؛ وتشير دالةpvuaiMissingDocumentOutline(§7.17، ينبغي) إلى المستندات متعددة الصفحات التي لا تحمل مخططاً تفصيلياً للإشارات المرجعية (المستندات ذات الصفحة الواحدة معفاة)؛ وتشير دالةpvuaiStructElementLangInvalid(§7.2) إلى قيمة/Langلعنصر البنية التي لا تمثل وسم BCP 47 صالحاً؛ وتشير دالةpvuaiWidgetMissingPrintField(§7.14 / §7.18.4) إلى عنصر بنية Widget يفتقر إلى مالك سمة PrintField؛ وتشير دالةpvuaiLinkNotInStructureTree(§7.18.5) إلى المستندات التي لا تظهر فيها التعليقات التوضيحية ذات النوع/Subtype /Linkكعناصر بنية Link؛ وتضيف دالتاpvuaiPdfiumAnnotationMissingContentsوpvuaiPdfiumLinkMissingContents(§7.18.1 / §7.18.5) فحصاً دقيقاً لنموذج كائنات Pdfium للتعليقات التوضيحية يعفي التعليقات المخفية، وخارج صندوق الاقتطاع (crop-box)، والنوافذ المنبثقة (Popup)، وعناصر التحكم (Widget) — مما يلغي الحالات الإيجابية الخاطئة للاستدلال على مستوى البايت، والذي لا يستطيع قراءة علامات/Fأو/Rect
Version 1.93.0
تمت الإضافة (Added)
- تضيف دالة
TPdf.ValidatePdfUaالآن مساراً لنموذج كائنات Pdfium فوق مفتش مستوى البايت، بما يحاكي بنية الجولة 7 لـ PDF/A: حيث يتنقل عبر كائنات النص لكل صفحة عبرFPDFTextObj_GetFont→FPDFFont_GetIsEmbedded(pvuaiPdfiumFontNotEmbedded، §7.21.4) ويفحص كل حرف عبرFPDFText_HasUnicodeMapError(pvuaiPdfiumUnicodeMapError، §7.21.7) وFPDFText_GetUnicode(pvuaiPdfiumNotDefGlyph، §7.21.8) — وهو أكثر دقة من الاستدلالات على مستوى البايت، والتي لا تعمل إلا عند وجود صفر من برامج الخطوط أو عدم ظهور/ToUnicodeعلى الإطلاق؛ ويختصر الفحص المسار عند ثلاثة مستويات: تخرج حلقة الصفحات عندما تكون المشكلات الثلاث لمستوى Pdfium قد تم تعيينها بالفعل، وتخرج حلقة الكائنات عند أول خط غير مضمن، ويتخطى فحص الأحرف فحص.notdefعندما يتم تسجيلUnicodeMapErrorبالفعل؛ وكان معيار PDF/UA هو آخر مدقق معايير PDF لا يحتوي على طبقة نموذج كائنات Pdfium
Version 1.92.0
تمت الإضافة (Added)
- إنشاء
Tests.PdfR— ملف الاختبار الأول لمدقق PDF/R-1 (FPdfPdfr)، ويغطي التحقق من صحة الترويسة، وحظر ObjStm، واكتشاف علامات الصور النقطية (raster-marker)، وحارس ملف نظيف خالٍ من الإيجابيات الخاطئة؛ وتمتلك الآن مجموعات اختبارات معايير PDF الست ملفات اختبار مخصصة: PdfA(80)، PdfUa(101)، PdfX(7)، PdfE(5)، PdfVT(15)، PdfR(4) = إجمالي 212 اختباراً
Version 1.91.0
تمت الإضافة (Added)
- حصلت دالتا
ValidatePdfEوValidatePdfVTعلى فحوصات لمستوى المحتوى كانت متوفرة سابقاً فقط في مدققات PDF/A و PDF/UA و PDF/X: وهيpveiLzwForbiddenوpveiJavaScriptForbiddenوpveiFormFieldsForbidden(لـ PDF/E فقط) وpveiEmbeddedFilesForbidden(لـ PDF/E only) وpveiOpiForbiddenوpvviLzwForbiddenوpvviJavaScriptForbiddenوpvviEmbeddedFilesForbiddenوpvviOpiForbidden؛ كما حصلتTPdf.ValidatePdfEوTPdf.ValidatePdfVTعلى طبقة نموذج كائنات Pdfium (pveiPdfiumFontNotEmbedded/pvviPdfiumFontNotEmbedded) التي تتنقل عبر كائنات النص للصفحة عبرFPDFFont_GetIsEmbedded، وتختصر المسار عند أول خط غير مضمن يتم العثور عليه
Version 1.90.0
تمت الإضافة (Added)
- تضيف دالة
TPdf.ValidatePdfXالآن مساراً لنموذج كائنات Pdfium فوق مفتش مستوى البايت: حيث يتنقل عبر كائنات النص لكل صفحة عبرFPDFTextObj_GetFont→FPDFFont_GetIsEmbeddedويبلغ عن الخط غير المضمن كـpvxiPdfiumFontNotEmbedded— وهو أكثر دقة من الاستدلال على مستوى البايت الذي لا يعمل إلا عند وجود صفر من برامج الخطوط؛ وتخرج حلقة الفحص عند أول خط غير مضمن يتم العثور عليه
تم التغيير (Changed)
- مسار شجرة بنية
TPdf.ValidatePdfUa: يتم الآن تخطي استدعاءValidatePdfUaPageContentTaggingلكل صفحة (والذي يبني خريطة مطالبات معرّفات المحتوى المميز ويفحص كل كائن نص/صورة بشكل متقاطع) في الصفحات اللاحقة بمجرد العثور علىpvuaiUntaggedContentبالفعل — حيث لا يزال يتم جمع عناصر البنية للفحوصات عبر الصفحات (معرّف الملاحظة الفريد، تسلسل العناوين)، ولكن مسار ترميز المحتوى المكلف لكل صفحة يتوقف مبكراً
Version 1.89.0
تم التغيير (Changed)
- أداء طبقة نموذج كائنات Pdfium لـ
TPdf.ValidatePdfA: تختصر حلقة الصفحات/الكائنات المسار الآن عند ثلاثة مستويات — حيث تخرج حلقة الصفحات عندما تكون كافة مشكلات طبقة Pdfium القابلة للتطبيق قد تم العثور عليها بالفعل، وتخرج حلقة الكائنات عند تعيين كلتا مشكلتي الكائن (تضمين الخط + الشفافية)، ويتخطى فحص الأحرف لصفحة النص فحص.notdefعندما يتم تسجيلUnicodeMapErrorبالفعل؛ ويتم تخزين فحوصات توفر واجهة برمجة التطبيقاتAssigned()وعلامات المطابقة مؤقتاً في متغيرات منطقية محلية مرة واحدة قبل الحلقة بدلاً من إعادة تقييمها عند كل صفحة/كائن/حرف؛ وبذلك يمكن للحلقة في المستندات الكبيرة غير المتوافقة أن تتوقف بعد الصفحة الأولى بدلاً من فحص جميع الصفحات؛ بينما يكون العبء الإضافي لكل صفحة في المستند المتوافق أقل (دون استدعاءاتAssignedمتكررة)
Version 1.88.0
تمت الإضافة (Added)
- حصلت دالة
ValidatePdfXعلى ثماني قيم جديدة لـTPdfXValidationIssueلمستوى المحتوى تغطي قيود التبادل الطباعي التي يفرضها PDF/X خارج علامات تنسيق الملف: وهيpvxiLzwForbidden(/LZWDecode) وpvxiJavaScriptForbidden(/JavaScript) وpvxiFormFieldsForbidden(/AcroForm//XFA) وpvxiAdditionalActions(/AA) وpvxiEmbeddedFilesForbidden(/EmbeddedFiles//FileAttachment) وpvxiOpiForbidden(/OPI//Alternates) وpvxiMissingTrimBox(عدم وجود/TrimBoxعلى أي صفحة) وpvxiTrappedNotSet(غياب/Trappedأو قيمته/Unknown)؛ وكان مدقق PDF/X سابقاً يفحص فقط علامات XMP/OutputIntent؛ وهذا هو أول فحص له على مستوى المحتوى؛ كما تم إضافة الدوال المساعدة المشتركةPdfStructureBytes/PdfHasName/PdfCountNameإلىFPdfPdfCommonلكي تتمكن جميع وحدات المطابقة من استخدامها
Version 1.87.0
تمت الإضافة (Added)
- يغطي التحقق من PDF/UA الآن قواعد الخطوط المركّبة وفق ISO 14289-1 §7.21.3:
pvuaiCidSystemInfoMismatchيُشير إلى خطوط Type0 التي يختلف فيها CMap المضمّن وCIDFont التابع له بشأنRegistry/Orderingأو يتجاوز فيهاSupplementالخاص بـ CIDFont حدود CMap، وpvuaiCMapNotEmbeddedيُشير إلى CMaps المُشار إليها بالاسم (كـEncodingأوUseCMap) التي ليست CMaps معرّفة مسبقاً وفق ISO 32000-1 الجدول 118، وpvuaiCMapWModeMismatchيُشير إلى CMaps المضمّنة التي يختلف فيهاWModeفي قاموسها عن WMode في محتوى مجراها
تم الإصلاح (Fixed)
- كان فحص
pvuaiCidFontMissingCidToGidMapوفق §7.21.3.2 يفوته قواميس CIDFontType2 التي يفصل بين مفتاحSubtypeوقيمته سطر جديد، ويُشير الآن أيضاً إلى قيمة الاسمCIDToGIDMapغيرIdentity
Version 1.86.0
تمت الإضافة (Added)
- يغطي التحقق من PDF/UA الآن قواعد ترميز TrueType وفق ISO 14289-1 §7.21.6:
pvuaiTrueTypeEncodingInvalidيُشير إلى خطوط TrueType غير الرمزية التي يكون فيهاEncodingمفقوداً أو ليسMacRomanEncodingولاWinAnsiEncoding(مباشرةً أو عبرBaseEncoding)، وpvuaiSymbolicTrueTypeEncodingيُشير إلى خطوط TrueType الرمزية التي تحمل اسمEncodingغير قياسي
Version 1.85.1
تم التغيير (Changed)
- يعمل فحص ترتيب علامات التبويب
pvuaiMissingTabsOrderوفق ISO 14289-1 §7.18.3 الآن على أساس كل صفحة: كل صفحة تحتوي على تعليقات توضيحية يجب أن تُصرّح بـ/Tabs /Sفي قاموس صفحتها الخاص، بحيث لا تُخفي صفحة شقيقة مطابقة وجود صفحة بدون هذا الإعلان
Version 1.85.0
تمت الإضافة (Added)
- يُميّز التحقق من PDF/UA الآن بين نماذج XFA الديناميكية والثابتة وفق ISO 14289-1 §7.15:
pvuaiXfaDynamicيُشير إلى النماذج التي يُعيّن فيها إعداد XFA قيمةdynamicRenderإلىrequired
تم التغيير (Changed)
- تم إيقاف علامة المرشح السابقة
pvuaiXfaPresentلأي نموذج XFA ولن تُرفع بعد الآن (نماذج XFA الثابتة مطابقة لـ §7.15)؛ تبقى قيمة التعداد للتوافق مع API
Version 1.84.0
تمت الإضافة (Added)
- يكتشف التحقق من PDF/UA الآن المحتوى الحقيقي غير المُوسَّم المطلوب وفق ISO 14289-1 §7.1:
pvuaiUntaggedContentيُشير إلى كائنات النص والصور المُصيَّرة التي لا تنتمي إلى شجرة بنية الصفحة (عبر معرّفات المحتوى المُعلَّمة) ولم تُوسَّم كعنصر Artifact - مساعدات جديدة على مستوى الصفحة:
GetPageContentMarkInfosوValidatePdfUaPageContentTaggingمع سجلTPdfPageContentMarkInfoللاستخدام المباشر
Version 1.83.0
تمت الإضافة (Added)
- يُطبّق التحقق من PDF/UA الآن نموذج العناوين وفق ISO 14289-1 §7.4.4:
pvuaiHeadingModelMixedيُشير إلى المستندات التي تمزج بين وسمHالعام والعناوين المرقّمةH1..Hn، وpvuaiHeadingMultipleInNodeيُشير إلى عقد البنية التي تحتوي على أكثر من عنوانHفرعي
Version 1.82.0
تمت الإضافة (Added)
- يحلّ التحقق من PDF/UA الآن RoleMap المطلوب وفق ISO 14289-1 §7.1:
pvuaiRoleMapRemapsStandardيُشير إلى مدخلات RoleMap التي تُعيد تعريف نوع بنية قياسي، وpvuaiRoleMapUnresolvedيُشير إلى أنواع البنية غير القياسية المُستخدَمة التي تكون سلسلة RoleMap الخاصة بها مفقودة أو مقطوعة أو دائرية — السلاسل غير المباشرة التي تصل إلى نوع قياسي مقبولة، ومدخلات RoleMap غير المُستخدَمة لا تُحكَم عليها أبداً - مساعدات جديدة:
PdfUaIsStandardStructType، وPdfReadRoleMapPairs(مع فك ترميز هروب PDF للاسم#hh)، وValidatePdfUaRoleMapUsageللاستخدام المباشر
Version 1.81.0
تمت الإضافة (Added)
- يغطي التحقق من PDF/UA الآن وسم قوائم ISO 32000-1 المطلوب وفق ISO 14289-1 §7.6:
pvuaiListStructureInvalidيُشير إلى عناصر LI خارج حاوية L وأجزاء Lbl/LBody خارج عنصر LI، مع قبول القوائم المتداخلة والاستخدام المشروع لـ Lbl داخل عناصر Note وBibEntry
Version 1.80.0
تمت الإضافة (Added)
- يغطي التحقق من PDF/UA الآن وسم جداول ISO 32000-1 المطلوب وفق ISO 14289-1 §7.5:
pvuaiTableStructureInvalidيُشير إلى خلايا TH/TD خارج صف TR وصفوف أو مجموعات صفوف خارج حاوية Table الخاصة بها، وpvuaiTableHeaderMissingScopeيُشير إلى خلايا الرأس التي لا يمكن تحديد علاقتها لا عبر سمة Scope ولا عبر ارتباط Headers/ID، وpvuaiTableHeadersUndefinedIdيُشير إلى مراجع Headers في مستندات لا تُعرّف أي معرّفات عناصر بنية - تُعرض عبر
TPdfStructureElementسمات الجدول:Scope، وHasHeaders، وHeadersIds، وColSpan، وRowSpan، يتم حلّها أثناء مسح شجرة البنية
تم التغيير (Changed)
- يقرأ مسح شجرة البنية الآن جميع سمات التخطيط والجداول في تمريرة واحدة على قواميس سمات كل عنصر بدلاً من تمريرة واحدة لكل سمة
Version 1.79.1
تمت الإضافة (Added)
- تم نقل نموذج
AnnotationsLabإلى Lazarus و C++Builder، لينضم إلى نموذج وحدة تحكم Delphi الحالي
تم الإصلاح (Fixed)
- يمكن أن يثير
TPdf.CreateAnnotationرسالة “لا يمكن تعيين نقاط المرفقات” للتعليقات التوضيحية للعلامات التي تستخدم النقاط الرباعية (تمييز، تسطير، يتوسطه خط، خط متعرج) لأن التعليق التوضيحي الجديد لم يكن به فتحة رباعية بعد لاستبدالها؛ وهو الآن يلحق الرباعية الأولى بدلاً من ذلك
Version 1.79.0
تمت الإضافة (Added)
- نموذج وحدة تحكم Delphi الجديد
AnnotationsLab: ينشئ تعليقات توضيحية من نوع نص، تمييز، مربع ودائرة، ويكتبها في ملف PDF، ثم يعيد تحميل الملف ويسرد قائمة التعليقات التوضيحية للصفحة
Version 1.78.0
تمت الإضافة (Added)
TPdf.MeasureTextوTPdf.MeasureTextWidthالجديدان: قياس العرض والارتفاع المعروضين لسلسلة نصية لخط وحجم معينين (وحدات مستخدم PDF، 1 وحدة = 1/72 بوصة) دون إضافة محتوى إلى صفحة، مما يجعل منطق التخطيط والتفاف الكلمات ممكناً فوقAddText؛ متوفر بواسطة وحدةFPdfMeasureالمستقلة كمساعد فئةTPdf.WrapTextالجديد: التفاف الكلمات الجشع المبني علىMeasureTextWidthوالذي يقسم النص عند المسافات ويحزم الكلمات في أسطر لا يتجاوز عرضها عرضاً معيناً (وحدات مستخدم PDF)؛ تحصل الكلمة المفردة الطويلة جداً على سطر خاص بها (لا يوجد كسر داخل الكلمة)، ويعيد الأسطر الملتفة كمصفوفة
Version 1.77.0
تمت الإضافة (Added)
- اكتسب
ValidatePdfAثلاث قيم جديدةTPdfAValidationIssueتغطي البنود التي تم تصنيفها سابقاً على أنها “لا” أو “سلوك القارئ” من خلال تدقيق الفجوة السابق (أرقام ترتيبية ملحقة، القيم الموجودة دون تغيير):pvaiPdfiumNotDefGlyph(PDF/A-2 6.2.11.8 — حرف يحل إلى Unicode 0 دون خطأ في التعيين، وهو عَرَض وقت التشغيل لمرجع صورة رمزية.notdef؛ تم اكتشافه عبر طبقة نموذج كائن Pdfium)، وpvaiWordBreakMissing(المستوى أ 6.8.3.2 — سلسلة عرض دفق المحتوى أطول من 20 حرفاً بدون مسافة، وهو انتهاك محتمل للكلمات المدمجة؛ استدلال تقريبي يتجنب الإيجابيات الخاطئة لـ CJK)، وpvaiLinkActionMissingTarget(6.6.3 — إجراء GoToR/URI/SubmitForm يفتقد مفتاح هدف العرض الخاص به حتى لا يتمكن القارئ من تقديمه)
Version 1.76.0
إضافة (Added)
- حصلت
ValidatePdfAعلى ثلاث قيم جديدة من نوعTPdfAValidationIssue(أُلحقت بها الأرقام الترتيبية، وظلت القيم الحالية دون تغيير):pvaiNameNotValidUtf8(PDF/A-2/3 6.1.8 — رمز/BaseFontأو/FontNameيحتوي على بايتات ≥ 0x80 لا تشكل UTF-8 صالحًا)، وpvaiInlineImageLzwForbidden(PDF/A-2/3 6.1.10 — صورة مضمنة في مجرى محتوى الصفحة تستخدم مرشح LZW أو Crypt)، وpvaiTrueTypeDifferencesForbidden(6.3.7 Cor.2 — خط TrueType غير رمزي يحتوي قاموس التشفير (Encoding) الخاص به على/Differences)
Version 1.75.0
إضافة (Added)
- اكتسب
ValidatePdfAثلاث قيمTPdfAValidationIssueجديدة (تم إلحاق الترتيب، ولم تتغير القيم الحالية):pvaiIntegerImplementationLimit(PDF/A-2/3 6.1.13 — رمز رقمي يتجاوز حد العدد الصحيح ذي الإشارة 32 بت 2,147,483,647)،pvaiBlendModeNotWhitelisted(PDF/A-2/3 6.2.10 — قيمة/BMخارج مجموعة وضع المزج القياسية لـ ISO 32000-1 §11.3.5؛ وتُكملpvaiTransparentColorSpaceالخاصة بـ PDF/A-1 والتي تسمح فقط بـ Normal/Compatible)، وpvaiHexStringOddDigits(6.1.6 — سلسلة سداسية عشرية<...>مع عدد فردي من الأرقام السداسية العشرية)
Version 1.74.0
إضافة (Added)
- اكتسب
ValidatePdfAثلاث قيمTPdfAValidationIssueجديدة (تم إلحاق الترتيب، ولم تتغير القيم الحالية):pvaiPermissionsViolation(6.1.12 — قاموس/Permsيحمل/DigestLocation، أو/DigestMethod، أو/DigestValueإلى جانب/DocMDP)،pvaiTransActionForbidden(PDF/A-2 6.5.1 — إجراء الانتقال Trans، والذي يتم اكتشافه عبر نمط قاموس الإجراء/S /Transلتجنب المطابقة الخاطئة لـ/Transparency)، وpvaiPdfiumObjectTransparency(PDF/A-1 6.4 — كائن صفحة يحمل شفافية حقيقية وفقًا لـFPDFPageObj_HasTransparency، مما يوسع طبقة نموذج كائن Pdfium المُقدمة في v1.73.0 لالتقاط تأثيرات وضع المزج/القناع الناعم التي يمكن أن يفوتها مسح الأسماء على مستوى البايت)
Version 1.73.0
إضافة (Added)
- يضع
TPdf.ValidatePdfAالآن طبقة مسح لنموذج كائن Pdfium فوق فاحص مستوى البايت: حيث يمر على كائنات النص في كل صفحة عبرFPDFPage_GetObject→FPDFTextObj_GetFont→FPDFFont_GetIsEmbeddedويبلغ عن الخط المصيّر غير المضمن كـpvaiPdfiumFontNotEmbedded(ISO 19005 6.3.4)، ويحمل كل صفحة نصية لمسحFPDFText_HasUnicodeMapErrorويبلغ عن تعيين Unicode المكسور كـpvaiPdfiumUnicodeMapError(6.3.8). هذه فحوصات لا يمكن لفاحص مستوى البايت القيام بها — فهو يرى فقط رموز الأسماء، وليس مقابض الخطوط المحلولة أو حالة التعيين لكل حرف — ويتم دمجها في نتيجة مستوى البايت. تظل دالةValidatePdfAComplianceالمستقلة على مستوى البايت دون تغيير
Version 1.72.0
إضافة (Added)
- اكتسب
ValidatePdfAخمس قيمTPdfAValidationIssueجديدة (تم إلحاق الترتيب، ولم تتغير القيم الحالية):pvaiNeedsRenderingPresent(PDF/A-2 6.4.2 — يجب ألا يحمل الكتالوج/NeedsRendering)،pvaiDestOutputProfileRef(PDF/A-3 6.2.3 — يجب ألا يحمل OutputIntent/DestOutputProfileRef)،pvaiEmbeddedFileMissingUF(PDF/A-3 6.8 — يجب أن تحمل مواصفة الملف التي تحتوي على/EFأيضًا/UF)،pvaiXmpPacketBytesAttr(6.7.5 — يجب ألا تحمل ترويسة حزمة XMP السمة المهملةbytes=أوencoding=)، وpvaiAnnotationToggleNoView(PDF/A-2 6.3.2 — بت التعليق التوضيحي/Fلـ ToggleNoView، القيمة 512، محظور)
Version 1.71.0
تغيير (Changed)
- يُطلق
ValidatePdfUaالآنpvuaiOrderedListMissingListNumbering(ISO 14289-1 7.6): يحلل متصفح شجرة البنية سمة التخطيطListNumberingعلى كل عنصرLعبر واجهة برمجة تطبيقات سمات Pdfium ويضع علامة على أي قيمة خارج مجموعة ISO 32000-1 Table 347 (Decimal،UpperRoman،LowerRoman،UpperAlpha،LowerAlpha،None،Circle،Disc،Square). لا يتم وضع علامة على السمة المفقودة، حيث قد تكون القائمة غير مرتبة؛ وهذا يغلق آخر فجوة متبقية في ISO 14289-1 تم تسجيلها في نهاية الجولة 5
Version 1.70.0
إضافة (Added)
- اكتسب
ValidatePdfUaأربع قيمTPdfUaValidationIssueجديدة (تم إلحاق الترتيب، ولم تتغير القيم الحالية):pvuaiSubsetMissingCidSet(ISO 14289-1 7.21.4.2 — يجب أن تعلن مجموعة فرعية CIDFontDescriptorعن/CIDSet)،pvuaiToUnicodeForbiddenValue(7.21.7 — يجب ألا تقوم ToUnicode CMap بتعيين أي رمز إلىU+FEFFأوU+FFFE؛ يتم فحص التدفقات غير المضغوطة بحثًا عن نماذج الإخراج<FEFF>/<FFFE>)،pvuaiLangInvalidFormat(7.2 — يجب أن يكون/Langعلامة RFC 1766 / BCP 47 صالحة؛ تقبل القواعد النحوية المتساهلةen،en-US،zh-Hans،es-419وتضع علامة على القيم غير المتوافقة بوضوح)، وpvuaiOrderedListMissingListNumbering(7.6 — تم الاحتفاظ بها لاكتمال واجهة برمجة التطبيقات؛ لم يتم إطلاقها بعد بواسطة المدقق لأن التمييز الموثوق بين القوائم المرتبة وغير المرتبة يحتاج إلى قيمة سمةListNumbering، والتي لا يعرضها متصفح شجرة البنية)
Version 1.69.0
إضافة (Added)
- اكتسب
ValidatePdfUaقيمتينTPdfUaValidationIssueجديدتين (تم إلحاق الترتيب، ولم تتغير القيم الحالية):pvuaiWidgetOutsideForm(ISO 14289-1 7.18.4 — يجب أن يكون عنصر بنية Widget متداخلاً داخل عنصرForm؛ يتحقق متصفح شجرة البنية الآن من نوع الوالد المباشر لكل Widget) وpvuaiSubsetMissingCharSet(7.21.4.2 — يجب أن تعلن مجموعة فرعية من النوع 1FontDescriptorعن/CharSet، والتي يتم تحديدها بواسطة بادئة اسم المجموعة الفرعية+المكونة من ستة أحرف على/FontName)
Version 1.68.0
إضافة (Added)
- اكتسب
ValidatePdfUaقيمتينTPdfUaValidationIssueجديدتين (تم إلحاق الترتيب، ولم تتغير القيم الحالية):pvuaiUriActionIsMap(ISO 14289-1 7.18.5 — يجب ألا يحمل قاموس إجراءات URI/IsMapبقيمةtrue، لأنه يعطل هدف الارتباط القابل للوصول) وpvuaiHeadingSequenceViolation(7.4.2 — يجب أن تبدأ العناوين المرقمة بـH1ويجب ألا يتخطى التسلسل التنازلي مستوى متداخل، على سبيل المثالH1→H3يعد انتهاكًا). فحص العناوين هو أول قاعدة PDF/UA على مستوى شجرة البنية في المدقق: يقومValidatePdfUaStructureElementsالآن بتصفح قائمة العناصر المكتوبة ويتحقق من تسلسلH1…H6(وH7+وفقًا لـ 7.4.3) بترتيب المستند
Version 1.67.0
إضافة (Added)
- اكتسب
ValidatePdfUaخمس قيمTPdfUaValidationIssueجديدة (تم إلحاق الترتيب، ولم تتغير القيم الحالية):pvuaiLinkMissingContents(ISO 14289-1 7.18.5 — يجب أن يحمل التعليق التوضيحي Link وصفًا بديلاً عبر/Contents)،pvuaiAnnotationMissingContents(7.18.1 — يجب أن يحتوي أي تعليق توضيحي غير معفى بدون/Contentsعلى وصف بديل؛ يتم استثناء Popup و Widget)،pvuaiEmbeddedFileMissingName(7.11 — يجب أن يحتوي قاموس مواصفات الملف على/Fو/UF)،pvuaiMediaClipMissingAlt(7.18.6.2 — يجب أن يحتوي قاموس بيانات مقطع الوسائط على/CTو/Alt)، وpvuaiCidFontMissingCidToGidMap(7.21.3.2 — يجب أن يحتوي CIDFont المضمن من النوع 2 على/CIDToGIDMap)
Version 1.66.0
إضافة (Added)
- اكتسب
ValidatePdfUaخمس قيمTPdfUaValidationIssueجديدة (تم إلحاق الترتيب، ولم تتغير القيم الحالية):pvuaiRoleMapMissing(ISO 14289-1 7.1 — يجب أن يحمل المستند الموسوم بأنواع بنية غير قياسية/RoleMap)،pvuaiOptionalContentAsKey(7.10 — يجب ألا يحمل قاموس تكوين المحتوى الاختياري مفتاح الحالة التلقائية/AS)،pvuaiXfaPresent(7.15 — يتم وضع علامة على وجود AcroForm/XFAلأن XFA الديناميكي محظور)،pvuaiTrapNetAnnotation(7.18.2 — التعليقات التوضيحية/TrapNetمحظورة)، وpvuaiReferenceXObject(7.20 — كائنات Reference XObjects، التي تعتمد على علامة/Ref، محظورة)
إصلاح (Fixed)
- لم يعد
ValidatePdfUaيعطي نتائج إيجابية خاطئة لـpvuaiEncryptionPresentعلى كل ملف مشفر: يسمح PDF/UA بالتشفير طالما أن مفتاح/Pفي قاموس التشفير يحتوي على الموضع البت 10 (القيمة 1024) مضبوطًا، مما يمنح وصول التكنولوجيا المساعدة (7.16). يتم الآن الإبلاغ عن الانتهاك الدقيق عبرpvuaiEncryptionPBitMissingالجديد؛ تم الاحتفاظ بـpvuaiEncryptionPresentفي التعداد من أجل توافق واجهة برمجة التطبيقات ولكنه لم يعد يُطلق بواسطة المدقق على مستوى البايت
Version 1.65.0
إضافة (Added)
- اكتسب
ValidatePdfAخمس قيمTPdfAValidationIssueجديدة (تم إلحاق الترتيب، ولم تتغير القيم الحالية):pvaiCidFontMissingCidToGidMap(ISO 19005-1 6.3.3.2 Cor.2 — يجب أن يحمل CIDFont المضمن من النوع 2/CIDToGIDMap)،pvaiSubsetMissingCharSet(6.3.5 — يجب أن يحملFontDescriptorلمجموعة فرعية من النوع 1/CharSet)،pvaiSubsetMissingCidSet(6.3.5 — يجب أن يحملFontDescriptorلمجموعة فرعية CID/CIDSet)،pvaiWidgetActionForbidden(6.6.1 — يجب ألا يحمل التعليق التوضيحي Widget/Aأو/AA)، وpvaiOptionalContentAsKey(ISO 19005-2 6.9 — يجب ألا يحمل قاموس تكوين المحتوى الاختياري مفتاح الحالة التلقائية/AS، ذو صلة حديثًا لأن PDF/A-2 يسمح بالمحتوى الاختياري)
Version 1.64.0
إضافة (Added)
- اكتسب
ValidatePdfAثماني قيمTPdfAValidationIssueجديدة (تم إلحاق الترتيب، ولم تتغير القيم الحالية):pvaiHeaderBinaryMarkerMissing(ISO 19005-1 6.1.2 — يجب أن يُتبع العنوان%PDF-x.yبتعليق%مع أربعة بايتات على الأقل أكبر من 127)،pvaiExternalStreamRef(6.1.7 — يجب ألا يحمل قاموس التدفق/F،/FFilterأو/FDecodeParms)،pvaiOutputIntentScheme(6.2.2 — يجب أن يكون OutputIntent/Sهو/GTS_PDFA1)،pvaiInfoXmpDateMismatch(6.7.3 — يجب أن يظهر أيضًا InfoCreationDate/ModDateكـxmp:CreateDate/xmp:ModifyDate)،pvaiMarkInfoMissing(6.8.2.2 — يتطلب المستوى A/MarkInfoمع/Marked true)،pvaiAnnotationApDictViolation(6.5.3 Cor.2 — يجب أن يحتوي قاموس/APللتعليق التوضيحي على/Nفقط)،pvaiEmbeddedFileMissingAFRelationship(ISO 19005-3 Annex E.2 — يجب أن تحمل كل مواصفة ملف مرتبطة/AFRelationship)، وpvaiJpeg2000Violation(ISO 19005-2 6.2.8.3 — يجب أن تعلن صورة JPEG2000 عن مكونات 1 أو 3 أو 4)
إصلاح (Fixed)
- لم يعد
ValidatePdfAيعطي نتائج إيجابية خاطئة لـpvaiAnnotationFlagsViolationفي المستندات التي تستخدم اسم مورد خط بحرف واحد مثل/Font << /F 5 0 R >>؛ يعتمد فحص علامة/Fالآن على سياق التعليق التوضيحي (/Subtypeلنوع التعليق التوضيحي)، بما يتطابق مع السلوك الموثق (6.5.3) - يُبلغ
ValidatePdfAالآن عن متطلبات الملفات المرتبطة بـ PDF/A-3 لكل ملف: يتم وضع علامة على المستند فقط عندما يفتقر/Type /Filespecالمضمن الذي يشير إلى تدفق مضمن عبر/EFإلى/AFRelationship، بدلاً من فحص المستند بالكامل السابق أي-أو-لا-شيء (ISO 19005-3 Annex E.2) - تمت إضافة الإجراء
/SetStateالمهمل إلى مجموعة الإجراءات المحظورة إلى جانب/SetOCGState، بحيث يتم التقاط اسم إجراء PDF Reference مباشرة (6.6.1)
Version 1.63.0
إضافات (Added)
- تمت إضافة
TPdf.MeasureTextوTPdf.MeasureTextWidth: تقيسان عرض وارتفاع نص معيّن مع خط وحجم محددين دون إضافة محتوى إلى الصفحة (بوحدة مستخدم PDF، 1 وحدة = 1/72 بوصة)، مما يتيح حسابات التخطيط والتغليف التلقائي فوقAddText; يوفره الوحدة المستقلةFPdfMeasureك class helper
تغييرات (Changed)
- تم تحسين
Demo\Delphi\MergePDFوDemo\CBuilder\MergePDFوDemo\Lazarus\MergePDFلجميع بيئات IDEs الثلاث: تحديد نطاق صفحات لكل ملف، مسار إخراج اختياري، إزالة التكرار، سجل التشغيل، زر إلغاء وملخص الدمج; تُستورد الإشارات المرجعية والبيانات الوصفية من المصدر الأول - تتضمن عروض
CreatePDFلجميع بيئات IDEs الثلاث الآن خيار «نص أوروبي» لكتابة نص منقوط بالتشكيل بالتشيكية والفرنسية والألمانية والإسبانية والبرتغالية والبولندية والتركية، للتحقق من اختيار الخط ومعالجة Unicode (تم دمج مثالEuropeanTextالسابق) - تم حذف مثالي
ExtractTextPagesوEuropeanText: ميزة استخراج النص صفحةً بصفحة منExtractTextPagesباتتت مغطاة بخياري نطاق الصفحات والفاصل فيExtractText; العرض متعدد اللغات لـEuropeanTextأدمج فيCreatePDF
Version 1.62.2
إصلاحات (Fixed)
- أُعيد توليد ترويسات C++Builder (
.hpp) لكل إصدار ومنصة من RAD Studio (Win32/Win64/Win64x)؛ فقد انحرفت عن مصادر Pascal، وخلّفت توقيعات دوال قديمة ووحدات مفقودة وصلت إلى مستخدمي C++Builder عبر توزيع المصدر
Version 1.62.1
إصلاحات (Fixed)
- أُعيدت إمكانية ترجمة المصدر على RAD Studio 12 Athens والإصدارات الأقدم: كان تعيين
TArray<Byte>في مسار التحقق من PDF/UA يستخدم تحويل مصفوفة ضمني خاصًا بـ Delphi 13، وهو ما فشل في الترجمة على IDE أقدم
Version 1.62.0
إضافات (Added)
TPdf.RenderPageThumbnailيعرض أي صفحة بحسب الفهرس إلى صورة نقطية ملائمة لنسبة الأبعاد من دون تغيير الصفحة الحالية للمستند أو الصفحة المحملة أو إطلاقOnPageChange
إصلاحات (Fixed)
TPdfThumbnailViewلم يعد يقودPageNumberالخاص بالمستند المضيف أثناء الرسم؛ فكانت كل إعادة رسم سابقًا تعيد تحميل الصفحات وتطلقOnPageChangeوتتخلص من صفحة النص، وهو ما قد يربكTPdfViewالمرتبط ويؤدي إلى حلقات إعادة رسم. الآن تُعرض الصور المصغرة عبرRenderPageThumbnailمن دون هذه الآثار الجانبية- يعاين التحقق من توافق PDF/X الآن المستندات ذات تدفقات المراجع المتقاطعة (PDF 1.6، وهو النمط الشائع في PDF/X-4) والكائنات المخزنة داخل تدفقات الكائنات المضغوطة، بدلًا من اعتبار هذه الملفات كلها غير متوافقة؛ ويُقرأ الوسم
GTS_PDFXVersionمن XMP بصيغة العنصر وبصيغة سمة RDF معًا - يعرض التحقق من PDF/R الآن
pvriInfoXmpMismatchعندما يختلف Info dictionary و XMP على Producer أو Creator؛ وكانت المشكلة معلنة سابقًا لكنها لم تكن تُثار أبدًا - تُتبع مؤقتات تعبئة النماذج لكل طلب، لذا يحتفظ المستند الذي يشغل عدة مؤقتات في الوقت نفسه، مثل interval JavaScript إلى جانب وميض مؤشر الحقل، بها كلها بدل فقدان كل المؤقتات ما عدا الأحدث
- أصبح رسم
TPdfViewوطرائقه العامةRenderPage/RenderTileيمسكان قفل التصيير الخاص بالمستند، فيتسلسل ذلك مع التصيير في خيط العمل لنفسTPdf(PDFium ليس آمنًا مع تعدد الخيوط) - يُرمَّز النص غير ASCII المكتوب في بيانات PDF/X وPDF/R وPDF/VT الوصفية (أسماء شرط OutputIntent وCreator وProducer) الآن كسلسلة UTF-16BE وفق ISO 32000-1 §7.9.2.2 بدلًا من UTF-8 الخام، وهو ما كان القارئ المتوافق سيقرأه بشكل خاطئ
- تقرأ مساعدات التوافق الآن تدفقات البيانات الوصفية المضمنة التي تكون
/Lengthفيها مرجعًا غير مباشر بشكل صحيح، وتحمّل البايتات المصدرية باستخدامReadBufferبحيث يفشل القراءة القصيرة بشكل سليم، وترفض إزاحةstartxrefالسالبة بدلًا من المخاطرة بقراءة خارج النطاق
Version 1.61.0
تغييرات (Changed)
- تم تصحيح تعاريف FFI/ABI، وقد يتطلب ذلك إعادة ترجمة الشيفرة التي نفّذت النداءات الراجعة المتأثرة: فأصبح نداء
FFI_OpenFileالخاص بتعبئة النماذج يحمل الآنcdecl(اتفاقية مكدس Win32)، وأصبح معاملvalueفيFPDFAnnot_SetStringValueوFPDFAttachment_SetStringValueهوFPDF_WIDESTRING(UTF-16LE) ليتطابق مع ترويسات PDFium - تأخذ نداءات التحميل التدريجي
FX_FILEAVAIL.IsDataAvailوFX_DOWNLOADHINTS.AddSegmentالآن إزاحات من نوعsize_t، ويصبحsize_tبعرض المؤشر على Free Pascal / Lazarus Win64 بعد أن كان يُقص إلى 32 بت، مما يصلح استدعاءات API الخاصة بتوافر البيانات وoutsize_tعلى FPC Win64
إصلاحات (Fixed)
- سلامة الذاكرة: حدوث use-after-free لمؤقت تعبئة النماذج عند تدمير
TPdfمع مؤشر AcroForm نشط؛ وحدوثFPDF_CloseDocumentمزدوج في مسار الخطأ الخاص بـImportNPagesToOne؛ وهروب استثناءات Pascal من نداءاتFPDF_FILEWRITE/FPDF_FILEACCESSعبر حد C أثناء الحفظ وإدراج JPEG؛ وفائض عددي صحيح في استخراج النص عند القراءة من فهرس بداية إلى نهاية الصفحة - يسلّم
TPdfFuture<T>الآن نداء نتيجةه بصورة موثوقة؛ فقد كانت الاستجابة سابقًا تُهمل غالبًا وقد تلامس خيطًا محررًا لأن العامل كان يحرر نفسه قبل تنفيذ الاستجابة المصفوفة - تكتب مخرجات PDF/A وPDF/X وPDF/E وPDF/R وPDF/VT وPDF/UA الآن إدخالات مرجع متقاطع بطول 20 بايت بالضبط كما يتطلب ISO 32000-1 §7.5.4
- لم تعد عملية إدراج علامات المعايير تدمر القاموس عندما تكون القيمة المحذوفة، مثل
/Trapped، هي آخر إدخال، وهو ما كان يبتلع>>الختامي ويولد كائنًا معطوبًا - تعلن تدفقات ICC الخاصة بـ OutputIntent الآن عن عدد المكونات
/Nالمطلوب في PDF/X وPDF/VT (وهو موجود مسبقًا في PDF/A)؛ كما تُفك تشفير المستندات المصدرية المشفرة قبل إدراج علامات PDF/X وPDF/E وPDF/R وPDF/VT وPDF/UA، فيكون الناتج صالحًا بدلًا من أن يُفسد بصمت - يُصدر BOM الخاص بـ xpacket بصيغة UTF-8 في XMP المتولد كبايتات دقيقة، مما يصلح التلف على تثبيتات Delphi التي ليست صفحة ANSI فيها Latin-1؛ كما تحتفظ ترويسات التحديث التزايدي الآن بمرجع
/Infoالخاص بالمستند - لا يعود
SaveAsمع الضغط يقتطع التدفقات التي تكون/Lengthفيها مرجعًا غير مباشر، كما تستخدم جداول المراجع المتقاطعة المعاد بناؤها الآن إدخالات بطول 20 بايت وأرقام توليد حقيقية وتتخلص من المؤشر/Prevالقديم - تقرأ عملية التحقق من التوافق الآن علامات إصدار XMP بصيغة السمة لـ PDF/E وPDF/X بشكل صحيح، بحيث تُعرَّف ملفات PDF/X-4 المعبأة كسمات، وتطلب المعرف الدقيق
PDF/E-1، وتقرأ تدفقات البيانات الوصفية ذات/Lengthغير المباشر على نحو سليم، ولم تعد تطابق بالخطأ المفتاح/IDأو/StructTreeRootلعنصر بنيوي عند فحص trailer الخاص بـ PDF/UA؛ كما أن إزاحةstartxrefالمشوهة لم تعد تثير خطأ نطاق TPdfThumbnailViewأصبحت الصفحة الأخيرة الآن قابلة للوصول عبر شريط التمرير، وتُستعاد الصفحة الحالية للمستند المضيف بعد رسم الصور المصغرة، كما يُرسل handling الخاص بـ mouse-leave القياسي مرة أخرى- لم تعد خرائط البت الرمادية للصفحات والصور تُعرض بجدول ألوان خاطئ؛ ولم يعد
TPdfViewيبقى مع مرجع معلق عندما يُحررTPdfالخاص به أولًا - تقارير preflight: يُحفظ HTML الآن كـ UTF-8 ليتطابق مع charset المعلن، كما ينتج هروب سلاسل JSON مقاطع
\uصحيحة للأحرف غير ASCII على Free Pascal - بنيات trial: يظهر الآن مربع حوار تذكير trial بدلًا من كتمه قبل أن يُعرض
- يرفض
TPdfStreamAdapterالآن التدفقات الأكبر من 4 GiB بخطأ واضح بدلًا من اقتطاع الطول المرسل إلى PDFium بصمت
Version 1.60.1
تغييرات (Changed)
- تعمل عروض AccessibilityReader في Delphi وLazarus وC++Builder الآن على القراءة بصوت عالٍ عبر
TPdfReadingSession؛ إذ تُجمَّع كل صفحة في كتلة منطوقة واحدة بواسطةBuildSpokenTextFromWords، وتغذي مواقع كلمات SAPI الدالةFeedSpokenPosition، وتُقدم الجلسة الصفحات وتقود مؤشر الكلمات في العرض، بدل التنسيق اليدوي الذي كان موجودًا في كل عرض من قبل - أصبح تتبع الكاريوكي على مستوى الكلمة في العروض يعمل أيضًا عندما يكون NVDA هو محرك الكلام؛ إذ تضبط
EstimatePacingإيقاع مؤشر القراءة بحسب زمن الكلام المنقضي، بينما كان NVDA يقرأ بصوت عالٍ من دون أي تتبع للكلمات سابقًا - يعمل الإيقاف المؤقت والاستئناف في العروض الآن مع NVDA أيضًا؛ إذ تعيد
ResumeRestartsChunkنطق الصفحة الحالية من بدايتها عند Resume، بينما يحتفظ SAPI بالإيقاف والاستئناف الأصليين في المكان نفسه
Version 1.60.0
إضافات (Added)
- تصيير حي لضعف البصر في
TPdfView؛ إذ تعيد خيارات التصيير الجديدةreInvertوreNightDuotoneتلوين كل بلاطة صفحة مصيّرة، سواء بعكس كامل للألوان أو بلوحة ألوان ليلية ثنائية، قبل رسم طبقات البحث والتحديد والقراءة ومؤشر الكلمات، مما ينقل تحويلات ألوان خرائط البت الحالية إلى العارض التفاعلي لكل من تخطيطات الصفحة الواحدة والصفحتين المتقابلتين؛ ويؤدي تبديل الخيارات إلى إعادة الرسم فورًا - تضبط
NightDuotoneInkوNightDuotonePaperاللوحة الليلية، مع افتراضي نص كهرماني على صفحة سوداء؛ وتفوزreInvertعندما تكون كلتا الخيارتين محددتين
Version 1.59.0
إضافات (Added)
TPdfReadingSession؛ مكوّن تنسيق للقراءة بصوت عالٍ محايد تجاه محرك الكلام. يحتفظ بمؤشر الكتلة ومؤشر الكلمة وحالة التشغيل (Play/PlayFrom/Pause/Resume/Stop)، ويتقدم عبر كتلTPdfSpokenTextالمحمّلة عندما يبلغ المضيف عن خمول المحرك عبرTick، ويحوّل إزاحات النص المنطوق إلى أحرف الصفحة، ويقود تلقائيًا مؤشر الكلمات فيTPdfViewالمرفق؛ يربط المضيف أي محرك كلام عبرOnSpeakوأحداث طلب الإلغاء / الإيقاف المؤقت / الاستئناف، لذلك لا تربط المكتبة أي API للكلام بنفسها- يستهلك
FeedSpokenPositionمواقع كلمات المحرك، مثلStatus.InputWordPositionفي SAPI؛ وتضبطEstimatePacingمعEstimatedWordsPerMinuteإيقاع المحركات من دون إشارة موضع؛ وتعيدResumeRestartsChunkنطق الكتلة الحالية للمحركات التي لا تملك إيقافًا مؤقتًا أصليًا - لا تطلق
OnChunkChangeوOnWordChangeوOnFinishedإلا عند حدوث تغييرات حقيقية، كما تنفصل العروض المرفقة المحررة تلقائيًا، لذلك يبقى كود المضيف من دون وميض وآمنًا من التعطل
Version 1.58.0
إضافات (Added)
EstimateSpokenWordIndexيقدّر الكلمة التي ينطقها محرك الكلام من الزمن المنقضي ومعدل الكلمات في الدقيقة، مانحًا الكلمات الأطول وقتًا أكبر نسبيًا، بحيث تستطيع المحركات التي لا تبلغ عن موضع الكلمة، مثل NVDA controller client، أن تقود مؤشر القراءة على مستوى الكلمة أيضًا؛ يزوّد المستدعي الزمن المنقضي، لذا تبقى الدالة من دون اعتماد على الساعة وقابلة للاختبار الوحدوي
Version 1.57.0
إضافات (Added)
- تجميع النص المنطوق مع تعيين ثنائي المجال لتتبع القراءة بصوت عالٍ: ينشئ
BuildSpokenTextFromWordsوSpokenTextAppendالسلسلة التي تُسلم إلى محرك text-to-speech من صناديق كلمات الصفحة مع تسجيل جدول امتدادات، ويحوّلSpokenToPageCharإزاحة منطوقة يبلغ عنها المحرك، مثلStatus.InputWordPositionفي SAPI، إلى فهرس أحرف الصفحة، بحيث يبقى تتبع التظليل على مستوى الكلمة صحيحًا عندما لا يكون النص المنطوق هو نص الصفحة بالكامل، مثل المناطق المتجاوزة أو القراءة على مستوى الوحدة أو تجاوزات النطق - تحمل الأنواع
TPdfSpokenTextوTPdfSpokenSpanالسلسلة المنطوقة إضافة إلى نطاقات الصفحات المصدر التي بُنيت منها؛ وتُحل الإزاحات على الفواصل المدرجة إلى الكلمة المعينة التالية، بينما تُبلّغ الإزاحات بعد المقاطع المعينة بعدم وجود تطابق
Version 1.56.9
إضافات (Added)
Demo\Delphi\PreflightReportيضيف معاينة خطة عمل تلخص المعايير غير المجتازة والأولويات والإجراءات التالية ورموز المشكلات والتوصيات في قائمة مرجعية للإصلاحاتDemo\Delphi\PreflightReportCliيقبلplan/actionplanكصيغة إخراج للتشغيل المنفرد والتشغيل المجمّع، ويكتب نفس قائمة remediation checklist إلى ملف نصي
تغيير (Changed)
- تعرض الآن كلا عرضي Demo PreflightReport في Delphi أعداد حالات pass / action / review بجانب إجمالي المعايير والمشكلات
Version 1.56.8
تغيير (Changed)
ViewerInteractionLabأصبحت الآن تتضمن عناصر للتحرك بين الصفحات، وعناصر للقرصان اليدوي، وتسجيل الإحداثيات بقاعدة النقر لــDeviceToPage/PageToDevice، وسجل تفاعلات أوضح للتحقق من الاختيار والبحث والدوران والملاحة- صفحات
ViewerInteractionLabفي ملفات readme الآن توثق سير العمل التفاعلي المضاف ضمن مجموعة readme الديمو المحلية
Version 1.56.7
إضافات (Added)
AccessibilityWorkbenchCliيربط كل finding مرصود بمعيار WCAG 2.1 Success Criteria وبنطاق بند ISO 14289-1 (PDF/UA-1)، ويعرض قسم coverage في التقارير للمعاييرAccessibilityWorkbenchCliيحسب accessibility score موثّقًا من 0 إلى 100 وفق rubric للعقوبات منشور، ويعرض نطاق excellent / good / needs work / poor، مع عرض منفصل لكل ملف ومتوسط دفعيAccessibilityWorkbenchCliيقبلfailscore=Nلإيقاف التشغيل برمز خروج 2 إذا انخفض أي ملف تحت NAccessibilityWorkbenchCliيكتب سجل SARIF 2.1.0 عندما ينتهي اسم ملخّص الدفعة بـ.sarif، مع قاعدة واحدة لكل نوع finding وتغطية WCAG 2.1 و PDF/UA لالتقاطات CI و code-scanningAccessibilityWorkbenchCliيضيف أمرversionلعرض نسخة PDFium Delphi Component المرتبطة
Version 1.56.6
إضافات (Added)
IntakeWorkbenchCliيحسب بصمة SHA-256 للطب الشرعي لكل ملف إدخال (ويعود إلىunavailableفي المترجمات دونSystem.Hash) ويبلّغ عنها في كل الصيغIntakeWorkbenchCliيقبلpasswords=file.txtلفتح مستندات تتطلب كلمة مرور من قائمة المرشحين، مع تسجيل فهرس المرشح المطابق دون تسجيل نص كلمة المرورIntakeWorkbenchCliيقبلcopyto=dirلتوجيه كل ملف تم تدقيقه إلى مجلد فرعي حسب مستوى الخطر، محولًا أداة التدقيق إلى مصنف استقبالIntakeWorkbenchCliيكتب سجل SARIF 2.1.0 عندما ينتهي اسم ملخص الدفعة بـ.sarif، مع قاعدة واحدة لكل علم خطر ونتيجة واحدة لكل ملف معلم بالخطر لالتقاطات CI و code-scanningIntakeWorkbenchCliيضيف أمرversionلعرض نسخة PDFium Delphi Component المرتبطة
Version 1.56.5
إضافات (Added)
IntakeWorkbenchCliيستنبط الآن إجراءات لاحقة مقترحة مثل accept و request-password و manual-review و quarantine و deduplicate، ويعرض أعداد الإجراءات في ملخصات الدفعةAccessibilityWorkbenchCliيستنبط الآن إجراءات تصحيح مقترحة مثل pass-through و remediate-tags و run-ocr و remediate-semantics و manual-review، مع أعداد إجراءات مطابقة للدفعة
تغيير (Changed)
- تعرض كل ديمو CLI المخصصة للأدوات الإجراء المقترح في مخرجات console و text و HTML و JSON و CSV بحيث يمكن لمشغلي الدفعات توجيه الملفات دون الحاجة لمعالجة بيانات الحالة أو المخاطر بعد التشغيل
Version 1.56.4
إصلاح (Fixed)
- قراءة التعليقات التوضيحية أو الإشارات المرجعية أو روابط الارتباط في حلقة لم تعد تسبب تسرب نص العناصر السابقة: الآن يتم مسح سجلات النتائج
TPdfAnnotationوTBookmarkوTLinkAnnotationعبر تهيئة تدعم الأنواع المُدارة بدل صفر الذاكرة الخام، لذلك المستندات التي تحتوي كمية كبيرة جدًا من التعليقات النصية لا تضخّم استهلاك الذاكرة طيلة عمر التطبيق - تدمير
TPdfالذي سجّل معالجOnUnsupportedFeatureيفك الآن ارتباطه من استدعاء PDFium العام على مستوى العملية، فلا يمكن لمستند لاحق محمّل عبرTPdfآخر بدون معالج خاص به أن يعيد الإرسال إلى المكون المحرر (use-after-free)
Version 1.56.3
إصلاح (Fixed)
AccessibilityWorkbenchCliلم يعد يعد الصفحات الفارغة صفحات ترتيب قراءة بالقياس الاستدلالي، لذلك تبقى حالة إمكانية الوصول في الوثائق الموسومة التي تحتوي صفحات فاصلة فارغة صحيحة؛ الصفحات دون محتوى مقروء تُبلغ عنها بشكل منفصل- لم يعد كشف رؤوس الجداول في
AccessibilityWorkbenchCliينسب خلاياTHالتابعة لجدول متداخل إلى الجدول الخارجي، كما أصبحت أسماء حقول النماذج والخطوط تُطابق بحساسية حالة الأحرف حتى لا تندمج الحقول المختلفة - جرد host في URLs عبر
IntakeWorkbenchCliالآن يزيل مقاطع userinfo و query و fragment، لذلك يُسند رابط مزيف مثل[email protected]إلى المضيف الحقيقي، وتُسهم أهدافmailto:بنطاقها بدل ألا تكون غير مرئية - تقارير Markdown في
IntakeWorkbenchCliتهرب العلامات العكسية في مسارات ومضيفين وأسماء مرفقات تحت سيطرة المهاجم، فلا يمكن تدمير تنسيق التقرير من داخل مستند
تغيير (Changed)
AccessibilityWorkbenchCliيعرض فشل فحص الخطوط وفشل فحص الحقول على عدادات منفصلة، ويعلم الخطوط غير المضمنة التي تمتلك أيضًا حالات مضمنة، ويضع علامة واضحة لنهايات القوائم الطويلة- ملخصات الدفعة في
IntakeWorkbenchCliتضيف عمود عدد تعليقات المرفقات، ويُحدّد تعداد التعليقات لكل صفحة بحد أقصى 20000 تعليق مع الإبلاغ عن الحد في كل صيغة
Version 1.56.2
إضافات (Added)
- يفحص
AccessibilityWorkbenchCliالآن تضمين الخطوط، tooltip حقول النماذج، مصدر ترتيب القراءة، مخططات المستند، بنية الجداول والقوائم، النص البديل المشبوه، وتفاصيل مراجعة أغنى لكل صفحة حتى تحدد تقارير accessibility الدفعية مزيدا من أهداف الإصلاح - يعرض
IntakeWorkbenchCliالآن حدود فحص الصفحات، إجراءات launch و remote-go-to، قوائم host URI، أعداد التعليقات التوضيحية، ميزات PDFium غير المدعومة، معرفات المستندات المكررة، وعلامات خطر موسعة للمراجعة الآلية intake
تغيير (Changed)
- يقبل
IntakeWorkbenchCliقيمةmaxpages=Nفي وضعي الملف الواحد والدُفعات لتحديد فحص الصفحات لكل مستند مع الاستمرار في إكمال تقارير metadata و attachment و script و XFA و signature و risk
Version 1.56.1
إصلاح (Fixed)
- أصبح تحميل
pdfium.dllأقدم يفتقد تصديرا أحدث يفشل الآن بشكل نظيف: يعيد مسار الفشل تعيين كل نقطة دخول API مرتبطة، لذلك تبلغ فحوصAssigned()(مثلFPDF_GetLastErrorأوFPDF_GetSecurityHandlerRevision) بأن المكتبة غير محملة بدلا من استدعاء الوحدة التي أزيل تحميلها بالفعل والتعطل بسبب انتهاك وصول - يمسح
UnloadLibraryالآن كل ارتباطات PDFium API بدلا من مساعدات V8 الاختيارية فقط، لذلك لا تبقى أي مؤشرات دوال قديمة بعد تحرير DLL
Version 1.56.0
إضافات (Added)
- مؤشر قراءة karaoke كلمة بكلمة في
TPdfView: يربطTrackReadingWordAtإزاحة حرف الكلمة الحالية في محرك تحويل النص إلى كلام، مثل SAPIStatus.InputWordPosition، بمربعات كلمات الصفحة، ويميز الكلمة التي تحتويها كطبقة مستقلة فوق كتلة القراءة، ويمررها إلى العرض، ويعيد فهرس الكلمة حتى تضيء الكلمة المنطوقة مع تقدم الصوت SetReadingWordوClearReadingWordيضبطان الكلمة المميزة أو يمسحانها مباشرة منTPdfWordBox؛ إعادة ضبط الكلمة نفسها no-op، لذلك لا يجعل التتبع كلمة بكلمة العرض يومضReadingWordColorوReadingWordFollowيتحكمان في لون مؤشر الكلمة وما إذا كان العرض يمرر الكلمة المنطوقة تلقائيا إلى العرض
Version 1.55.2
إصلاح (Fixed)
- يعطي ViewerInteractionLab الآن صفوف شريط الأدوات مساحة عمودية أكبر، لذلك لم تعد عناصر Open PDF و Create Sample والتنقل والبحث والتحديد تتداخل عند استخدام خطوط مكبرة
Version 1.55.1
إصلاح (Fixed)
- يضع ViewerInteractionLab الآن Prev و Next و Rotate في الصف الثاني من شريط الأدوات، مما يتجنب تداخل بدء التشغيل مع Open PDF و Create Sample
Version 1.55.0
إضافات (Added)
- جسر بين الكلمة والتحديد لقراءة "اقرأها وحددها": تقوم
TPdfView.SelectWordBoxوSelectWordSpanبتحديد صندوق كلمة واحد أو نطاق صناديق كلمات من الصفحة نفسها (منPageWordBoxes) عبر نطاقات الأحرف الخاصة بها، بحيث يمكن أيضًا تحديد الكلمة أو السطر الجاري قراءته ونسخه WordBoxIndexAtCharIndexيعيد ربط فهرس الحرف بصندوق الكلمة الذي يحتويه، مما يدفع إبراز كلمة بكلمة مع تقدم مؤشر القراءة في محرك TTS
Version 1.54.0
إضافات (Added)
- توفر واصلات تعبئة النماذج الصوتية التي تقرأ الحقل المركّز مباشرة من المؤشر المنطقي:
FocusedFormFieldValueوFocusedFormFieldNameوFocusedFormFieldDetailsفيTPdfوTPdfViewتُبلغ عن قيمة الحقل الحالي واسمه المقروء بشريًا، أي تلميح/TUمع الرجوع إلى/T، وكاملTPdfFormFieldInfoمن النوع والأعلام والخيارات، وهو كل ما تحتاجه واجهة صوتية للإعلان عنه عند التنقل عبر نموذج
إصلاح (Fixed)
FocusedFormFieldValueيقرأ الحقل عبرFocusedFormFieldIndexبدلًا من تركيز pdfium التفاعلي، لذلك تحصل أداة تعبئة النماذج الصوتية على القيمة الصحيحة حتى من دون مؤشر مرئي على الشاشة، بينما يبقىFocusedFormFieldTextالحالي معبّرًا عن تركيز pdfium كما هو
Version 1.53.0
إضافات (Added)
- دعم إبراز على مستوى الكلمة: تقوم
TPdf.PageWordBoxesوTPdfView.PageWordBoxesبتقسيم الصفحة إلى سجلاتTPdfWordBox، يحمل كل منها نص الكلمة ونطاق أحرفها ومستطيل إحاطة بإحداثيات الصفحة، بحيث يستطيع قارئ إمكانية الوصول إبراز كل كلمة منطوقة بالتتابع عبر تمرير المستطيل إلىSetReadingHighlight BuildWordBoxesيقسم نص الصفحة إلى سجلات TPdfWordBox تحتوي نص الكلمة ونطاقات أحرف FTextPage
Version 1.52.0
إضافات (Added)
- تطبّق مساعدات التصيير لضعف البصر
InvertPdfBitmapوGrayscalePdfBitmapوDuotonePdfBitmapتحويلات لونية موضعية على صورة نقطية معروضة بعمق 32 بت، بحيث يستطيع قارئ إمكانية الوصول عرض الصفحات بصورة معكوسة أو رمادية أو وفق مخطط ثنائي اللون مخصص، مثل خلفية داكنة مع نص فاتح، للمستخدمين ضعاف البصر - تعمل التحويلات بكسلاً ببكسل وبالسلوك نفسه في VCL وLazarus/LCL، وتبقى أبعاد الصورة كما هي
Version 1.51.0
إضافات (Added)
- وحدات قراءة على مستوى الجملة للاستماع المساند: تقوم
TPdf.ReadingUnitsوTPdf.DocumentReadingUnitsوTPdfView.ReadingUnitsبتحويل مجرى المحتوى المقروء إلى سجلاتTPdfReadingUnitمرتبة بحجم الجملة، يحمل كل منها النص المراد نطقه ونوعه الدلالي وصفحته ومستطيلات الإبراز ووسم اللغة، بحيث يستطيع تطبيق قارئ الشاشة التنقل في الصفحة أو المستند كله وحدة منطوقة تلو الأخرى NextReadingUnitOfKindيعثر على TPdfReadingUnit التالي أو السابق الذي يطابق Kind فيه TPdfContentFragmentKind المطلوبBuildReadingUnitsيحوّل أيTPdfContentFragmentsمباشرة إلى وحدات قراءة: تبقى العناوين وأوصاف الأشكال أو النصوص البديلة كاملة، بينما تُقسَّم الفقرات عند حدود الجمل، وتبقى النقاط العشرية محفوظة، ويظل مؤشر القراءة مجرد فهرس يملكه المستدعي
Version 1.50.0
إضافات (Added)
- أصبح بإمكان
ValidatePdfAالآن فحص مستندات PDF 1.5+ التي تخزّن الكتالوج أو OutputIntent أو غيرها من القواميس داخل تدفقات كائنات مضغوطة (/Type /ObjStm). تُفكّ ضغط تدفقات الكائنات وتُحلّ الكائنات التي تحملها، فتُقيَّم تلك المستندات بناءً على محتواها الفعلي بدلًا من الإبلاغ عنها بوصفها مفتقرة إلى علامات PDF/A الخاصة بها
Version 1.49.5
إصلاح (Fixed)
- لم يَعُد
ValidatePdfAيُبلّغ عن غياب وصفpdfaExtension:schemasبوصفه مشكلة. فمخطّط معرّف PDF/A (pdfaid) معروف جيدًا، فلا يشترط لا veraPDF ولا PDF/A-2/-3 وجود وصف لمخطّط امتداد خاص به، وكان وسم غيابه يُبلِّغ خطأً عن كل ملف PDF/A مطابِق من طرف ثالث. أما المستندات التي تنتجها المكتبة نفسها فلا تزال تتضمّن هذا الوصف
Version 1.49.4
إصلاح (Fixed)
- أصبح
ValidatePdfAالآن يكتشف مستوى المطابقة عندما يُكتب معرّف PDF/A كسمات XML (pdfaid:part="2") بدلًا من عناصر فرعية، فلم تَعُد المستندات ذات الصيغة السمية يُبلَّغ عنها بمستوى غير معروف. كما يُصحّح هذا سلسلةً من الآثار كان فيها مستوى غير مُكتشَف يجعل الفحوص الخاصة بكل جزء ترتدّ إلى قواعد PDF/A-1 الصارمة، فتَسِم خطأً الملفات المضمّنة والشفافية التي يسمح بها PDF/A-2 وPDF/A-3
Version 1.49.3
إصلاح (Fixed)
- أصبح
ValidatePdfAالآن يفحص مستندات PDF 1.5+ التي تكون بيانات cross-reference فيها على هيئة cross-reference stream (ملفات لا تحمل الكلمة المفتاحيةtrailer). فيُقرأ مستوى المطابقة، و/IDالخاص بالمقطورة، وسائر العلامات من قاموس cross-reference stream، فتُقيَّم تلك المستندات بناءً على محتواها الفعلي بدلًا من الإبلاغ عنها بوصفها غير مطابِقة كليًّا
Version 1.49.2
إصلاح (Fixed)
- لم يَعُد
ValidatePdfAيُبلّغ زورًا عن مشكلة خط غير مضمَّن في المستندات التي تُضمِّن كل خطوطها. فقد كانت الطريقة التجريبية السابقة تقارن عدد رموز/FontDescriptorببرامج الخطوط المضمَّنة، لكن كل خطٍّ مضمَّن يُسهم برمزَي/FontDescriptor(مرجع قاموس الخط إضافةً إلى كائن الواصف)، فكان كل ملف ذي خطوط مضمَّنة يُوسَم خطأً. أما الآن فلا يُبلِّغ الفحص إلا عن مستندٍ يُحيل إلى خطوط دون أن يُضمِّن أي برنامج خطٍّ على الإطلاق، اتساقًا مع التصحيح المقابل فيValidatePdfUa
Version 1.49.1
إصلاح (Fixed)
- أصبح إخراج PDF/A الآن يُقيَّم بوصفه مطابِقًا لـ PDF/A-1b وPDF/A-1a مع veraPDF: إذ يُصرّح الآن تدفق ملف ICC الخاص بـ OutputIntent من نوع sRGB المضمَّن (المُحال إليه عبر
/DestOutputProfile) بعدد المكوّنات المطلوب/N(وهو 3 لملف RGB المدمج)، وفق ما يفرضه ISO 19005-1 6.2.3.2. كانت المستندات التي يُنتجهاSaveAsPdfAتفشل سابقًا في التحقق الصارم لـ PDF/A-1 لأن تدفق ملف الوجهة كان يُسقِط/N؛ وتُشتقّ القيمة من ترويسة ملف ICC، فيتلقّى أيضًا ملفُ CMYK أو Gray الذي يورّده المستدعي العددَ الصحيح
Version 1.49.0
إصلاح (Fixed)
- لم يَعُد
ValidatePdfUaيُبلّغ زورًا عن غياب تعريف XMP في مستندات PDF المعلَّمة المطابِقة — إذ يُقرأ الآن معرّف PDF/UA (pdfuaid:part) وdc:titleوتواريخ XMP و/IDالخاص بالمقطورة من بايتات المستند الأصلي بدلًا من النسخة المُعاد حفظها، التي تُسقِط تدفق/Metadataالخاص بـ XMP، كما تُسقِط/IDالمقطورة في ملفات cross-reference-stream - تصحيح فحص تضمين الخطوط في
ValidatePdfUaبحيث لا يُبلَّغ بعد الآن عن مستندٍ يُضمِّن كل خطوطه بوصفه ذا خطوط غير مضمَّنة؛ فهو الآن يُشير فقط إلى مستندٍ يُحيل إلى خطوط دون أن يُضمِّن أي برنامج خطٍّ على الإطلاق - أصبح
ValidatePdfUaالآن يقبل عنصر بنيةFormulaيُورَّد نصّه البديل عبرActualTextبدلًا من إدخالAlt(ISO 14289-1 §7.7)، اتساقًا مع قاعدةFigureالقائمة
Version 1.48.0
إضافات (Added)
- تحديد نصّي برمجي على
TPdfView: تتيحSelectTextRange(عبر الصفحة ونطاق الأحرف) وSetSelection(عبر نطاقات صريحة لكل صفحة) تحديدَ النص من الشيفرة — مثلًا لقراءة مقطع وإبرازه؛ وتعيد كلتاهما الرسم وتُطلِقانOnSelectionChangeعند تغيّر التحديد. وتقرأSelectionRangesالتحديدَ الحالي كنطاقات أحرف لكل صفحة، بينما تُعيدSelectionRectanglesمستطيلاته بإحداثيات الصفحة لأغراض الإبراز المخصّص أو التمرير إلى الموضع
Version 1.47.0
إضافات (Added)
- تنقّل بين حقول النماذج لملء النماذج بالصوت، على كلٍّ من
TPdfوTPdfView:FormFieldTabOrderوFocusedFormFieldIndexوFocusFormFieldوFocusNextFormFieldوFocusPreviousFormFieldوClearFormFieldFocusوFocusedFormFieldText. تنقل هذه الأعضاء مؤشّرَ حقلٍ منطقيًّا عبر حقول widget في الصفحة وفق ترتيب tab (مع الالتفاف عند الطرفين)، فيتسنّى لقارئٍ مساعِد أن يتجوّل في النموذج، ويُعلن عن كل حقل عبرFormFieldInfo[Index].AlternateName(تلميح /TU)، ويملأه عبرFormField[Index] - حدث
TPdfView.OnFormFieldFocusChangeيُطلَق عند تحرّك مؤشّر الحقل (حاملًا فهرس الحقل الجديد، أو -1 عند المسح)
Version 1.46.0
إضافات (Added)
- تدفق محتوى للقراءة المسموعة المساعِدة: تُعيد
TPdf.ReadableContentوTPdf.ReadablePageContentوTPdf.DocumentReadableContentوTPdfView.ReadableContentقائمة مرتَّبة من العناصر الدلالية من نوعTPdfContentFragment، يحمل كل عنصر منها النص المنطوق (الحروف الفعلية، أوActualText/Alt للأشكال)، ونوع الجزء (عنوان مع مستواه، فقرة، شكل، عنصر قائمة، خلية جدول، رابط، نص عادي)، واللغة، ورقم الصفحة بادئًا من 1، إضافةً إلى مستطيل الإبراز للكتلة ومستطيلات الإبراز لكل سطر. وتُرتَّب مستندات PDF المعلَّمة خطّيًا وفق ترتيب القراءة المنطقي المستمد من شجرة البنية، بينما ترجع الصفحات غير المعلَّمة إلى ترتيب العرض حتى يتسنّى قراءة أي مستند بصوت مسموع - إبراز قراءة متزامن على
TPdfView: تُبرزSetReadingHighlightوClearReadingHighlightوالخاصية المنشورةReadingHighlightColorالكتلة التي تُقرأ حاليًا، فوق طبقتي إبراز البحث والتحديد - أنواع عامة جديدة:
TPdfContentFragmentوTPdfContentFragmentsوTPdfReadableContentوTPdfContentFragmentKindوTPdfReadingOrderSource، إضافةً إلى الدالة المساعدة الجديدةClassifyStructType
Version 1.45.0
إضافات (Added)
- أصبح
ValidatePdfUaيتنقل الآن أيضًا عبر شجرة البنية المعلَّمة النشطة ويُبلّغ عن ثلاث مخالفات محتوى ذات ثقة عالية لا يمكن اكتشافها بالمسح على مستوى البايتات: عنصرFigureلا يحمل إدخال Alt ولا ActualText (ISO 14289-1, 7.3)، وعنصرFormulaبلا سمة Alt (7.7)، وعنصرNoteيفتقر إلى معرّف فريد (7.9). وتظهر ثلاث قيم جديدة من نوعTPdfUaValidationIssueللإشارة إلى هذه الحالات:pvuaiFigureMissingAlt، وpvuaiFormulaMissingAlt، وpvuaiNoteMissingId. يُتخطى التنقل عبر الشجرة في المستندات غير المعلَّمة - أُضيفت دالة مساعدة عامة جديدة
ValidatePdfUaStructureElementsتُطبّق قواعد شجرة البنية على قائمة عناصر مسطّحة (كالتي تُعيدهاTPdf.StructureElements)، مما يتيح تشغيل هذه الفحوصات أو اختبارها وحدويًا دون الحاجة إلى تحميل مستند كامل
Version 1.44.5
إصلاح (Fixed)
- أصبح فحص تضمين الخطوط في
ValidatePdfA(pvaiFontNotEmbedded، ISO 19005-1, 6.3.4) يكتشف الآن أيضًا الخطوط البسيطة غير المضمنة التي لا تحمل/FontDescriptor، وأبرزها الخطوط الـ14 القياسية من نوع Type 1 (كـ Helvetica وTimes وCourier وغيرها) التي يشترط PDF/A تضمينها دون أي إعفاء. في السابق، كان مثل هذا الخط يمر دون أن يُلاحَظ؛ يعدّ الفحص الآن قواميس الخطوط البسيطة (/Type1،/TrueType،/MMType1) ضمن برامج الخطوط المضمنة أيضًا، على غرار إصلاح PDF/UA في 1.44.3
Version 1.44.4
إصلاح (Fixed)
- أصبح
ValidatePdfVTيرفض أشجار DPart غير الصحيحة وفق ISO 16612-2 §6.5 عندما يكون/DPartsمصفوفة مراجع مسطحة بدلًا من array of arrays المطلوبة، أو عندما يكرر leaf DPart صفحة/Startكقيمة/Endرغم أن النطاق يحتوي على صفحة واحدة فقط - أصبح
ValidatePdfVTيتحقق من أسماء/NodeNameListكقيم XML NMTOKEN بعد توسيع escape#xxفي PDF name، ولذلك يتم الإبلاغ عن أسماء مستويات الهرمية غير الصالحة عبرpvviMissingDPartRootبدلًا من قبولها كهيكل DPart قابل للاستخدام
Version 1.44.3
إصلاح (Fixed)
- أصبح فحص تضمين الخطوط في
ValidatePdfUa(pvuaiFontNotEmbedded، ISO 14289-1, 7.21.4) يكتشف الآن أيضًا الخطوط البسيطة غير المضمنة التي لا تحمل/FontDescriptor، وأبرزها الخطوط الـ14 القياسية من نوع Type 1 (كـ Helvetica وTimes وCourier وغيرها) التي لا يمنحها PDF/UA أي إعفاء من التضمين. في السابق، كان مثل هذا الخط يمر دون أن يُلاحَظ، وكان بالإمكان الإبلاغ عن مستند يستخدمه على أنه متوافق؛ يعدّ الفحص الآن قواميس الخطوط البسيطة (/Type1،/TrueType،/MMType1) ضمن برامج الخطوط المضمنة أيضًا. وينطبق ذلك عبر ValidatePdfUa
Version 1.44.2
إصلاح (Fixed)
- أصبح
ValidatePdfVTيُبقي علامةpdfvtid:GTS_PDFVTVersionالموجودة ولكن غير المعروفة كـpvcUnknownبدلًا من تخفيضها إلىpvcNone. وبذلك تبقى السلاسل غير الصالحة على مستوى الملف مثلPDF/VT-2sقابلة للتمييز عن المستندات التي لا تحمل أي علامة PDF/VT؛ إذ يتم تحديد PDF/VT-2s عبر MIME stream header في ISO 16612-2 Annex A، وليس عبر علامة XMP داخل ملف PDF - أصبح فحص
/DPartRootيتحقق بشكل أكثر صرامة من tree semantics في ISO 16612-2 §6.5: يجب أن يصف/DPartRootNodeو/NodeNameListعمق DPart الفعلي، وأن تشكل DPart parent links شجرة، وأن يكون/Startو/DPartsمتنافيين، وأن يشير/DPartفي كل صفحة إلى leaf DPart الذي يغطيها وبنفس ترتيب depth-first الخاص بـ page tree
Version 1.44.1
إصلاح (Fixed)
- أصبح
SaveAsPdfVTيكتب الآن Document Part Hierarchy دنيا وفق ISO 16612-2 §6.5 عندما لا يحتوي ملف PDF المصدر على/DPartRootقابل للاستخدام. وتربط الشجرة المُنشأة كل صفحة عبر/DPart، وتحافظ على أي هرمية صالحة موجودة، وتترك بيانات المستلم/DPM الأثرى لسير العمل المستدعي - أصبح
ValidatePdfVTالآن يتحقق من بنية DPart القابلة للاستخدام، ويقرأ قيم XMP الخاصة بـ PDF/VT من سمات RDF ومن نص العناصر، ويفرض الاقتران الدقيق بين PDF/VT وأساس PDF/X: يتطلب PDF/VT-1 أساس PDF/X-4، بينما يتطلب PDF/VT-2 أحد PDF/X-4p أو PDF/X-5g أو PDF/X-5pg - لم يعد
TPdfVTSaveOptions.Conformance = pvc2يكتب علامات PDF/VT-2 غير صالحة في ملف واحد. يقوم writer أحادي الملف بتطبيع الإخراج إلى PDF/VT-1 لأن PDF/VT-2 يتطلب دلالات مجموعة ملفات
Version 1.44.0
إضافات (Added)
- يُبلِّغ
ValidatePdfUaالآن أيضًا عن انتهاكات PDF/UA على مستوى المحتوى القابلة للتحقق بايتًا، إضافةً إلى علامات تنسيق الملف: برنامج خط غير مضمَّن (ISO 14289-1, 7.21.4)، وخط يفتقر إلى/ToUnicodeCMap في غياب ترميز خط بسيط معفى (7.21.7)، ومستند يحمل تعليقات توضيحية دون الإعلان عن ترتيب تبويب/Tabs /Sلأي صفحة (7.18.3) - ثلاث قيم جديدة من
TPdfUaValidationIssue—pvuaiFontNotEmbeddedوpvuaiFontMissingToUnicodeوpvuaiMissingTabsOrder— يكشفهاValidatePdfUaوتظهر في تقرير الفحص المسبق. وهي إرشادات تقريبية تُعدّ تلميحات للفحص المسبق لا تحققًا كاملًا وفق ISO 14289-1
Version 1.43.1
إصلاح (Fixed)
- يُطبِّق
SaveAsPdfUaالآن إدخالات الفهرس الإلزامية وفق ISO 14289-1, 7.1، وهي/ViewerPreferences/DisplayDocTitle trueو/MarkInfo/Marked true/Suspects false، حتى حين يتضمّن المستند المصدر هذه القواميس مسبقًا بقيم ناقصة أو متعارضة. في السابق، كانت العلامات تُحقَن فقط عند غياب القواميس كليًّا، مما كان يُفضي إلى ملف غير مطابق إذا احتوى المصدر مثلًا على/ViewerPreferencesدونDisplayDocTitle، أو على/MarkInfoمع/Marked false - تُحفَظ المفاتيح الموجودة مسبقًا في قاموس
/ViewerPreferencesأو/MarkInfoالمُعرَّف سابقًا، كما يُحلَّل القاموس المُمرَّر كمرجع غير مباشر قبل تطبيق المفاتيح الإلزامية
Version 1.43.0
إضافات (Added)
- أصبح
ValidatePdfAالآن يطبّق قواعد PDF/A-2 / PDF/A-3 على الملفات المضمّنة والمرتبطة وعلى نصوص المستوى Level U. ولا تزال الملفات المضمّنة مرفوضة في PDF/A-1؛ أما في PDF/A-3 فيُسَّم أي ملف مضمّن يفتقر إلى المفتاح/AFRelationshipالمطلوب (ISO 19005-3 الملحق E)، بينما تُسمَح مرفقات PDF/A-2 (دون التحقق من مطابقتها الخاصة على نحوٍ تكراري). وتُبلِّغ مشكلة جديدة باسمpvaiUnicodeMappingMissingعن مستند PDF/A-2u أو PDF/A-3u لا تحمل خطوطه تعيين/ToUnicode(ISO 19005-2 6.2.11.7). ولا تزال الشفافية والمحتوى الاختياري يُسَّمان لـ PDF/A-1 فقط
Version 1.42.0
إضافات (Added)
- أصبح PDF/A-2 (ISO 19005-2) وPDF/A-3 (ISO 19005-3) مدعومَين الآن في مستويات المطابقة الثلاثة جميعها — a وb وu — عبر
SaveAsPdfAوValidatePdfAوالخاصيةPdfAConformance. ويكتسب التعدادTPdfAConformanceالقيمpac2aوpac2uوpac3aوpac3u(لا يملك PDF/A-1 المستوى Level u). ويكتب الحفظ القيمتين المطابقتينpdfaid:part(2 أو 3) وpdfaid:conformance(A أو B أو U)، مع الإبقاء على نوع OutputIntent الفرعيGTS_PDFA1الذي تحتفظ به ISO 19005-2 للتوافق. ولا يزال طلب Level A يُخفَّض إلى Level B المطابق (لأي جزء) عندما يفتقر المستند إلى البنية الموسومة (tagged) التي يشترطها ذلك المستوى
Version 1.41.0
إضافات (Added)
- أصبح
ValidatePdfAالآن يكتشف انتهاكات PDF/A على مستوى المحتوى التي لا يمكن لحقن العلامات إصلاحها، إضافةً إلى العلامات البنيوية التي كان يبلّغ عنها سابقًا: JavaScript وغيره من الإجراءات المحظورة، وadditional-actions (/AA)، والملفات المضمّنة، وLZWDecode، والشفافية (soft masks وtransparency groups)، والمحتوى الاختياري (/OCProperties)، وأنواع التعليقات الفرعية المحظورة (FileAttachment وSound وMovie و3D وScreen)، وAcroForm/NeedAppearances trueو/XFA، والخطوط التي تفتقر واصفاتها إلى برنامج خط مضمّن، وادعاء Level A المقدَّم دون البنية الموسومة (tagged) التي تشترطها ISO 19005-1 6.8. وتنطبق فحوص الشفافية والمحتوى الاختياري والملفات المضمّنة على PDF/A-1 فقط (هذه الميزات مسموح بها في PDF/A-2 وPDF/A-3). تكشف قيمTPdfAValidationIssueالجديدة عن كل حالة؛ أما القيم الموجودة فلم تتغيّر
Version 1.40.3
تم الإصلاح (Fixed)
- أصبح
SaveAsPdfAالآن يزيل أي تشفير من المستند المصدر قبل إنتاج إخراج PDF/A. تحظر ISO 19005-1 6.1.3 مفتاح/Encryptفي المقطع الخلفي (trailer)، لكن مسار الحفظ كان في السابق يُبقي على معالج الأمان الخاص بالمصدر، لذا كان حفظ مستند مشفَّر بصيغة PDF/A ينتج ملفًا مشفَّرًا وغير متوافق. أصبح الحفظ بصيغة PDF/A الآن يفك تشفير المستند أولًا. أما المستندات غير المشفَّرة فلا تتأثر
Version 1.40.2
تم الإصلاح (Fixed)
- تم منع
SaveAsPdfAمن إصدار ادعاء زائف بالتوافق مع PDF/A Level A. عندما يُطلب Level A (pac1a) لكن المستند المصدر يفتقر إلى علامات البنية الموسومة (tagged) التي تشترطها ISO 19005-1 6.8 — وجود/StructTreeRootفي الفهرس وقاموس/MarkInfoيتضمن/Marked true— يُعرَّف الملف المحفوظ الآن على أنه Level B المطابق (pdfaid:conformance=B) بدلًا من تأكيد Level A. أما إخراج PDF/A-1b المرئي البحت فلا يتأثر
Version 1.40.1
تم الإصلاح (Fixed)
- تم تشديد التحقق من توافق إصدار PDF بحيث يُعدّ إجراء
SetOCGState(set-optional-content-group-state) ميزةً من ميزات PDF 1.5. أصبح الحفظ إلى هدف PDF 1.2 أو 1.3 أو 1.4 يحتوي على إجراءSetOCGStateمرفوضًا الآن ليتوافق مع ISO 32000-1 (Table 198)؛ في السابق كان من الممكن أن يمر مثل هذا الإجراء إلى مخرجات ذات إصدار أدنى. أما إجراء PDF 1.2 المتمايز والمتقادمSetStateفلا يزال مقبولًا اعتبارًا من PDF 1.2 فصاعدًا
Version 1.40.0
إضافات (Added)
- تم ربط
FPDFPageObj_AddExistingMark()، التي تُرفق علامة محتوى موجودة بكائن صفحة. عندما تشترك كائنات صفحة متتالية في العلامة نفسها، يدمجها ملف PDF المحفوظ في علامة واحدة تشملها جميعًا؛ أما الكائنات غير المتتالية فتحصل كل منها على نسخة مستقلة - تم ربط
FPDFTextObj_SetFontSize()لتغيير حجم النقطة لكائن نص موجود، بما يكمّل الربط الموجودFPDFTextObj_GetFontSize()
تغيير (Changed)
- تم تحديث مكتبات DLL الخاصة بزمن تشغيل PDFium المرفقة (Win32 وWin64، الإصدارات القياسية وإصدارات V8) إلى لقطة PDFium بتاريخ 2026-06-02
Version 1.39.53
تغيير (Changed)
- تم تغيير أمثلة Delphi
PDFViewerوSplitViewوMultiPageViewerلفتح المستندات في وضعZoom to Pageافتراضياً - يعرض التصيير الأولي الآن الصفحة كاملة داخل مساحة العارض قبل أن يختار المستخدم مستوى تكبير يدوياً
- تم تحديث
TPdf.AboutInfoوبيانات تعريف حزمة Lazarus وبيانات تعريف إصدار المثبت للإبلاغ عن 1.39.53
Version 1.39.52
تغيير (Changed)
- تم تحسين
Demo\Lazarus\CreatePDFبحيث ينشئ مثال البداية الآن ملف PDF من صفحتين يحتوي على vector paths وtable content وembedded image وtext annotation وrotated text وdocument-building walkthrough أوضح - تمت إضافة صفحات
README.htmlمصقولة لكل مجلد demo في Delphi وC++Builder وLazarus، واستبدال README النصي المتبقي بدليل قابل للقراءة في المتصفح - تم تحديث
TPdf.AboutInfoوبيانات Lazarus package metadata وinstaller version metadata إلى 1.39.52
Version 1.39.51
- تم تحسين ملخصات الدُفعات في
Demo\Delphi\PreflightReportCliبإجماليات standard status لنتائج Pass وAction required وReview عبر selected standards - تتضمن per-file rows الآن action-required count وreview count في ملخصات TXT / HTML / JSON / CSV، مما يسهل فحص CI artifacts بدون فتح كل generated report
- تم تحديث
TPdf.AboutInfoوبيانات Lazarus package metadata وinstaller version metadata إلى 1.39.51
Version 1.39.50
- تم تحسين وضع الدُفعات حسب المجلد في
Demo\Delphi\PreflightReportCliبحيث يقومbatchdir=folderبجمع PDF paths المكتشفة وفرزها ثم إنشاء التقارير بترتيب ثابت - أصبحت عمليات recursive directory scans تنتج report order وsummary rows قابلة للتكرار، بينما يستمر
batch=list.txtprocessing الصريح في الحفاظ على list file order - تم تحديث
TPdf.AboutInfoوبيانات Lazarus package metadata وinstaller version metadata إلى 1.39.50
Version 1.39.49
- تم تحسين ملخصات الدُفعات في
Demo\Delphi\PreflightReportCliلتسجيل run settings: نوع المصدر، مسار المصدر، حالة recursive، مجلد الإخراج، report format، selected standards، ووضعfailon= - تتضمن ملخصات JSON الآن كائن
run، وتعرض ملخصات TXT و HTML قسم run settings، وتكرر CSV rows أعمدة audit نفسها لاستخدامها في الجداول و CI pipelines - تم تحديث
TPdf.AboutInfoوبيانات Lazarus package metadata وinstaller version metadata إلى 1.39.49
Version 1.39.48
- تم تحسين batch output naming في
Demo\Delphi\PreflightReportCliبحيث لا تقوم duplicate input file names التي تشترك فيoutdir=واحد بالكتابة فوق generated reports لبعضها - تضيف Batch runs الآن اللاحقات
-2و-3وما بعدها عندما يكون generated report path قد تم تعيينه بالفعل في نفس التشغيل، وتسجل summaries مسار collision-safe report path النهائي - تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata للإبلاغ عن 1.39.48
Version 1.39.47
- تم تحسين batch summaries في
Demo\Delphi\PreflightReportCliبحيث تتضمن مخرجات TXT و JSON الآن aggregate totals لـ total files و processed files و failed files و issues وfailon=matches - تبقى CSV summaries كـ row table صافية من أجل consumers الحاليين، بينما تستمر HTML summaries في عرض نفس aggregate metrics داخل dashboard header
- تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata للإبلاغ عن 1.39.47
Version 1.39.46
- تم تحسين
Demo\Delphi\PreflightReportCliبإضافةsummary=batch.html/.htmبحيث يمكن لـ batch runs إخراج browser-readable dashboard إلى جانب TXT / CSV / JSON manifests - تعرض HTML summaries مقاييس total و processed و failed و issue و
failon=match، ثم تسرد كل input مع report links و status و counts و error text - تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata للإبلاغ عن 1.39.46
Version 1.39.45
- تم تحسين
Demo\Delphi\PreflightReportCliبإضافةbatchdir=folderوrecursiveبحيث يمكن لـ scripts فحص PDF folders مباشرة من دون كتابة list file أولاً - يعيد Directory batch mode استخدام سلوك
outdir=وsummary=وstandards=وfailon=من list-based batch mode؛ ويفحص non-recursive الـ folder المحددة فقط، بينما يتضمنrecursiveالـ subfolders - تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata للإبلاغ عن 1.39.45
Version 1.39.44
- تم تحسين
Demo\Delphi\PreflightReportCliبإضافةsummary=batch.csv|json|txtحتى تتمكن batch runs من إخراج machine-readable manifest بجانب per-file reports - تتضمن Batch summaries كل input path و report path و status و standard count و passed count و issue count وحالة تطابق
failon=و error text لاستخدامها في CI jobs و scripts خارجية - تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata للإبلاغ عن 1.39.44
Version 1.39.43
- تم تحسين
Demo\Delphi\PreflightReportCliبإضافةbatch=list.txtوoutdir=reportsحتى تتمكن scripts من إنشاء preflight reports لقائمة من PDF files في تشغيل واحد - يتجاوز Batch mode الأسطر الفارغة وأسطر التعليقات
#، ويشتق كل report name بصيغة.preflight.<ext>من PDF الإدخال، ويتابع بعد per-file errors، ثم يعرض ملخص processed و failed files قبل الرجوع - تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata للإبلاغ عن 1.39.43
Version 1.39.42
- تم تحسين
Demo\Delphi\PreflightReportCliبإضافةfailon=none|issues|action|reviewبحيث تستطيع CI jobs تحويل preflight results الناتجة إلى exit codes حتمية - تعيد CLI الآن exit code 2 عند تطابق
failon=rule المحددة بعد إنشاء report file و optional attached-report PDF، بينما تستمر runtime errors في إعادة exit code 1 - تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata للإبلاغ عن 1.39.42
Version 1.39.41
- تم تحسين
Demo\Delphi\PreflightReportCliبإضافةattach=output.pdfبحيث يمكن تضمين preflight report الناتج كـ document-level attachment في PDF copy جديدة - تحتفظ CLI بملف TXT / HTML / Markdown / JSON / CSV report file الناتج على القرص وترفض إرفاقه مرة أخرى إلى input PDF path الأصلي، مما يقلل خطر الاستبدال غير المقصود
- تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata للإبلاغ عن 1.39.41
Version 1.39.40
- تمت إضافة
Demo\Delphi\PreflightReportCli، وهو Delphi console companion لإنشاءFPdfPreflightReportبطريقة scriptable دون فتح viewer - تدعم CLI إنشاء sample بدون وسيطات، إضافة إلى input / output arguments و optional password وتنسيقات الإخراج
text/html/md/json/csv، وstandards=filtering لـ PDF/A و PDF/UA و PDF/E و PDF/X و PDF/R و PDF/VT - تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata للإبلاغ عن 1.39.40
Version 1.39.39
- تم تحسين
FPdfPreflightReportبإضافةTPdfPreflightReport.ToMarkdownوSaveMarkdownToFileبحيث يمكن تصدير preflight reports كملف Markdown مناسب لـ issue tracker - تم تحديث أمثلة
PreflightReportفي Delphi و C++Builder و Lazarus بإضافة Markdown preview switching وإجراءات Save MD إلى جانب workflow TXT / HTML / JSON / CSV الحالي - تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata للإبلاغ عن 1.39.39
Version 1.39.38
- تم تحسين أمثلة
SecurityAuditفي Delphi و C++Builder و Lazarus بإضافة JSON audit report export إلى جانب workflow TXT save / copy الحالي - يتضمن JSON report الحقول
formatوgeneratedAtوsummaryوfindingCountوصفوفfindingsمنظمة تحتوي على حقول severity و area و detail - تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata للإبلاغ عن 1.39.38
Version 1.39.37
- تم تحسين
FPdfPreflightReportبإضافةTPdfPreflightReport.ToCsvوSaveCsvToFileبحيث يمكن تصدير preflight reports كـ spreadsheet-friendly CSV - تم تحديث samples الخاصة بـ Delphi و C++Builder و Lazarus
PreflightReportبإضافة CSV preview switching و Save CSV actions بجانب workflow الحالي TXT / HTML / JSON - تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata للإبلاغ عن 1.39.37
Version 1.39.36
- تم تحسين
FPdfPreflightReportبإضافةTPdfPreflightReport.IssueCategoryCountsوالأنواع القابلة لإعادة الاستخدامTPdfPreflightIssueCategoryCountوTPdfPreflightIssueCategoryCountsلتجميع marker-level issues حسب category - تم تحديث
TPdfPreflightReport.ToTextوToHtmlوToJsonبحيث يتضمن إخراج PreflightReport الناتج issue-category count summaries إلى جانب per-standard rows و detailed issue recommendations - تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata لتعرض 1.39.36
Version 1.39.35
- تمت إعادة تسمية sample الموسع
PrintDialogإلىPrintPreferencesعبر Delphi و C++Builder و Lazarus بحيث يطابق demo name الآن workflow الخاص بـ PDF author print preferences و N-up printing و odd / even filtering و grayscale و cell border و duplex mapping - تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata لتعرض 1.39.35
Version 1.39.34
- تم تحسين
Demo\Delphi\PrintPDFبتحميل PDF عبر السحب والإفلات، وتم توثيق workflow الحالي فيDemo\CBuilder\PrintPDFإلى جانب أمثلة PrintPDF في Delphi وLazarus - تم تحديث
TPdf.AboutInfoوLazarus package metadata وinstaller version metadata للإبلاغ عن 1.39.34
Version 1.39.33
- تمت إضافة
Demo\CBuilder\SplitView، وبذلك اكتملت SplitView sample matrix عبر Delphi و C++Builder و Lazarus - تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata للإبلاغ عن 1.39.33
Version 1.39.32
- تمت إضافة
Demo\Lazarus\SplitView، وبذلك أصبح side-by-side PDF comparison متاحًا في Lazarus مع two- or three-pane layouts و active-view navigation و synchronized commands و zoom presets و rotation - تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata للإبلاغ عن 1.39.32
Version 1.39.31
- تمت إضافة
Demo\Lazarus\PrintPDF، وبذلك أصبح standard PDF print workflow متاحًا في Lazarus مع preview navigation و page ranges و copies و collate mode و progress و cancellation - تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata للإبلاغ عن 1.39.31
Version 1.39.30
- تمت إضافة
Demo\Lazarus\FontPropertiesلإكمال مصفوفة أمثلة FontProperties عبر Delphi وC++Builder وLazarus - تم تحديث
TPdf.AboutInfoوLazarus package metadata وinstaller version metadata للإبلاغ عن 1.39.30
Version 1.39.29
- تمت إضافة
Demo\CBuilder\FontPropertiesلتوفير فحص بيانات الأحرف والخطوط المفهرسة في C++Builder إلى جانب مثال Delphi - تم تحديث
TPdf.AboutInfoوLazarus package metadata وinstaller version metadata للإبلاغ عن 1.39.29
Version 1.39.28
- تمت إضافة
Demo\Delphi\ExtractTextPagesلإكمال مصفوفة أمثلة استخراج النص صفحة بصفحة عبر Delphi وC++Builder وLazarus - تم تحديث
TPdf.AboutInfoوLazarus package metadata وinstaller version metadata للإبلاغ عن 1.39.28
Version 1.39.27
- تمت إضافة
Demo\Lazarus\PrintDialog، وبذلك اكتمل PrintDialog sample matrix عبر Delphi و C++Builder و Lazarus - تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata للإبلاغ عن 1.39.27
Version 1.39.26
- تمت إضافة
Demo\CBuilder\PrintDialog، وبذلك أصبح N-up printing و PDF author print preferences workflow متاحين في C++Builder إلى جانب Delphi sample - تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata للإبلاغ عن 1.39.26
Version 1.39.25
- تمت إضافة
Demo\CBuilder\ViewerInteractionLab، وبذلك اكتمل ViewerInteractionLab sample matrix عبر Delphi و C++Builder و Lazarus - تم تحديث library build workflow و Win64 C++Builder package outputs بحيث يتم ربط
TPdfViewviewer interaction methods بشكل صحيح في Win64 demos - تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata للإبلاغ عن 1.39.25
Version 1.39.24
- تمت إضافة
Demo\Lazarus\ViewerInteractionLab، وبذلك أصبح focused viewer interaction workflow متاحًا في Lazarus إلى جانب Delphi sample - تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata للإبلاغ عن 1.39.24
Version 1.39.23
- تمت إضافة
Demo\Lazarus\SearchAndSelect، وبذلك اكتملت SearchAndSelect sample matrix عبر Delphi و C++Builder و Lazarus - تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata للإبلاغ عن 1.39.23
Version 1.39.22
- تمت إضافة
Demo\CBuilder\ContentExtractionLabوDemo\Lazarus\ContentExtractionLab، وبذلك أصبح multi-category content extraction workflow متاحًا في جميع demo IDE المدعومة - تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata للإبلاغ عن 1.39.22
Version 1.39.21
- تم تحسين
Demo\Delphi\PreflightReportوDemo\Lazarus\PreflightReportوDemo\CBuilder\PreflightReportبإضافة preview format selector حتى يتمكن المستخدمون من فحص text أو JSON output قبل حفظ التقارير - تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata للإبلاغ عن 1.39.21
Version 1.39.20
- تمت إضافة JSON export إلى
FPdfPreflightReportعبرTPdfPreflightReport.ToJsonوSaveJsonToFileلإنتاج summary قابلة للقراءة آليًا، و per-standard status / priority، و next action، و issue detail - تم تحديث
Demo\Delphi\PreflightReportوDemo\Lazarus\PreflightReportوDemo\CBuilder\PreflightReportبإجراءات Save JSON إلى جانب TXT / HTML export - تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata للإبلاغ عن 1.39.20
Version 1.39.19
- تم تحسين
FPdfPreflightReportبإضافةTPdfPreflightStatusوissue categories وper-standard priority وnext-action guidance في TXT / HTML reports - تم تحديث
Demo\Delphi\PreflightReportوDemo\Lazarus\PreflightReportوDemo\CBuilder\PreflightReportلعرض status وpriority وissue count وnext action في summary grid - تم تحديث
TPdf.AboutInfoوLazarus package metadata وinstaller version metadata للإبلاغ عن 1.39.19
Version 1.39.18
- تمت إضافة
Demo\Lazarus\SecurityAudit، وبذلك اكتملت مصفوفة أمثلة Delphi و C++Builder و Lazarus من أجل workflow تدقيق PDF risk-surface للقراءة فقط - يسرد مثال Lazarus كلا من permissions و attachments و JavaScript actions و URI / Launch link annotations و web links و signatures و XFA state و V8 / XFA helper availability و unsupported-feature callbacks، ثم يحفظ أو ينسخ finding list كتقرير TXT report
- تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata للإبلاغ عن 1.39.18
Version 1.39.17
- تمت إضافة
Demo\CBuilder\SecurityAudit، وبذلك أصبح workflow تدقيق PDF risk-surface للقراءة فقط متاحا في C++Builder إلى جانب مثال Delphi الحالي - يسرد مثال C++Builder كلا من permissions و attachments و JavaScript actions و URI / Launch link annotations و web links و signatures و XFA state و V8 / XFA helper availability و unsupported-feature callbacks، ثم يحفظ أو ينسخ finding list كتقرير TXT report
- تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata للإبلاغ عن 1.39.17
Version 1.39.16
- تمت إضافة
Demo\CBuilder\SearchAndSelect، وبذلك أصبح workflow viewer مستقل لـ SearchAndSelect متاحا في C++Builder إلى جانب مثال Delphi الحالي - ينشئ مثال C++Builder أو يفتح PDFs، ويعرض matches لكل الصفحات مع page / character-index previews، ويدعم Previous / Next و double-click navigation، ويميز matches في الصفحة الحالية عبر
HighlightSearchText - كما يعرض
AllowUserTextSelectionوSelectedTextوSelectAllوCopySelectionToClipboardوClearSelectionوOnSelectionChangeوخيارات spreadDisplayMode؛ وتشير بيانات الإصدار الآن إلى 1.39.16
Version 1.39.15
- تمت إضافة
Demo\CBuilder\WatermarkStampلإكمال demo matrix الخاصة بـ Delphi و Lazarus و C++Builder من أجل Form XObject watermark و stamp workflows القابلة لإعادة الاستخدام - ينشئ مثال C++Builder ملفات PDF للـ target و stamp، ويعيد استخدام stamp page عبر
CreateXObjectFromPage، ويطبق transforms باستخدامTPdfMatrix، ثم يحفظ centered watermarks و corner stamps و page number labels - تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata للإبلاغ عن 1.39.15
Version 1.39.14
- تمت إضافة
Demo\Lazarus\WatermarkStampلجلب workflow القابل لإعادة الاستخدام لـ Form XObject watermark و stamp إلى Lazarus - ينشئ مثال Lazarus ملفات PDF للـ target و stamp، ويعيد استخدام stamp page عبر
CreateXObjectFromPage، ويطبق transforms باستخدامTPdfMatrix، ثم يحفظ centered watermarks و corner stamps و page number labels - تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata للإبلاغ عن 1.39.14
Version 1.39.13
- تمت إضافة
Demo\CBuilder\PreflightReportلإكمال demo matrix الخاصة بـ Delphi و Lazarus و C++Builder من أجل workflow القابل لإعادة الاستخدامFPdfPreflightReport - يستخدم مثال C++Builder ملف
FPdfPreflightReport.hppلإنشاء standard summaries و TXT report previews و TXT / HTML report files وسلوك Open Last Report - تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata للإبلاغ عن 1.39.13
Version 1.39.12
- تمت إضافة
Demo\Lazarus\PreflightReportلجلب preflight report workflow الخاص بـ PDF/A و PDF/UA و PDF/E و PDF/X و PDF/R و PDF/VT إلى Lazarus - يمكن لمثال Lazarus فتح PDF أو إنشاؤه، واختيار target standards، ومعاينة summary rows و TXT report output، وحفظ TXT / HTML reports، وفتح آخر report محفوظ
- تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata للإبلاغ عن 1.39.12
Version 1.39.11
- تم تحسين
Demo\Delphi\SearchAndSelectبقائمة نتائج بحث عبر كل الصفحات تسجل page number و character index و preview text - تمت إضافة Previous / Next match navigation و double-click result jumping مع الحفاظ على سلوك
HighlightSearchTextفي الصفحة الحالية - تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata للإبلاغ عن 1.39.11
Version 1.39.10
- تم تحسين
Demo\Delphi\SecurityAuditبإجراءات Save Report و Copy Report التي تصدّر summary الحالي و finding rows كتقرير TXT audit report - يقوم demo الآن بمسح report export state عند reset للـ audit panel حتى تبقى reports المنسوخة أو المحفوظة متوافقة مع findings الظاهرة
- تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata للإبلاغ عن 1.39.10
Version 1.39.9
- تم تحسين
Demo\Delphi\ContentExtractionLabبإضافة source-PDF save و report copy-to-clipboard وإجراءات all / none category selection - يقوم demo الآن بإبطال report الحالي عند تغيّر category selection حتى تعكس TXT / JSON exports نطاق extraction scope الظاهر
- تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata للإبلاغ عن 1.39.9
Version 1.39.8
- تمت إضافة
Demo\Delphi\ContentExtractionLab، وهو workflow sample موحد لـ content extraction يغطي document metadata و page text و page objects و images و attachments و links و annotations و bookmarks و font / character metrics - يمكن للمثال فتح PDF موجود أو إنشاء synthetic PDF يحتوي على text و image و attachment و annotation، ثم إنشاء summary rows وتقارير TXT / JSON مفصلة
- تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata للإبلاغ عن 1.39.8
Version 1.39.7
- تمت إضافة
Lib\FPdfPreflightReport.pasكـ report helper قابل لإعادة الاستخدام يجمعValidatePdfAوValidatePdfUaوValidatePdfEوValidatePdfXوValidatePdfRوValidatePdfVTفي كائنTPdfPreflightReportواحد - تمت إضافة
Demo\Delphi\PreflightReportكـ workflow sample يفتح أو ينشئ PDF، ويختار target standards، ويعرض summary rows وissue recommendations، ويحفظ تقارير TXT أو HTML - توضح التقارير الناتجة صراحة حدود marker-level validation المدمجة حتى تتمكن التطبيقات من استخدامها مع content-level preflight tools متخصصة عند الحاجة
- تم تحديث
TPdf.AboutInfoوLazarus package metadata وpackage project lists وinstaller version metadata لتعرض 1.39.7
Version 1.39.6
- تمت إضافة
Demo\Delphi\SearchAndSelect، وهو مثال viewer workflow مركز على search highlighting و text selection و selected-text preview و copy و clear و spread display modes - يوضح المثال
HighlightSearchTextوخيارات البحث match-case / whole-word وAllowUserTextSelectionوSelectedTextوSelectAllوCopySelectionToClipboardوClearSelectionدون إضافة API جديدة للمكتبة - تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata للإبلاغ عن 1.39.6
Version 1.39.5
- تم توسيع
Demo\Delphi\ViewerInteractionLabليصبح مثال viewer UX بأسلوب SearchAndSelect معHighlightSearchTextوخيارات match-case / whole-word ومعاينة النص المحدد وعناصر selection / clipboard controls الموجودة - تم توسيع
Demo\Delphi\PrintDialogلفحص PDF author print preferences:PrintCopiesوPrintPageRangesوPrintScalingوPrintPaperHandlingو duplex mapping المرئي عبرSetPdfPrintPaperHandlingDevMode - تمت إضافة
Demo\Delphi\SecurityAudit، وهو مثال risk-surface للقراءة فقط يسرد permissions و attachments و document JavaScript و URI / Launch links و web links و signatures و XFA state و V8 / XFA helper availability - تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata للإبلاغ عن 1.39.5
Version 1.39.4
- تمت إضافة
Demo\CBuilder\ImageToPDFوDemo\Lazarus\ImageToPDF، مما يكمل مصفوفة أمثلة ImageToPDF عبر Delphi و C++Builder و Lazarus - توضح الأمثلة الجديدة اختيار عدة صور، ومعاينة الصورة المحددة، وصفحة PDF واحدة لكل صورة، وحجم صفحة A4 portrait / landscape، وتحجيم الصورة في الوسط، والتقدم لكل صورة، وفتح PDF الناتج بعد الحفظ
- تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata للإبلاغ عن 1.39.4
Version 1.39.3
- تمت إضافة
Demo\CBuilder\BatchExport، مما يجلب workflow تصدير PDF إلى JPG متعدد الملفات إلى C++Builder بجانب أمثلة Delphi و Lazarus الموجودة - يوضح المثال
LoadCustomDocumentوIPdfCancellationTokenSourceوإدخالTFileStreamبتدفق، والتقدم لكل ملف ولكل صفحة، ومعالجة الإلغاء، ومدخلات DPI / quality / password، وفتح مجلد الإخراج بعد الاكتمال - تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata للإبلاغ عن 1.39.3
Version 1.39.2
- تمت إضافة
Demo\Delphi\WatermarkStamp، وهو مثال قابل للتشغيل لسير عمل Form XObject ينشئ PDF هدفا و stamp PDF قابلا لإعادة الاستخدام، ثم يطبق علامات مائية في الوسط، وأختاما في الزاوية العلوية اليمنى، وتسميات أرقام الصفحات على كل صفحة - يوضح المثال
CreateXObjectFromPageوInsertFormObjectFromXObjectوTPdfMatrixوFPDFPageObj_SetMatrixمن دون إضافة API جديدة للمكتبة - تم تحديث
Docs\en-us\Examples.htmlلاستخدام نمطTPdfMatrix.Handleالحالي عند تمرير المصفوفات إلىFPDFPageObj_SetMatrix - تم تحديث
TPdf.AboutInfoو Lazarus package metadata و installer version metadata للإبلاغ عن 1.39.2
Version 1.39.1
- تمت إضافة
Demo\Delphi\ViewerInteractionLabكعينة مركزة لـTPdfViewلعرض أوضاع العرض وأوضاع الملاءمة وألوان الصفحات والتدوير وتحديد النص للمستخدم وتفاعلات الحافظة وتغذية راجعة لإحداثياتDeviceToPage - تمت إضافة
Demo\CBuilder\StandardsLabوDemo\Lazarus\StandardsLabبحيث يستطيع مستخدمو Lazarus تشغيل مسار التحقق وإخراج العلامات لمعايير PDF/A وPDF/UA وPDF/E وPDF/X وPDF/R وPDF/VT - أُدرجت وحدات standards في
Lib\37.0\PDFiumPas.dprojوLib\FPC\PDFiumLaz.lpk، وتم إصلاح بناء عرض Delphi الخاص بـSplitViewعبر إزالة استيراد مكرر لـWinapi.ShellAPI - تم إصلاح عوائق البناء الدفعي لعروض Delphi في
BatchExportوPDFViewerوMultiPageViewerوSplitViewمن دون تغيير سلوكها وقت التشغيل - تم إصلاح توافق البناء الدفعي لعروض C++Builder في
PDFViewerوMultiPageViewerعبر استبدالnullptrبـNULLلنمط المشروع الحالي - تم تحديث
TPdf.AboutInfoوبيانات حزمة Lazarus وبيانات إصدار المثبت للإبلاغ عن 1.39.1
Version 1.39.0
- تمت إضافة
Demo\Delphi\StandardsLab، وهو مثال قابل للتشغيل لسير عمل المعايير يقوم بتحميل PDF أو إنشائه، ثم تشغيلValidatePdfAوValidatePdfUaوValidatePdfEوValidatePdfXوValidatePdfRوValidatePdfVT، ويعرض conformance المكتشفة وحالة النجاح وعدد issue في شبكة واحدة - تستدعي أزرار الحفظ في StandardsLab الدوال
SaveAsPdfAوSaveAsPdfUaوSaveAsPdfEوSaveAsPdfXوSaveAsPdfRوSaveAsPdfVT، مما يجعل مخرجات marker لمعايير PDF مرئية دون كتابة harness مخصص - تم تحديث
TPdf.AboutInfoوبيانات حزمة Lazarus وبيانات إصدار المثبت لتعرض 1.39.0
Version 1.38.0
- تستخدم تراكبات البحث وتحديد النص في
TPdfViewالآن alpha blending حقيقياً بدلاً من رسم mask منطقي، مع الحفاظ على محتوى الصفحة تحت التمييز - تمت إضافة
SetPdfPrintPaperHandlingDevModeلتحويلTPrintPaperHandlingإلى قيم WindowsDEVMODE.dmDuplex:DMDUP_SIMPLEXوDMDUP_HORIZONTALوDMDUP_VERTICAL - يقوم
TPdfView.SmoothScrollالآن بتحريك line/page scrollbar commands عبر timer-driven segments؛ ويبقى thumb tracking فورياً - تم تحديث
TPdf.AboutInfoوبيانات إصدار المثبت إلى 1.38.0
Version 1.37.0
- أصبح
TPdfيملك قفل render لكل instance يسلْسلRenderPageوRenderTileوRenderPageProgressiveومسارات reload للصفحة وunload للمستند. أصبح render من worker عبر مكون مشترك عملياً، مع بقاء تنسيق تعديلات المستند ودورة حياته على التطبيق - تم إصلاح wrapper الخاص بـ zero-copy bitmap لرفض DIB
TBitmapبنمط bottom-up والرجوع إلى buffer مملوك لـ PDFium مع copy نهائي، مما يزيل أخطاء stride corruption / access violation في اختبارات VCL render - تم تضييق سلوك التحديد في
TPdfView: الخاصيةAllowUserTextSelectionتمنع إدخال المستخدم فقط، وتستمر APIs التحديد من الكود في الرسم، ويتبعSelectAllالـ spread المرئي الفعلي بحيث لا تحدد صفحة الغلاف الصفحة 2. تم توسيع اختبارات Delphi وLazarus وC++Builder - تم تحديث
TPdf.AboutInfoوبيانات إصدار المثبت إلى 1.37.0
Version 1.36.0
- تم تفعيل تحديد النص للمستخدم النهائي في
TPdfView— أصبحت الخاصيةAllowUserTextSelectionالمحجوزة منذ v1.17.0 تقود الآن مسار تحديد كامل بالسحب؛ فالنقر الأيسر على حرف نصي يدخل وضع التحديد مباشرةً عبر hit-test، بينما يواصل النقر الأيسر على مساحة فارغة التمرير كما كان من قبل، وتبقى أولوية عنصر تعبئة النماذج محفوظة بحيث يركز النقر على حقل نموذج على الحقل بدل بدء التحديد - يحدد النقر المزدوج الكلمة، ويحدد النقر الثلاثي السطر، ويحدد
Ctrl+Aالصفحة الحالية، أو كلتا الصفحتين في أوضاع العرض الممتد، بينما ينسخCtrl+Cالتحديد إلى حافظة Windows بصيغةCF_UNICODETEXT - توسع
Shift+Left/Shift+Rightالتحديد حرفًا حرفًا، مع الامتداد إلى الصفحة المجاورة في وضع الامتداد، بينما توسعShift+Home/Shift+Endالتحديد إلى حافة السطر المرئية باستخدام ارتفاع صندوق حرف البذرة كتسامح لتجميع السطر، بحيث تبقى الأسطر ذات أحجام الخطوط المختلطة مجمعة بشكل صحيح - يغيّر المرور فوق النص المؤشر إلى
crIBeamويعيده إلى المؤشر الافتراضي عند الابتعاد عن النص، وأثناء سحب تحديد النص يؤدي السحب إلى منطقة ميتة بعرض 20 بكسل عند أي حافة للعارض إلى تمرير تلقائي للصفحة، بمؤقت 50 ms وخطوة 16 px ومقيد بالحدود نفسها التي يستخدمها مسار التمرير، بحيث يمكن مد التحديد خارج المنظور الحالي من دون إفلات الفأرة أولًا - يعمل التحديد عبر الصفحات في أوضاع العرض الممتد (
dmTwoPageContinuous,dmTwoPageContinuousWithCover): فالسحب الذي يبدأ من الصفحة اليسرى وينتهي في اليمنى يحدد النطاق المتصل الممتد عبرهما، وتضمSelectedTextمقاطع كل صفحة مع CR/LF بحيث يعود النص الناتج مقروءًا كالمحتوى متعدد الأسطر المعتاد - خاصية منشورة جديدة
SelectionColorبقيمة افتراضيةclHighlight، وهي لون تحديد Windows النظامي — مستقلة عنHighlightColorالذي يلوّن نتائج البحث بالأصفر، وبذلك يمكن عرض تمييز البحث وتحديد السحب الحي على الشاشة في الوقت نفسه من دون تعارض لوني - حدث منشور جديد
OnSelectionChangeيُطلق كلما تبدلت النطاقات المادية للتحديد فعليًا — ولا يُطلق أبدًا عند إعادة تطبيق مطابقة — لذلك تستطيع التطبيقات المضيفة ربطه مباشرةً بنص شريط الحالة أو بحالة تمكين الأزرار من دون إزالة اهتزاز - واجهة عامة جديدة على
TPdfView:HasSelectionوSelectionCharCountوSelectedTextوClearSelectionوSelectAllوCopySelectionToClipboard، وهذه نقاط دخول على مستوى الشيفرة وتعمل دائمًا بصرف النظر عنAllowUserTextSelection— فالعلم لا يقيّد إلا إدخال المستخدم، أي الفأرة وCtrl+C وCtrl+A وShift+arrows، لذلك تستطيع التطبيقات الشبيهة بالأكشاك تعطيل التحديد الذي يقوده المستخدم مع الاستمرار في بناء أزرار شريط أدوات "تحديد الكل / نسخ" تستخدم الواجهة نفسها - تُربط قائمة منبثقة افتراضية للنقر بالزر الأيمن بعنوان
Copy/复制تلقائيًا عندما لا يكون المضيف قد عيّنPopupMenuخاصته، وبذلك يعمل السلوك القياسي "حدد نصًا ثم انقر بالزر الأيمن ثم انسخ" مباشرةً، ويُختار العنوان بين الإنجليزية والصينية عبرSysLocale.PriLangID، أما المضيفون الذين يحتاجون إلى توطين كامل أو قائمة أغنى فيكفي أن يعينواPopupMenuخاصتهم فيُحجب الافتراضي - يُمسح التحديد تلقائيًا عند
SetPdfوSetPageNumberوSetActive(False)وانتقالاتDisplayMode، مع إطلاقOnSelectionChangeمرة واحدة بالضبط عندما يكون التحديد السابق غير فارغ، كما يحافظ نظام تعبئة النماذج على أسبقيته — فعند تحرير حقل نموذج تؤجل كل اختصارات التحديد كي يتلقى الحقلCtrl+C/Ctrl+A/Shift+arrowsلتحديده الخاص - تم توسيع مجموعات اختبارات Delphi وLazarus إلى 202 حالة لكل منهما، ومجموعة C++Builder إلى 159 حالة، لتغطية القيم الافتراضية والذهاب والإياب وسلوك الواجهة العامة ومسح تبدل الحالة وسحب الفأرة، سواء عند إصابة النص أو الفراغ، والفرق بين النقر والسحب، وتبديل مؤشر IBeam، والنقر المزدوج للكلمة، والنقر الثلاثي للسطر، واختصارات لوحة المفاتيح، وربط القائمة المنبثقة الافتراضية أو تأجيلها أو عنوانها، والتحديد عبر صفحات الامتداد، بما في ذلك فحص ذهاب وإياب CR/LF مع الحافظة
Version 1.35.0
- تمت إضافة دعم حقن علامات PDF/VT (ISO 16612-2:2010): يرقّي TPdf.SaveAsPdfVT المستند الحالي إلى ملف مطابق لـ PDF/VT-1 أو PDF/VT-2، أي مجموعة PDF الفرعية للطباعة المتغيرة والمعاملات. ويُبنى PDF/VT فوق PDF/X-4، إذ تتطلب ISO 16612-2 §6.2.1 أن يطابق كل ملف PDF/VT-1 أيضًا PDF/X-4، لذلك يكتب الحاقن مجموعة علامات PDF/X-4 الكاملة — XMP
pdfxid:GTS_PDFXVersion = "PDF/X-4"وInfo/GTS_PDFXVersion (PDF/X-4)و/Trappedوcatalog/OutputIntentsالذي يشير إلى قاموس OutputIntent مع ملف ICC مضمن — إلى جانب الخصائص الخاصة بـ PDF/VT - يشمل الحقن الخاص بـ PDF/VT قيم XMP
pdfvtid:GTS_PDFVTVersion(= "PDF/VT-1" أو "PDF/VT-2" وفق §6.3 Table 2) وpdfvtid:GTS_PDFVTModDate(تُبقى متزامنة معxmp:ModifyDateوفق §6.3 NOTE 1)، إضافة إلى وصف pdfaExtension:schemas يعلن مساحتي الاسم pdfxid وpdfvtid كلتيهما باستخدام معرّفي NPEShttp://www.npes.org/pdfx/ns/id/وhttp://www.npes.org/pdfvt/ns/id/، ويحمل trailer مصفوفة/ID - تمت إضافة TPdf.SaveAsPdfVTToStream لإخراج PDF/VT داخل الذاكرة، كما أُضيف الاختصار الافتراضي
TPdf.SaveAsPdfVT(FileName)الذي ينتج PDF/VT-1 مع OutputIntent sRGB IEC61966-2.1 المضمّن، بحجم 3144 bytes وهو الملف التعريفي نفسه المستخدم في SaveAsPdfA / SaveAsPdfX، ومع/Trapped /False - تمت إضافة TPdf.ValidatePdfVT: يفحص ملف PDF المفتوح لعلامات توافق PDF/VT، بما في ذلك وجود XMP
pdfvtid:GTS_PDFVTVersionوGTS_PDFVTModDate، ومساواةpdfvtid:GTS_PDFVTModDateمعxmp:ModifyDate، ووجود المعرف الأساسيpdfxid:GTS_PDFXVersion، ووجود/DPartRootفي catalog وفق §6.5، ووجود/OutputIntentsمع/DestOutputProfile، وحالة /ID في trailer، وحالة التشفير، ووجودxmp:CreateDate/ModifyDate، ثم يعيد TPdfVTValidationResult مع مستوى المطابقة المكتشف ومجموعة المشكلات - أضيفت الخاصية TPdf.PdfVTConformance لقراءة مستوى توافق المستند المفتوح مباشرةً (pvc1 أو pvc2 أو pvcNone أو pvcUnknown)، دون الحاجة إلى استدعاء ValidatePdfVT
- تصدّر الوحدة الجديدة FPdfPdfvt الأنواع TPdfVTConformance (pvcUnknown/None/1/2) وTPdfVTTrappedState (ptvUnspecified/True/False/Unknown) وTPdfVTValidationResult وTPdfVTValidationIssue وTPdfVTSaveOptions
- إن بنية أجزاء المستند (
DPartRoot/DParttree وفق §6.5) هي بنية على مستوى التطبيق تعتمد على ربط المستلمين ونطاقات الصفحات في مسار طباعة البيانات المتغيرة. لا يقوم SaveAsPdfVT بإنشاء شجرة DPart تلقائيًا — بل يُظهر ValidatePdfVT غياب/DPartRootعلى أنهpvviMissingDPartRootحتى يستطيع المستدعون تمرير ملفات PDF/VT عبر خطوة منفصلة لبناء DPart، بينما تبقى متطلبات PDF/X-4 على مستوى المحتوى، مثل تضمين الخطوط والشفافية والألوان المدارة بـ ICC وحظر OPI / JavaScript / Reference XObject، من مسؤولية مؤلف المستند وخط التصيير في PDFium - تم تحديث سلسلة TPdf.AboutInfo للإبلاغ عن الإصدار الحالي للمنتج
Version 1.34.0
- أضيف دعم إدراج علامات PDF/R-1 (ISO 23504-1:2020): يحوّل TPdf.SaveAsPdfR المستند الحالي إلى ملف متوافق مع PDF/R-1، وهو الجزء المخصص لنقل الصور النقطية في المستندات الممسوحة ضوئياً. تغطي المعالجة اللاحقة متطلبات تنسيق الملف التي يمكن إلحاقها بهذه الطريقة: تعليق الإصدار الفريد
%PDF-raster-1.0بين قاموس trailer وكلمة startxref (§5)، وتقليص قاموس catalog إلى قائمة §6.3 المسموح بها (Version / ViewerPreferences / PageLayout / PageMode / AcroForm / Metadata فقط)، وقاموس Document Information إلى قائمة §6.4.3 (Creator / Producer / CreationDate / ModDate فقط)، وتدفق XMP في /Metadata يحمل إدخالات §6.4.4 Table 1 الأربعة (xmp:CreatorTool / pdf:Producer / xmp:CreateDate / xmp:ModifyDate)، ومصفوفة /ID في trailer - تمت إضافة TPdf.SaveAsPdfRToStream لإخراج PDF/R في الذاكرة واختصار
TPdf.SaveAsPdfR(FileName) - تمت إضافة TPdf.ValidatePdfR: يفحص ملف PDF المفتوح لعلامات توافق PDF/R-1، بما في ذلك تعليق التذييل
%PDF-raster-x.yوإصدار الترويسة وغياب /Type /ObjStm والالتزام بالقائمة البيضاء في catalog وInfo ووجود تدفق بيانات XMP الوصفية وtrailer /ID، ثم يعيد TPdfRValidationResult مع مستوى المطابقة المكتشف ومجموعة المشكلات - أضيفت الخاصية TPdf.PdfRConformance لقراءة مستوى توافق المستند المفتوح (prc1 أو prcNone أو prcUnknown) دون استدعاء ValidatePdfR صراحةً
- أنواع جديدة مُصدَّرة في الوحدة الجديدة FPdfPdfr: TPdfRConformance وTPdfRValidationResult وTPdfRValidationIssue وTPdfRSaveOptions. يضبط
TPdfRSaveOptions.Defaultالقيمتين StripInfoOptionalEntries وStripCatalogOptionalEntries إلى True بحيث ينتج الحاقن افتراضيًا catalog وقاموس Info مطابقين لـ §6.3 و§6.4.3؛ ويمكن للمستدعين ضبطهما إلى False للحفاظ على إدخالات المصدر، مع بقاء العلامات الأخرى مرفقة وإن لم يعد الناتج يطابق تلك البنود من PDF/R - تبقى متطلبات مستوى المحتوى من مسؤولية PDF المصدر: بنية Contents لكل صفحة (§6.5.1)، وصيغة MediaBox
[0 0 w h](§6.5.3)، وقيود المرشحات (§6.2.2 — FlateDecode فقط وCCITTFaxDecode الأحادي اللون وDCTDecode للرمادي 8-bit أو RGB)، وغياب object streams (§6.2.4)، وتخطيط الشرائط وفق §6.6. ولا يمكن فرض هذه الأمور بالمعالجة اللاحقة — فـ PDF/R subset أشد صرامة بكثير بنيويًا من معايير PDF/x الأخرى ويتطلب إنشاء بايتات المصدر بصورة صحيحة. ويكشف ValidatePdfR مسائل تنسيق الملف التي تستطيع هذه الوحدة رصدها؛ ويُستحسن إقرانه بمحقق PDF/R من TWAIN Working Group للحصول على فحص كامل لمتطلبات المحتوى - تم تحديث سلسلة TPdf.AboutInfo للإبلاغ عن الإصدار الحالي للمنتج
Version 1.33.0
- تمت إضافة دعم حقن علامات PDF/X (عائلة ISO 15930): يرقّي TPdf.SaveAsPdfX المستند الحالي إلى ملف مطابق لـ PDF/X-1a:2001 أو PDF/X-3:2002 أو PDF/X-4 عبر معالجة لاحقة لملف PDF الأساسي بتحديث تزايدي. ويغطي الحقن متطلبات مستوى تنسيق الملف التي يمكن إرفاقها بالمعالجة اللاحقة — تدفق بيانات XMP الوصفية الذي يحمل
pdfxid:GTS_PDFXVersionوpdfxid:GTS_PDFXConformanceفي PDF/X-1a وPDF/X-3، إضافة إلى وصف pdfaExtension:schemas المطابق، وقاموس معلومات المستند المعاد كتابته مع/GTS_PDFXVersionو/GTS_PDFXConformanceو/Trapped، وcatalog محدثًا مع/OutputIntents [N 0 R]يشير إلى قاموس OutputIntent يحوي/S /GTS_PDFXوملف ICC مضمن، ومصفوفة trailer/ID - أضيف TPdf.SaveAsPdfXToStream لإخراج PDF/X في الذاكرة، والاختصار
TPdf.SaveAsPdfX(FileName)الذي ينتج PDF/X-4 باستخدام OutputIntent المدمج sRGB IEC61966-2.1 (3144 bytes، وهو نفس الملف التعريفي المستخدم في SaveAsPdfA) - أضيف TPdf.ValidatePdfX لفحص علامات توافق PDF/X في مستند مفتوح: معرّف pdfxid في XMP ومطابقته لقيمة قاموس Info، ووصف مخطط امتداد pdfxid، ومصفوفة /OutputIntents مع /DestOutputProfile، ووجود Title و/ID في trailer، وحالة التشفير، ووجود xmp:CreateDate / xmp:ModifyDate. تعيد الدالة TPdfXValidationResult بمستوى التوافق المكتشف والمشكلات التي عثرت عليها
- أضيفت الخاصية TPdf.PdfXConformance لقراءة مستوى توافق المستند المفتوح (pxc1a أو pxc3 أو pxc4 أو pxcNone أو pxcUnknown) دون استدعاء ValidatePdfX صراحةً. يُحلّل نص إصدار XMP للتمييز بين مستويات التوافق الثلاثة
- تصدّر الوحدة الجديدة FPdfPdfx الأنواع TPdfXConformance (pxcUnknown/None/1a/3/4) وTPdfXTrappedState (ptUnspecified/True/False/Unknown) وTPdfXValidationResult وTPdfXValidationIssue وTPdfXSaveOptions. تستهدف
TPdfXSaveOptions.Defaultصيغة PDF/X-4 مع sRGB OutputIntent و/Trapped /False؛ ويمكن تغييرConformance، أو تمرير بيانات CMYK فيIccProfileDataلسير عمل الطباعة التجارية، أو ضبطOutputCondition/OutputConditionIdentifier/RegistryNameعلى إدخال معين في سجل خصائص ICC، مثل FOGRA39 أو GRACoL2006_Coated1v2 - متطلبات مستوى المحتوى (تضمين كل الخطوط، بدون JavaScript، بدون annotations مرئية، حظر OPI، قواعد الشفافية لـ PDF/X-1a / PDF/X-3) تبقى من مسؤولية مؤلف المستند. اقترن مع callas pdfaPilot أو Ghent PDF Workgroup Output Suite للتحقق الكامل
- تم تحديث سلسلة TPdf.AboutInfo للإبلاغ عن الإصدار الحالي للمنتج
Version 1.32.0
- أضيف دعم إدراج علامات PDF/E-1 (ISO 24517-1:2008): يحوّل TPdf.SaveAsPdfE المستند الحالي إلى ملف متوافق مع PDF/E-1 بإضافة تحديث incremental إلى PDF الأساسي. تغطي المعالجة اللاحقة متطلبات تنسيق الملف القابلة للإلحاق: تدفق XMP يحمل
pdfe:ISO_PDFEVersion = "PDF/E-1"ووصف pdfaExtension:schemas المقابل، وإعادة كتابة قاموس Document Information بالإدخال الإلزامي/ISO_PDFEVersion (PDF/E-1)وفق §5، وحقول الربط بين Info وXMP الموروثة من ISO 19005-1 §6.7 عبر §13.1 (dc:title / dc:creator / dc:description / pdf:Producer / pdf:Keywords / xmp:CreateDate / xmp:ModifyDate / xmp:MetadataDate / xmp:CreatorTool)، ومصفوفة/IDفي trailer وفق §6.2 - تمت إضافة TPdf.SaveAsPdfEToStream لإخراج PDF/E في الذاكرة واختصار
TPdf.SaveAsPdfE(FileName) - أضيف TPdf.ValidatePdfE لفحص علامات توافق PDF/E-1 في مستند مفتوح: وجود pdfe:ISO_PDFEVersion في XMP ومطابقته لقيمة Info، ووصف مخطط امتداد pdfe، وإدخال /ISO_PDFEVersion في Info، و/ID في trailer، ووجود xmp:CreateDate / xmp:ModifyDate. تعيد الدالة نتيجة منظمة تتضمن مستوى التوافق المكتشف والمشكلات التي عثرت عليها
- أضيفت الخاصية TPdf.PdfEConformance لقراءة مستوى توافق المستند المفتوح (pec1 أو pecNone أو pecUnknown) دون استدعاء ValidatePdfE صراحةً
- أنواع جديدة مُصدَّرة في الوحدة الجديدة FPdfPdfe: TPdfEConformance وTPdfEValidationResult وTPdfEValidationIssue وTPdfESaveOptions
- إعادة كتابة قاموس Info هي الأولى في مسار المعالجة اللاحقة لـ PDF/x في PDFium Delphi Component: يُعاد استخدام رقم كائن Info نفسه حتى تظل مراجع xref subsection و/Info في trailer صالحة، ويُنشأ قاموس جديد إذا لم يحتوِ trailer المصدر على /Info. وبما أن PDFium يصدر قاموس Info في كل مخرجات SaveAs، فالمسار المعتاد هو إعادة كتابة القاموس الموجود
- تبقى متطلبات المحتوى، مثل تضمين الخطوط وToUnicode CMaps ومنع بعض XObjects ومفاتيح ExtGState ونماذج XFA، مسؤولية مؤلف المستند؛ إذ يضيف SaveAsPdfE علامات تنسيق الملف دون تغيير محتوى الصفحات أو إزالة الميزات المحظورة
- تم تحديث سلسلة TPdf.AboutInfo للإبلاغ عن الإصدار الحالي للمنتج
Version 1.31.0
- تمت إضافة دعم حقن علامات PDF/UA-1 (ISO 14289-1:2014): يرتقي TPdf.SaveAsPdfUa بالمستند الحالي إلى ملف متوافق مع PDF/UA-1 من خلال معالجة لاحقة لـ PDF الأساسي بتحديث تزايدي. يغطي الحقن متطلبات مستوى تنسيق الملف التي يمكن تطبيقها بالمعالجة اللاحقة — تدفق بيانات وصفية XMP يحمل
pdfuaid:part = 1ووصف pdfaExtension:schemas المطابق، وdc:titleإلزامي، وcatalog/MarkInfo << /Marked true /Suspects false >>و/ViewerPreferences << /DisplayDocTitle true >>(يُحقن فقط عند عدم وجوده في المصدر)، وcatalog/Lang(عندما يوفر المتصل وسم BCP 47)، ومصفوفة/IDفي trailer - تمت إضافة TPdf.SaveAsPdfUaToStream لإخراج PDF/UA في الذاكرة، واختصار خيارات افتراضية
TPdf.SaveAsPdfUa(FileName)للحالة الشائعة - تمت إضافة TPdf.ValidatePdfUa: يفحص PDF مفتوحاً عن علامات توافق PDF/UA-1 (وجود StructTreeRoot وLang/ وMarkInfo /Marked true مع Suspects = false/ وViewerPreferences /DisplayDocTitle true/ ومعرف XMP pdfuaid:part ووجود dc:title وID/ في trailer وحالة التشفير) ويُرجع نتيجة مهيكلة بمستوى التوافق المكتشف ومجموعة المشكلات الموجودة
- تمت إضافة خاصية TPdf.PdfUaConformance: تُرجع مستوى توافق المستند المفتوح (puc1 أو pucNone أو pucUnknown) دون استدعاء ValidatePdfUa صراحة
- أنواع جديدة مُصدَّرة في الوحدة الجديدة FPdfPdfua: TPdfUaConformance وTPdfUaValidationResult وTPdfUaValidationIssue وTPdfUaSaveOptions
- الحقول الفارغة في TPdfUaSaveOptions (Title وAuthor وSubject وKeywords وCreator وProducer وCreationDate وModDate وDocumentId وInstanceId وLanguage) تُملأ تلقائياً عبر FPDF_GetMetaText وFPDF_GetFileIdentifier وFPDFCatalog_GetLanguage
- متطلبات مستوى المحتوى (اكتمال وسم StructTreeRoot، ونص Figure Alt، وToUnicode CMaps، وتضمين الخطوط، وغيرها) تبقى من مسؤولية مؤلف المستند — يُلحق SaveAsPdfUa علامات التنسيق فقط. يُبلغ ValidatePdfUa عن غياب StructTreeRoot كـ
pvuaiMissingStructTreeRoot - تم تحديث سلسلة TPdf.AboutInfo للإبلاغ عن الإصدار الحالي للمنتج
Version 1.30.0
- أصبح إخراج PDF/A-1b يفي بمتطلبات ISO 19005-1 (مع Cor.1:2007) للتكافؤ بين Document Information Dictionary وXMP: كل إدخال في Info dictionary يكتبه PDFium في PDF الأساسي يُعكس في حزمة XMP، بما في ذلك Title (dc:title) وAuthor (dc:creator) وSubject (dc:description وفقاً لـ Cor.1) وKeywords (pdf:Keywords) وCreator (xmp:CreatorTool) وProducer (pdf:Producer) وCreationDate (xmp:CreateDate) وModDate (xmp:ModifyDate). كما يُصدر xmp:MetadataDate
- أصبح trailer مستند PDF/A يحتوي دائماً على مصفوفة /ID (متطلب إلزامي في ISO 19005-1 6.1.3). عندما يعالج TPdf.SaveAsPdfA مستنداً مصدره يحتوي بالفعل على file identifier، تُعاد استخدام معرفات permanent وchanging بحجم 16 بايت؛ وإلا يُشتق معرف احتياطي حتمي بحجم 16 بايت من بايتات المصدر
- يتضمن XMP المحقون الآن وصف extension schema pdfaid المطلوب بموجب ISO 19005-1 6.7.8 (المستبدل بـ Cor.1) — يُعتبر pdfaid extension schema بالنسبة إلى XMP Specification 2004، لذا يجب على جميع الملفات المتوافقة الإعلان عن property names وvalue types وcategories الخاصة به في الحاوية pdfaExtension:schemas
- اكتسب TPdfASaveOptions خمسة حقول اختيارية جديدة: Producer وCreationDate وModDate (سلاسل تاريخ PDF بصيغة «D:YYYYMMDDHHmmSSOHH'mm'») وDocumentId وInstanceId (سلاسل 16 بايت لمصفوفة /ID في trailer). يملأ TPdf.SaveAsPdfA / SaveAsPdfAToStream الحقول الفارغة تلقائياً عبر FPDF_GetMetaText وFPDF_GetFileIdentifier، لذلك يستمر الكود الموجود في العمل دون تغيير
- يُبلغ TPdf.ValidatePdfA / TPdf.PdfAConformance الآن عن ثلاث مشكلات إضافية: pvaiMissingTrailerId (لا يوجد /ID في trailer) وpvaiMissingXmpDates (xmp:CreateDate أو xmp:ModifyDate مفقود) وpvaiMissingExtensionSchema (وصف extension schema pdfaid مفقود)
- تُرمَّز الأحرف غير ASCII في Title وAuthor وSubject وKeywords وCreator وProducer الآن كـ UTF-8 في حزمة XMP (يتطلب XMP Specification UTF-8)، مع الحفاظ على البيانات الوصفية متعددة اللغات عبر SaveAsPdfA
- تم تحديث سلسلة TPdf.AboutInfo للإبلاغ عن الإصدار الحالي للمنتج
Version 1.29.0
- تم تحديث مكتبات PDFium المُضمَّنة (Win32 وWin64، الإصدار القياسي وإصدار V8) إلى لقطة PDFium بتاريخ 2026-05-22، مما يُدخل إصلاحات لمسارات الانهيار في FPDFText_SetText / FPDFText_SetCharcodes وعدة تحصينات داخلية من مشروع PDFium
- تم كشف علم الحفظ الجديد FPDF_SUBSET_NEW_FONTS من PDFium في FPdfPageOps.pas، مما يتيح لمستدعي FPDF_SaveAsCopy طلب التجزئة الفرعية التلقائية لملفات الخطوط المضمَّنة الخاصة بالكائنات النصية المُضافة حديثًا. تم الآن إعادة تعريف الثوابت الحالية FPDF_INCREMENTAL وFPDF_NO_INCREMENTAL وFPDF_REMOVE_SECURITY باستخدام صيغة الإزاحة البتية من PDFium (تم الاحتفاظ بالقيمة العددية القديمة 3 باسم FPDF_REMOVE_SECURITY_DEPRECATED للحفاظ على التوافق الثنائي)
- تمت إضافة التعداد FPDF_FONT_BACKEND_TYPE (FREETYPE / FONTATIONS) والحقل المقابل m_FontLibraryType في FPDF_LIBRARY_CONFIG داخل FPdfView.pas، حتى تتمكن التطبيقات التي تُهيّئ PDFium باستخدام مُحرِّك Skia من اختيار الواجهة الخلفية للخطوط عند بدء التشغيل
- تم تحديث توقيع TFPDFPage_InsertObject ليطابق تصدير C من PDFium: تُعيد الدالة الآن FPDF_BOOL (TRUE عند النجاح، وFALSE إذا كان page_object يساوي NULL أو فشل نقل الملكية) بدلًا من void. لا تزال نداءات PDFium Delphi Component القائمة قابلة للترجمة دون تعديل، نظرًا لأن Delphi / FPC يسمحان بتجاهل قيمة الإرجاع للدالة
- تم تصحيح سلسلة TPdf.AboutInfo لتعرض الإصدار الحالي من المنتج (ظلت قديمة عند v1.27.0 منذ الإصدار 1.28.0 الذي اقتصر على الوثائق)
Version 1.28.0
- وُسّعت الوثائق داخل صفحات مرجع API بالكامل: كل خاصية وطريقة وحدث ودالة عامة لها الآن قسم Description من 3 فقرات، وقائمة Remarks، ومثال Delphi متعدد الأسطر، وقسم See Also أغنى — ويشمل ذلك أكثر من 200 صفحة كانت مقتضبة، منها عدادات TPdf وقراءة metadata والوصول إلى الخطوط والمحارف وخصائص الصفحات والسجلات المفهرسة وطرق المستند، وكامل واجهة حالة TPdfView وعرضه وأحداثه
- ضُبط تخطيط المساعدة ليتوافق مع الخط البصري الأساسي لـ losLab: توحيد أحجام h1/h2، وجمع أنماط شبكة التنقل في API داخل StyleSheet المشتركة، وإزالة تجاوزات CSS المضمّنة في Navigation.html
- تأتي الوثائق الآن مع نص برمجي مساعد (Docs\Build-Expand-Entries.ps1) يعيد توليد إثراء صفحات الإدخالات من جدول بيانات واحد لضمان صيانة قابلة للتكرار
Version 1.27.0
- تمت إضافة دعم إنشاء PDF/A-1b: تحفظ TPdf.SaveAsPdfA أي مستند مفتوح كملف متوافق مع PDF/A-1b من خلال معالجة لاحقة لملف PDF الأساسي بتحديث تزايدي يحقن تدفق بيانات وصفية XMP، و sRGB ICC OutputIntent، وفهرس مستند محدّث — كل ذلك دون الحاجة إلى واجهات DLL إضافية. يعمل على أي منصة يدعمها PDFium Delphi Component
- تمت إضافة TPdf.SaveAsPdfAToStream لإخراج PDF/A في الذاكرة
- تمت إضافة TPdf.ValidatePdfA: تتحقق من امتثال ملف PDF المفتوح لمعيار PDF/A (علامات XMP pdfaid، وجود OutputIntent مع ملف ICC مضمّن، التشفير) وتعيد نتيجة منظّمة بمستوى الامتثال المكتشف ومجموعة من المشكلات المحددة التي عُثر عليها
- تمت إضافة خاصية TPdf.PdfAConformance: تعيد مستوى امتثال المستند المفتوح حاليًا (pac1b، pac1a، pac2b، pac3b، pacNone، أو pacUnknown) دون الحاجة إلى استدعاء ValidatePdfA صراحةً
- تم تصدير أنواع جديدة: TPdfAConformance، TPdfAValidationResult، TPdfAValidationIssue، TPdfASaveOptions (في الوحدة الجديدة FPdfPdfa.pas)
- تدعم SaveAsPdfA ملف ICC مخصص عبر TPdfASaveOptions.IccProfileData؛ وعندما يُترك فارغًا، يُستخدم تلقائيًا ملف sRGB IEC61966-2.1 المدمج (HP/Microsoft، 3144 bytes)
- تم استبدال المرجع HTML المتجانس بنظام مساعدة ويب معاد هيكلته: 302 صفحة إدخال API مستقلة (صفحة لكل خاصية وطريقة وحدث ودالة عامة) تغطي TPdf و TPdfView، تحتوي كل منها على وصف كامل وجدول معاملات ومثال كود Delphi وروابط See Also
- تمت إضافة Navigation.html: فهرس تنقل API شامل في صفحة واحدة منظّم في ستة أقسام (خصائص/طرق/أحداث TPdf، وخصائص/طرق/أحداث TPdfView، والدوال العامة) مع شبكة مرنة من 5 أعمدة للمسح السريع
- تمت إعادة بناء TPdf.html و TPdfView.html بوصفها صفحات نظرة عامة مدمجة للمكوّن مع الإبقاء على أقسام مرجع الأنواع (Types، Constants، Global Variables) والارتباط الخارجي بصفحات الإدخال الفردية لجميع الأعضاء
- تمت إضافة بحث نصي كامل مدعوم بـ Search.js مع مطابقة تزايدية من جانب العميل عبر جميع الصفحات المفهرسة البالغ عددها 312
- تم تحديث جميع أشرطة التنقل على مستوى الموقع للإشارة إلى Navigation.html
Version 1.26.0
- تمت إضافة Demo/Lazarus/BatchExport، وهو نسخة LCL من عرض Delphi BatchExport في الإصدار v1.14.0. يحمل نفس مجموعة الميزات: تصدير دفعي متعدد الملفات من PDF -> JPG مع شريط تقدّم إجمالي لكل ملف، وتقدّم حالي لكل صفحة، ومدخلات DPI / الجودة / كلمة المرور، ودفعة قابلة للإلغاء التعاوني مدعومة بـ IPdfCancellationToken. يُفتح مجلد الإخراج في مدير ملفات المنصة عند انتهاء الاستخراج بنجاح
Version 1.25.0
- تمت إضافة إمكانية إعادة استخدام صفحة Form XObject إلى TPdf، مما يُمكّن من سيناريوهات العلامات المائية وتراكب القوالب و“ختم صفحة واحدة على عدة صفحات”: تصنع CreateXObjectFromPage مقبضًا قابلًا لإعادة الاستخدام من أي صفحة في مستند آخر؛ بينما تُدرج InsertFormObjectFromXObject نسخة واحدة من الصفحة المغلّفة في الصفحة الحالية. تُرجع الكائن المُدرج FPDF_PAGEOBJECT حتى يتمكن المُستدعي من تحديد موضعه / تكبيره / تدويره باستخدام FPDFPageObj_SetMatrix وأدوات TPdfMatrix المساعدة المُقدّمة في v1.9.0
- يغلّف الصف الجديد TPdfXObject بلغة Pascal مقبض FPDF_XOBJECT الخاص بـ PDFium ويغلقه تلقائيًا في الدالة الهادمة، مما يُلغي الحاجة إلى استدعاء FPDF_CloseXObject يدويًا
- تم توسيع مجموعات اختبارات الانحدار في Delphi و Lazarus إلى 147 حالة لكل منهما، ومجموعة C++Builder إلى 123 حالة، لتغطية عقود إنشاء المقبض وإدراج كائن الصفحة
Version 1.24.0
- تمت إضافة TPdf.RenderPageProgressive — وهو متغيّر قابل للإلغاء من RenderPage يقود حلقة العرض التزايدي في PDFium ويستطلع IPdfCancellationToken المُقدّم في v1.7.0 بين التكرارات، بحيث يمكن لعمليات العرض الطويلة بدقة DPI عالية أن تُجهَض في منتصف الصفحة بدلًا من حجب المُستدعي حتى الاكتمال
- يُعيد قيمة TPdfProgressiveStatus: prsDone أو prsCancelled أو prsFailed. مرّر AToken = nil للعرض حتى الاكتمال دون أي إيقاف مؤقت (وبالتالي لا احتمال لـ prsCancelled)
- يستخدم نفس مسار zero-copy السريع المُقدّم في v1.21.0 — يعرض PDFium مباشرةً في DIB الخاص بـ TBitmap الوجهة. ويُطبَّق نفس fallback القديم عندما يتعذّر تغليف DIB
- تم توسيع مجموعات اختبارات الانحدار في Delphi و Lazarus إلى 145 حالة لكل منهما، ومجموعة C++Builder إلى 121 حالة، لتغطية nil-token (الاكتمال)، والـ token المُلغى مسبقًا (prsCancelled)، والتكافؤ في وحدات البكسل مع RenderPage المتزامن على token حي
Version 1.23.0
- تمت إضافة ست طرق جديدة في TPdfView تكشف عن تحديد النص والتراجع/الإعادة في عناصر النماذج في PDFium للتطبيقات: تُعيد GetSelectedFormText النص المحدد حاليًا داخل عنصر النموذج المُركّز عليه؛ تختار SelectAllFormText كل الأحرف؛ بينما تقود FormUndo / FormRedo / FormCanUndo / FormCanRedo سجل تعديلات العنصر المُركّز عليه. كانت واجهات PDFium الأساسية مربوطة بالفعل ولكن دون نقطة دخول عالية المستوى. تتعامل كل الطرق الست بأمان عندما يكون العارض غير نشط أو لا توجد عناصر AcroForm مُركّزة في المستند
- تم توسيع مجموعات اختبارات الانحدار في Delphi و Lazarus إلى 142 حالة لكل منهما، ومجموعة C++Builder إلى 119 حالة، لتغطية عقد "عدم وجود نموذج لا تركيز" لكل طريقة جديدة
Version 1.22.0
- تمت إضافة مغلّفات تركيب الصفحات إلى TPdf: تأخذ ImportPagesByIndex مصفوفة فهارس صفرية لنسخ صفحات محددة من مستند مصدر؛ تُعيد ImportNPagesToOne نسخة TPdf جديدة تمامًا تتكون صفحاتها من تركيبات N-up من هذا المستند؛ بينما تُعيد MovePages ترتيب الصفحات في مكانها. كانت واجهات PDFium الأساسية مربوطة بالفعل ولكن دون نقطة دخول ودودة لـ Pascal
- تقبل ImportPagesByIndex مصفوفة فارغة لاستيراد كل صفحات المصدر (يعادل تمرير nil على مستوى C ABI)
- تم توسيع مجموعات اختبارات الانحدار في Delphi و Lazarus إلى 136 حالة لكل منهما، ومجموعة C++Builder إلى 115 حالة، لتغطية الاستيراد الجزئي، واستيراد المستند الكامل، وإعادة ترتيب الصفحات، وتركيب N-up المركّب
Version 1.21.0
- تحسّن أداء العرض عبر تحويل TPdf.RenderPage / TPdf.RenderTile (والمساعدات المقابلة في TPdfView) إلى مسار إخراج zero-copy. يكتب PDFium الآن مباشرةً في مخزّن DIB الخاص بـ TBitmap الوجهة بدلًا من الكتابة في مخزّن داخلي ثم نسخه صفًا بصف، مما يوفر نسخة ذاكرة بحجم width x height x 4 bytes لكل عملية عرض. التحسّن أكثر وضوحًا عند DPI عالية (لوحات المُصغرات، تصدير بجودة طباعة، تصدير دفعي)
- أُبقي على المسار القديم لكل سطر مسح كاحتياط للحالة النادرة التي لا يمكن فيها تغليف DIB الوجهة (أبعاد متطرفة، خطوة غير معتادة، OOM). السلوك متطابق على مستوى البايت بين المسارين، فقط أبطأ في مسار الاحتياط
- تم توسيع مجموعات اختبارات الانحدار في Delphi و Lazarus إلى 132 حالة لكل منهما، ومجموعة C++Builder إلى 112 حالة، لتغطية ترقية pf32bit للنقطية المُستدعية، ودورة كاملة للأبعاد، واختبار سلامة الخطوة لنقطية كبيرة
Version 1.20.0
- تمت إضافة تظليل نتائج البحث إلى TPdfView: تمسح HighlightSearchText(Text, MatchCase, MatchWholeWord) صفحة العرض الحالية وتُعيد عدد التطابقات الموجودة، وترسم قناع HighlightColor فوق كل تطابق عند كل إعادة رسم. تُزيل ClearHighlight التظليلات؛ بينما يؤدي تبديل العارض إلى صفحة مختلفة إلى مسحها تلقائيًا لأن التطابقات خاصة بكل صفحة
- قيمة HighlightColor الافتراضية هي clYellow ومُعلَنة (published) حتى تتمكن التطبيقات من تنسيق التظليل ليطابق لوحة ألوان واجهتها
- تم توسيع مجموعات اختبارات الانحدار في Delphi و Lazarus إلى 129 حالة لكل منهما، ومجموعة C++Builder إلى 109 حالات، لتغطية اللون الافتراضي، ودورة اللون الكاملة، و“مطابقات كلمات حقيقية من مادة الاختبار” مقابل نص sample.pdf، وعقد “الكلمة المفقودة تُعيد صفر تطابقات”
Version 1.19.0
- تمت إضافة خاصية FitMode إلى TPdfView بأربع قيم: pfmNone (تكبير يدوي)، و pfmActualSize (100%)، و pfmFitPage (تتسع الصفحة بأكملها في إطار العرض)، و pfmFitWidth (يتطابق عرض الصفحة مع عرض إطار العرض). يُعاد تطبيق وضع الملاءمة النشط تلقائيًا عند Resize وعند تغيير الصفحة الحالية، لذا تظل المستندات الطويلة ذات الأحجام المختلفة للصفحات مؤطّرة بشكل مثالي
- يؤدي تعيين Zoom مباشرةً إلى إلغاء وضع الملاءمة النشط (تعود FitMode إلى pfmNone)، تطابقًا مع تقليد عارض PDF القياسي حيث يؤدي كتابة قيمة تكبير إلى الخروج من Fit Page / Fit Width
- القيمة الافتراضية هي pfmNone بحيث تحتفظ التطبيقات الحالية بسلوكها الصريح للتكبير
- تم توسيع مجموعات اختبارات الانحدار في Delphi و Lazarus إلى 124 حالة لكل منهما، ومجموعة C++Builder إلى 106 حالات، لتغطية القيمة الافتراضية، ودورة الوضع الكاملة، و fit-page بإنتاج تكبير حقيقي على مستند مُحمَّل، وأن التكبير اليدوي يلغي وضع الملاءمة
Version 1.18.0
- تمت إضافة خاصية PageColor إلى TPdfView، لفصل خلفية صفحة PDF المعروضة عن خاصية Color للعنصر التحكم المحيط. القيمة الافتراضية هي clWhite، لذا تُعرض صفحات PDF الآن بلون ورقي أبيض بغض النظر عن سمة التطبيق المضيف. تستطيع العارضات في الوضع الداكن الآن إبقاء منطقة التمرير داكنة مع ترك صفحة PDF الفعلية بيضاء (أو أي لون يختاره التطبيق)
- تغيير في السلوك: التطبيقات التي كانت تضبط TPdfView.Color لإعادة تلوين صفحة PDF يجب أن تضبط PageColor بدلًا منها. تتحسن التجربة الافتراضية للحالة الشائعة (صفحات بيضاء على خلفيات تحكم ذات سمة) دون أي تغيير في الكود
- تم توسيع مجموعات اختبارات الانحدار في Delphi و Lazarus إلى 120 حالة لكل منهما، ومجموعة C++Builder إلى 103 حالات، لتغطية القيمة الافتراضية ودورة اللون الكاملة
Version 1.17.0
- تمت إضافة مفاتيح تعطيل إدخال المستخدم إلى TPdfView بحيث يمكن للتطبيقات التي تضمّن العارض في kiosks أو لوحات المعاينة أو السياقات للقراءة فقط تعطيل إيماءات التنقل دون subclassing: تتحكم AllowUserPageChange في اختصارات لوحة المفاتيح الجديدة PgUp / PgDn / Ctrl+Home / Ctrl+End؛ وتتحكم ChangePageOnMouseScrolling في القفز بين الصفحات بعجلة الفأرة الجديدة لأعلى/أسفل؛ بينما تكون AllowUserTextSelection محجوزة لمسار تحديد النص بسحب الفأرة المستقبلي. القيمة الافتراضية لجميعها هي True بحيث تترقّى التطبيقات الحالية دون أي تغيير في السلوك
- يتخطى التنقل بين الصفحات بعجلة الفأرة Ctrl+wheel بحيث يمكن للتطبيقات الاحتفاظ بـ Ctrl+wheel للتكبير
- تم توسيع مجموعات اختبارات الانحدار في Delphi و Lazarus إلى 118 حالة لكل منهما، ومجموعة C++Builder إلى 101 حالة، لتغطية القيم الافتراضية ودورة المفتاح الكاملة
Version 1.16.2
- تم توسيع تغطية اختبارات انحدار TPdfView لنقرات روابط التعليقات التوضيحية عندما تختلف صفحة العارض عن صفحة TPdf المرتبطة، باستخدام مسار نقرة فأرة حقيقي بلا واجهة عبر Delphi و Lazarus و C++Builder
- تشغّل مجموعتا Delphi و Lazarus الآن 114 حالة لكل منهما، وتشغّل C++Builder الآن 99 حالة
Version 1.16.1
- تم إصلاح معالجة نقر الروابط في TPdfView بحيث تستخدم الإجراءات التلقائية للتعليقات التوضيحية والروابط الإلكترونية الصفحةَ المعروضة حاليًا في العارض، حتى عندما يكون مكوّن TPdf المرتبط متوقفًا على صفحة مختلفة
- تم تحصين TPdfThumbnailView ضد مراجع Pdf المعلّقة عند تدمير مكوّن TPdf المرتبط
- تمت إضافة تغطية انحدار لعمر مرجع المُصغّرات؛ تشغّل مجموعتا Delphi و Lazarus الآن 113 حالة لكل منهما، وتشغّل C++Builder الآن 98 حالة
- تم مزامنة README ووثائق الاختبار ومحتوى البحث/الفهرس في HTML Help ومخرجات حِزَم C++ المُولَّدة مع تحديثات الدمج من v1.7.0 حتى v1.16.0
Version 1.16.0
- تمت إضافة عرض Delphi PrintDialog جديد (Demo/Delphi/PrintDialog) يركّز على الطباعة بترتيب N-up (1 / 2 / 4 / 9 صفحات لكل ورقة) مع تصفية الصفحات الفردية / الزوجية، والعرض بتدرّج رمادي، وحدود اختيارية بعرض 1 بكسل للخلية. وهو مرافق صغير متعمَّد لعرض PrintPDF القائم، الذي يغطي بالفعل المعاينة والملفات الأخيرة والتكبير والقياس
Version 1.15.0
- تم إضافة مكوّن جديد TPdfThumbnailView (وحدة FPdfThumbnail) يعرض مُصغّر صفحة واحد لكل صف في لوحة جانبية قابلة للتمرير مع تظليل التمرير فوق العنصر والتحديد ونقر للتنقل. مُصمَّم ليجلس بجانب TPdfView بحيث يتمكن المستخدمون النهائيون من تصفّح مستند طويل حسب الصفحة
- المكوّن مسجّل في علامة تبويب اللوحة losLab جنبًا إلى جنب مع TPdf و TPdfView؛ الخصائص الرئيسية: Pdf، CurrentPageIndex، ThumbnailWidth، ThumbnailHeight، TextColor، HoverColor، SelectionColor، BorderColor، والحدث OnPageClick
- تم توسيع مجموعات اختبارات الانحدار في Delphi و Lazarus إلى 112 حالة لكل منهما، ومجموعة C++Builder إلى 97 حالة، لتغطية القيم الافتراضية، ودورة حجم المُصغّر الكاملة، وقصّ القيم القصوى، ودورة اللون الكاملة، وإسناد معالج الأحداث
Version 1.14.0
- تمت إضافة عرض Delphi BatchExport جديد (Demo/Delphi/BatchExport) يوضح كيفية تحويل العديد من ملفات PDF إلى JPG في تمرير واحد باستخدام TPdf.LoadCustomDocument للتحميل المتدفق، و IPdfCancellationToken للإلغاء التعاوني، وأشرطة تقدّم إجمالية لكل ملف + لكل صفحة. يستخدم العرض مثيل TPdf واحد لكل ملف (PDFium نفسه ليس آمنًا للخيوط) ويفتح مجلد الإخراج في Explorer عند انتهاء الاستخراج بنجاح
Version 1.13.0
- تمت إضافة طبقة واجهة عرض غير متزامن إلى TPdfView من خلال ثلاث خصائص جديدة: AsyncRendering و LoadingText و LoadingColor. عندما تكون AsyncRendering مساوية لـ True يرسم مسار رسم الصفحة الواحدة مؤشرًا صغيرًا “Loading...” فوق الصفحة المعروضة بحيث تشترك التطبيقات التي تستخدم عاملًا خاصًا بها لعمليات العرض الطويلة في تأثير بصري متّسق
- تحافظ القيم الافتراضية على السلوك الحالي: AsyncRendering هي False، لذا التطبيقات التي لا تختار التفعيل لا ترى أي تغيير بصري
- توضّح الوثائق أن PDFium نفسه ليس آمنًا للخيوط — ولفعليًا تفريغ العرض إلى عامل، يجب على المُستدعي الإبقاء على TPdf واحد لكل عامل؛ ويُظهر عرض التصدير الدفعي القادم هذا النمط
- تم توسيع مجموعات اختبارات الانحدار في Delphi و Lazarus إلى 106 حالات لكل منهما، ومجموعة C++Builder إلى 93 حالة، لتغطية القيم الافتراضية ودورة الخصائص الثلاث الكاملة
Version 1.12.0
- تمت إضافة معالجة روابط مدفوعة بالنقر إلى TPdfView. تتحكم خاصية LinkOptions الجديدة في السلوك التلقائي لأربعة أنواع من إجراءات روابط PDF: goto (قفزة صفحة)، و URI (ShellExecute)، و launch (ShellExecute)، و embedded GotoR (محجوز). تُمكّن القيم الافتراضية loAutoGoto و loAutoOpenURI؛ بينما تبقى loAutoLaunch و loAutoEmbeddedGoto معطّلة بحيث لا يمكن لنقرة عابرة تشغيل برنامج اعتباطي
- تمت إضافة حدثَي OnAnnotationLinkClick و OnWebLinkClick اللذين يُطلقان قبل أي إجراء تلقائي ويسمحان للتطبيقات بفحص الرابط ووضع علامة Handled عليه أو إعادة توجيهه (مثلًا، إلى مطالبة أمان)
- يعمل كشف نقر الروابط فقط عندما تكون الإيماءة نقرة بدلًا من سحب، باستخدام مرساة MouseDown جديدة بحيث تستمر إيماءات التحريك في التدفق عبر مسار التمرير الحالي دون تغيير
- تم توسيع مجموعات اختبارات الانحدار في Delphi و Lazarus إلى 102 حالة لكل منهما، ومجموعة C++Builder إلى 91 حالة، لتغطية LinkOptions الافتراضية، ودورة الضبط الكاملة، وإسناد معالج الأحداث
Version 1.11.0
- تمت إضافة لمسات بصرية إلى TPdfView: ترسم خصائص PageShadowSize و PageShadowColor و PageBorderColor ظلًا منسدلًا اختياريًا أسفل مستطيل الصفحة وحدًا بعرض بكسل واحد حولها. تحافظ القيم الافتراضية على المظهر المسطح السابق (PageShadowSize = 0؛ يُرسم الحد بقيمة clBlack الافتراضية لكنه يندمج في الخلفية البيضاء الافتراضية حتى يغيّر المُستدعي الألوان)
- تمت إضافة خاصية SmoothScroll كعلامة اشتراك اختياري لرسم متحرّك تزايدي للتمرير في المستقبل؛ تعمل دورة الخاصية الكاملة اليوم وتم توصيلها بحيث تستطيع التطبيقات الاحتفاظ بالتفضيل، بينما لا يزال جانب العرض يستخدم سلوك التمرير الفوري الحالي
- تم توسيع مجموعات اختبارات الانحدار في Delphi و Lazarus إلى 98 حالة لكل منهما، ومجموعة C++Builder إلى 89 حالة، لتغطية القيم الافتراضية، ودورة الخصائص الكاملة، وقصّ حجم الظل السالب
Version 1.10.0
- تمت إضافة إدراج صور مباشر من خلال أحمال زائدة (overloads) جديدة لـ TPdf.AddImage و TPdfView.AddImage تأخذ إما مسار ملف أو TBitmap، إضافةً إلى AddPicture المستندة إلى TPicture الموجودة سلفًا. تتعرّف AddImage(FileName) على أي تنسيق مُسجَّل لدى وحدات الرسوميات VCL أو LCL (BMP، PNG عبر وحدة PngImage، JPG، إلخ) وتمرّ عبر نفس خط الأنابيب الذي تستخدمه AddPicture بحيث يكون السلوك متطابقًا
- تتخطى AddImage(TBitmap) الوسيط TPicture، مما يُبسّط على المُستدعين الذين يحملون بالفعل TBitmap من أعمال العرض أو التوليد الدفعي
- تم توسيع مجموعات اختبارات الانحدار في Delphi و Lazarus إلى 92 حالة لكل منهما، ومجموعة C++Builder إلى 84 حالة، لتغطية إدراج النقطية، وحدود كائن الصفحة، ورفض النقطية nil، وتحميل ملف BMP
Version 1.9.0
- تمت إضافة دعم مصفوفة تحويل عالية المستوى من خلال صف TPdfMatrix الجديد في وحدة FPdfMatrix. يغلّف TPdfMatrix FS_MATRIX الخاص بـ PDFium بواجهة OO لـ Translate و Scale و Rotate و HorizontalFlip و VerticalFlip و CentralFlip و Skew و Multiply، مناسبة لتركيب التحويلات قبل تمريرها إلى FPDFPageObj_SetMatrix وواجهات PDFium المشابهة
- تأخذ TPdfMatrix.Multiply لقطة صحيحة لعناصر المصفوفة الستة قبل حساب قيم الصف الجديدة، مما يصلح مشكلة كامنة كانت فيها تطبيقات Pascal البديلة تكتب فوق العناصر السابقة خلال نفس الاستدعاء وتنتج نتائج خاطئة لأي تركيب يتجاوز الإزاحة البحتة
- تم توسيع مجموعات اختبارات الانحدار في Delphi و Lazarus إلى 88 حالة لكل منهما، ومجموعة C++Builder إلى 81 حالة، لتغطية الهوية، وإعادة التعيين، والإزاحة / التكبير / الانعكاس، وترتيب التركيب بعد الضرب، وحالة انحدار Multiply
Version 1.8.0
- تمت إضافة تحميل تدفق عند الطلب من خلال الطريقة الجديدة TPdf.LoadCustomDocument(AStream, AOwnsStream) وصف TPdfStreamAdapter المساعد، مدعومة بـ FPDF_LoadCustomDocument الخاصة بـ PDFium. يقرأ PDFium الآن كتلًا من TStream المُقدَّم فقط عند الحاجة، لذا لم تعد ملفات PDF الكبيرة جدًا أو البعيدة تتطلب نسخة في الذاكرة مسبقًا
- تمت إضافة ملكية تدفق اختيارية: يؤدي تمرير AOwnsStream = True إلى تسليم عمر TStream إلى TPdf، الذي يُحرّره عند تشغيل UnloadDocument
- تم توسيع مجموعات اختبارات الانحدار في Delphi و Lazarus إلى 79 حالة لكل منهما، ومجموعة C++Builder إلى 75 حالة، لتغطية التحميل المتدفق عبر TFileStream، وتنظيف التدفق المُمتلَك، وعقد بقاء التدفق المُمتلَك خارجيًا بعد unload
Version 1.7.0
- تمت إضافة أوّليات إلغاء غير متزامن تعاوني في وحدة FPdfAsync الجديدة، تكشف عن IPdfCancellationToken / IPdfCancellationTokenSource ومُفرد PdfNoCancellationToken قابل لإعادة الاستخدام بحيث يمكن لتدفقات عمل العرض والتصدير طويلة المدى دعم دلالات إلغاء نظيفة من واجهة المستخدم
- تمت إضافة مُساعد خفيف TPdfFuture<T> يقوم بتشغيل عامل على خيط في الخلفية ويُرسل مغلف TPdfFutureResult<T> إلى الخيط الرئيسي، بحيث يميّز بين حالات النجاح والإلغاء والفشل
- تم توسيع مجموعات اختبارات الانحدار في Delphi و Lazarus إلى 76 حالة لكل منهما، ومجموعة C++Builder إلى 73 حالة، بتغطية مشتركة لحالة الإلغاء، والإلغاء مكرر النتيجة، وتوزيع الاستدعاءات، والتسجيل بعد الإلغاء
Version 1.6.10
- أضيف TPdf.PrintPageRanges للوصول من واجهة التطبيق عالية المستوى إلى تفضيلات نطاقات الطباعة في عارض PDF، وإرجاع نطاقات صفحات يبدأ ترقيمها من واحد
- تمت إضافة TPdf.SetFormFieldFlags / SetFormFieldFlagsAt ومساعدات TPdfView المطابقة بحيث تتمكن التطبيقات من تحديث أعلام حقول AcroForm عبر الواجهة العامة، بما في ذلك تغطية أعلام كلمة المرور والاختيار المتعدد
- تم تحصين تغطية ABI لربط PDFium من أجل FPDF_DWORD بحجم Windows، واستدعاءات FPDF_FILEACCESS، وحقول فتحة embedder الخاصة بـ V8
Version 1.6.9
- تمت إضافة روابط عرض Skia منخفضة المستوى لواجهات FPDF_RenderPageSkia و FPDF_FFLDrawSkia المُصدَّرة حديثًا في PDFium DLLs القياسية و V8 المرفقة
- تم توسيع فحوصات تغطية الربط العامة بحيث يتحقق تحميل DLL القياسي و V8 الآن من نقاط دخول العرض Skia جنبًا إلى جنب مع فحوصات إمكانيات V8/XFA الموجودة
Version 1.6.8
- تمت إضافة TPdf.SetTextPositions و TPdfSingleArray لتعيين مواضع كل حرف على كائنات نصية موجودة من خلال واجهة FPDFText_SetPositions المُصدَّرة حديثًا
- تمت ترقية FPDFText_SetPositions إلى ربط مطلوب لـ PDFium DLLs المرفقة الحالية، مع التأكيد على أن نقاط دخول عرض Skia تبقى غير متاحة لأن DLLs لا تصدّرها بعد
- تم توسيع مجموعات اختبارات الانحدار في Delphi و C++Builder و Lazarus إلى 65 حالة لكل منها مع تغطية مواضع النص
Version 1.6.7
- تمت إضافة وصول عالي المستوى TPdf إلى إجراءات JavaScript في name-tree المستند، وإعادة أسماء الإجراءات والنصوص البرمجية من خلال JavaScriptAction و JavaScriptActions
- تمت إضافة TPdf.FileIdentifier لقراءة معرّفات trailer الدائمة والمتغيّرة كـ TBytes ثنائية دون بايت الإنهاء الخاص بـ PDFium
- تمت إضافة TPdf.PageBox و GetPageBox و SetPageBox لـ MediaBox و CropBox و BleedBox و TrimBox و ArtBox على الصفحة الحالية
- تم التأكيد على أن PDFium DLLs المرفقة الحالية تترك فقط نقاط دخول عرض Skia غير متاحة في وقت التشغيل لأن تلك الصادرات غير موجودة
- تم توسيع مجموعات اختبارات الانحدار في Delphi و C++Builder و Lazarus إلى 64 حالة لكل منها مع تغطية JavaScript المستند، ومعرّف trailer، وصندوق الصفحة
Version 1.6.6
- تمت إضافة دعم وقت تشغيل لـ PDFium DLL الممكَّن بـ V8 المرفق. يحدد ضبط EnableV8Engine قبل التحميل الآن pdfium.v8.dll من شجرة DLLs\Win32 أو DLLs\Win64 ويكشف عن ربط V8/XFA-only عندما يوفّرها DLL المُحمَّل
- تمت إضافة V8FeaturesAvailable و XfaBStrHelpersAvailable و GetRecommendedV8Flags وروابط اختيارية منخفضة المستوى لـ FPDF_BStr_* و FPDF_GetRecommendedV8Flags و FPDF_GetArrayBufferAllocatorSharedInstance
- تم جعل FPDFText_SetPositions اختياريًا بحيث يستمر تحميل PDFium Delphi Component مع PDFium DLLs التي لا تصدّر مُحدّد مواضع النص التجريبي ذاك
- تم توسيع مجموعات اختبارات الانحدار في Delphi و C++Builder و Lazarus إلى 61 حالة لكل منها مع تغطية إمكانيات DLL القياسي و V8