تحويل PDF محمَّل إلى PDF/A-4 حفاظًا على النص والمتجهات
HPDFArchivalConversion تقدم ملف حفظ للمستندات المحمَّلة التي تستطيع خطوطها المرئية وفضاءات ألوانها وموارد تصييرها إلبال PDF/A-4 دون استبدال محتوى صفحاتها
المحوّل يحفظ معاملات النص الأصلية والمسارات المتجهة والصور وهندسة الصفحات وطبقات OCR النصية القائمة، ويسطّح مظاهر التعليقات وwidgets العادية المرئية إلى Form XObjects متجهة، ويصلح مشكلات metadata وبنية مدعومة، ويتحقق من النتيجة المسلسلة قبل النشر
هذا الملف لا يرستر صفحة أبدًا: RasterizedPages تبقى صفرًا، بما يشمل عندما يصيّر OCR bitmap تعرفًا مؤقتًا ويُلحق نصًا خفيًا قابلًا للبحث
قبول runtime يغطي Delphi بـ Win32 وWin64; وFPC على Windows يترجم التنفيذ من مصادر طازجة، والرؤوس العامة المولَّدة تترجم بـ C++Builder بـ Win32 وWin64x
نقاط الدخول
function HPDFConvertLoadedToPDFA4Preserving(Source: THotPDF;
Destination: TStream; const SRGBProfile: TBytes;
const Options: THPDFArchivalPreservationOptions;
out Report: THPDFArchivalPreservationReport): Boolean;
function HPDFConvertLoadedToPDFA4PreservingFile(Source: THotPDF;
const TargetFileName: string; const SRGBProfile: TBytes;
const Options: THPDFArchivalPreservationOptions;
out Report: THPDFArchivalPreservationReport): Boolean;
حمّل المصدر أولًا وأبقِ أي مسار إدخال مملوك للمستدعي حيًا وأعطِ المحوّل وصولًا حصريًا للمستند أثناء العملية
Options := THPDFArchivalPreservationOptions.Default;
if not HPDFConvertLoadedToPDFA4PreservingFile(Source, TargetFileName,
SRGBProfile, Options, Report) then
raise Exception.Create(Report.Conversion.Diagnostic);
إثبات الحفظ
المحوّل يأخذ snapshot للرسم البياني الحالي المعدَّل للمصدر تحت معاملة رسم بياني ويتراجع عن المصدر بعد التسلسل، ثم يُجري كل عمل التحويل على استنساخ محمَّل مستقل
مسارات محتوى الصفحات المفكوكة الأصلية يجب أن تبقى مطابقة بالبايتات وقابلة للوصول من صفحاتها الأصلية بترتيبها الأصلي بعد إعادة تحميل المخرج
أشجار موارد الصفحات وأشجار موارد المظاهر العادية المحفوظة تُجوب بحدود كائنات وتكرار؛ وبرامج الخطوط المضمّنة وخرائط ToUnicode والصور وملفات ICC وForm XObjects المتداخلة تحفظ حمولاتها المرمَّزة الأصلية متحققًا منها بـ SHA-256 متدفقًا وفحصًا لاستمرار الوصول إليها من صفحات المخرج
مسارات المحتوى المستقلة تحيط معامِلات الصفحات الأصلية بحواجز حالة رسومية وتحمل معامِلات مظاهر ملحقة، متجنبةً مسار الإلحاق أحادي المسار الأصلي الذي سيعيد كتابة مسار محتوى أصلي
TextAndVectorContentPreserved تصير true فقط بعد اجتياز تحقق مخرج أصلي وفحوص الحفظ؛ وتُمسح عندما يفشل التحويل أو النشر الملفي
معالجة المظاهر
- مظاهر
AP/Nالعادية المرئية تُخطط من BBox وMatrix للنموذج إلى Rect التعليق بتسطيح تعليقات أصلي محفظًا خطوطها ومواردها الخاصة - أعلام Invisible وHidden وNoView تمنع التصبغ حتى عند وجود مظهر عادي قائم؛ وتعليقات Popup تُزال دون تصبغ
- روابط بلا حد وبلا مظهر عادي تُزال دون تصبغ فقط عندما يؤسس حد صريح بعرض صفري أنها بلا حد مرئي
SynthesizeMissingAppearancesتقصّر افتراضيًا إلى true وتستدعي توليد مظاهر markup أو حقول أصليًا؛ والأصناف الفرعية غير المدعومة أو المستطيلات غير الصالحة أو التوليد الفاشل يرفض التحويل- مظاهر نصية مفقودة تدعم قيم ASCII بترميز خط أصلي متوافق؛ والقيم النصية السداسية عشرية أو Unicode أو المقنّعة تتطلب مظهرًا عاديًا صريحًا
- المظاهر النصية المُصنَّعة تُفحص مقابل قيم مصادرها في نص قابل للبحث معاد تحميله بعد تقنين الفراغات؛ وترميز خط غير متوافق يرفض النشر
تزويد مظهر عادي قائم يدعم نصًا بخط مضمّن اعتباطيًا ممثلًا صحيحًا مسبقًا في ذلك المظهر، بما يشمل Unicode; والمحوّل يحفظ ذلك المظهر بدلًا من استبدال خط نظام
التسطيح يزيل تفاعل التعليقات والحقول القابلة للتحرير والحسابات والأفعال وحقول التواقيع مع حفظ المظاهر المرئية؛ وكل تعليق متأثر وكل مظهر مُصنَّع ينتجان مدخل فقدًا بصفحته المصدرية وفهرس تعليقه ورقم كائنه عند توفره
الألوان والخطوط والفقد الصريح
وسيط ICC الإلزامي ملف sRGB matrix/TRC مقبولًا من مُدقِّق الأرشفة القائم؛ وكل ملف مخرجات قائم يجب أن تكون بايتاته المفكوكة مطابقة تمامًا للملف المقدَّم وإلا رُفض التحويل لتجنب إعادة تفسير حالة المخرجات القائمة
المحوّل يضيف output intent بـ PDF/A وsRGB فقط عند الحاجة ويزامن المُسلسل الفعلي إلى ترويسة PDF 2.0 ويستدعي إصلاح metadata وبنية أساسيًا لـ PDF/A-4 محدود السقف
هو لا يضمّن برامج خطوط مرئية مفقودة ولا يعيد ترميز النص الأصلي ولا يعيد تلوين معامِلات DeviceCMYK ولا يستبدل حالة مخرجات قائمة ولا يسطّح شفافية صفحات إلى bitmap; ونتائج preflight الأصلية غير المحلولة ترفض النشر
المصادر المشفرة يجب أن تفك تشفيرها قبل التحويل؛ وحقول التواقيع تتطلب AllowSignatureInvalidation صريحة وملفات مضمّنة قائمة تتطلب RemoveEmbeddedFiles صريحة لأن هذا الملف يستهدف PDF/A-4 الأساسي
Losses تبلّغ أيضًا إبطال التواقيع وإزالة الملفات المضمّنة وإزالة قواميس Info القديمة وإزالة metadata كتالوج أو عرض محظورة
XMP القائمة تُحفظ عندما تكون مدعومة؛ وعند توليد metadata تُنقل معلومات العنوان والمؤلف والموضوع والكلمات المفتاحية المدعومة، بينما حقول Info القديمة الاعتباطية لا يُعد بوصولها
OCR والميزانيات
AddOCRToImagePages تقصّر افتراضيًا إلى false؛ وتفعيلها يتعرف صفحاتًا بلا نص قابل للاستخراج ويُلحق نصًا خفيًا دون استبدال المحتوى الأصلي أو طبقات OCR القائمة
اضبط OCREngine إلى محرك تطبيقي أو اتركها nil لمحرك OCR المدمج المحدود السقف لـ ASCII، وتبقى تغطية لغته وطباعته تغطية ملف التعرف المدمج
OCROptions تتحكم في دقة التعرف وميزانيات الكلمات، بينما يفرض المحوّل تخطي الصفحات ذات النص وحفظ طبقات OCR القائمة وحذف مجموعة optional-content جديدة
Limits تستخدم THPDFArchivalConversionOptions.Default لعدد الصفحات وعدد الكائنات وبايتات المخرج المُهيأ وعمل مسار فردي وعمل مسار تراكمي وإلغاء ونقاط فحص تزامنية؛ وحدود بكسل raster تسري فقط عندما يصيّر OCR bitmaps التعرف
افتراضات إضافية هي 1,024 مدخل فقد و1,048,576 وحدة شيفرة نص مستخرجة أو متوقعة و4,000,000 token محتوى لكل جولة تحقق أصلية
حساب hash لحمولات الموارد يعد البايتات المرمَّزة مقابل ميزانيات عمل المسارات نفسها؛ وتحقق المصدر والمخرج كلاهما يستهلك عملًا تراكميًا، فقد تتطلب مجموعات مسح كبيرة رفعًا صريحًا لـ MaxTotalDecodedBytes رغم أن التحقق من الموارد يستخدم مخزن hash ثابتًا بـ 64 KiB
الميزانيات تسري بعد تحميل المصدر وتحدد سقوف snapshots المحوّل والمخرج المُهيأ منفصلين؛ وهيّئ حدود المحمِّل عند قبول إدخال غير موثوق
النشر والتحقق
واجهة المسار تتطلب وجهة قابلة للطلب فارغة عند الموضع الصفري وترفض aliases المصدر؛ وهي تنسخ البايتات المُهيأة فقط بعد نجاح إعادة التحميل والتحقق الأصلي وفحوص الحفظ وفحوص الإلغاء
فشل كتابة وجهة يطلق استعادة بأفضل جهد؛ ومسار مخصص اعتباطي يمكنه رفض تلك الاستعادة، فاستخدم نقطة دخول الملف للنشر الملفي الذري
واجهة الملف تتفحص aliases المصدر وتنشئ ملفًا مؤقتًا حصريًا بجانب الهدف وتفرغه وتستبدل الهدف بـ MoveFileEx فقط بعد اجتياز كل الفحوص؛ والفشل السابق يحفظ هدفًا قائمًا ويزيل الملف المؤقت
InitialValidationIssues وRepair وConversion.ValidationIssues وتفاصيل OCR وأعداد المسارات والنص المستخرج والفقد الصريح تبقى متاحة للفحص
التحقق الأصلي يغطي قواعد PDF/A-4 لـ HotPDF المدعومة وليس تصديقًا شاملًا لمستندات PDF اعتباطية؛ وقبول التراجع يستخدم إضافيًا فحوص pypdf وMuPDF المستقلة إضافة إلى تحقق veraPDF بـ PDF/A-4 على أرتيفكتات المظاهر المولَّدة وOCR الأصلي
تراجع corpus حقيقي يشمل أدلة Word وكتالوجات مكتبات بخطوط مضمّنة ومجموعة مسح صينية من 380 صفحة، بينما تقرير تجارة بخطوط غير مضمّنة ومحتوى DeviceCMYK حالة رفض صريحة
أوامر التراجع
powershell -File Tests/Delphi/Run-ArchivalPreservationTests.ps1 -Platform Win32
powershell -File Tests/Delphi/Run-ArchivalPreservationTests.ps1 -Platform Win64
python Tests/Delphi/Fixtures/ArchivalPreservation/verify_preserving_output.py
verapdf --format xml --flavour 4 Tests/Delphi/generated/ArchivalPreservation/appearance.pdf Tests/Delphi/generated/ArchivalPreservation/ocr.pdf Tests/Delphi/generated/ArchivalPreservation/native-appearance.pdf
مُشغِّل Delphi يكبح فتح العارض ويتضمن مصادفات التراجع للحفظ والرسترة القائمة معًا؛ وقبول veraPDF المستقل يستخدم ملف تحقق PDF/A-4 الفعلي
مواضع مرتبطة
تحويل الأرشفة النقطي يقدم ملفًا منفصلًا بفقد صريح للنص والمتجهات الأصلية عندما يكون التصيير الأصلي مدعومًا