مقارنة المستندات بـ JSON وABI بلغة C

قارن مستندين محمَّلين عبر THPDFJobProcessor.ExecuteLoadedOperationWithComparison أو مقبضين لـ ABI بلغة C عبر hpdf_document_compare_json_v1 أو ملفين عبر معالج مهام JSON

الأوضاع العامة

type=compare تقبل قيم mode بقيم pageCount وpageText وobjectCount وrenderedImage وfull وstructural; والافتراضي structural

الأوضاع تحفظ سلوك THPDFDocComparison الأصلي، بما يشمل محاذاة الصفحات وتواقيع الكائنات البنيوية؛ وobjectCount تقارن أيضًا بنية الصفحات والكائنات

{
  "schemaVersion": 1,
  "type": "compare",
  "mode": "full",
  "render": {"dpi": 72, "colorSpace": "rgb", "colorTolerance": 8},
  "options": {"maxDifferences": 1000, "maxStreamBytes": 1048576},
  "budget": {"memoryBytes": 268435456, "resultBytes": 16777216,
             "outputBytes": 67108864, "timeMilliseconds": 60000, "pixels": 10000000}
}

غلاف النتيجة يتضمن comparison وcomparisonComplete وidentical وdocumentUpdated=false والوقت المنقضي وحجم المخرجات؛ والمخرج الثنائي الاختياري يحتوي JSON المقارنة بلا غلافها

حدود التجوال والمسارات والقيم والفروق المحفوظة والتصيير تنتج status=incomplete وcomparisonComplete=false وidentical=false، حتى عندما تكون المجموعة الجزئية المفحوصة متساوية

مراجعة العقود

type=compare.contract تحاذي الفقرات وتكشف الانتقالات وتبلّغ إدخالات وحذفًا واستبدالًا كلمات أو جمل بسياقَيها ومواضعها

{
  "schemaVersion": 1,
  "type": "compare.contract",
  "format": "pdf",
  "side": "after",
  "options": {"granularity": "word", "ignoreRepeatedHeadersFooters": true,
              "excludedLineTexts": ["CONFIDENTIAL COPY"], "maxWorkUnits": 50000000}
}

format تقبل json أو html أو pdf; وJSON هي الافتراضية وHTML أو PDF تتطلب مسار مخرجات أو callback

أنواع التغيير هي insert وdelete وreplace وmove; وفهارس الصفحات والفقرات ذات أساس صفري وبدايات المحارف بواحد الأساس ومواضع UTF-16 والمستطيلات تغطي أسطرًا دلالية في مساحة مستخدم PDF لا رباعيات محارف دقيقة

‏PDF تنتقي side=before أو side=after وتتحقق من المستند المنتقى مقابل كل snapshot صفحة دلالية وتضيف إبرازات وتعليقات Before/After وتحفظ نسخة مراجعة وتراجع دائمًا معاملة الرسم البياني للمصدر

PDF مراجعة إعادة كتابة كاملة وتتطلب التحقق من التواقيع منفصلًا؛ والمقارنة تترك المستندات المصدرية المستعارة وتواقيعها دون تغيير

الخيارات والسقوف

‏options العامة تقبل maxObjects وmaxEdges وmaxPages وmaxDepth وmaxDifferences وmaxStreamBytes وmaxTotalStreamBytes وmaxValueBytes وmaxPathBytes

التصيير يقبل dpi وcolorSpace (rgb أو luminance) وcolorTolerance وminimumSimilarity وmaxChangedPixelRatio وtileSize وmaxChangedRegions; وعمليات callback لا تكتب خرائط حرارة إلى نظام الملفات

‏options العقود تقبل حقول boolean وmargin وsimilarity وboilerplate وresource من THPDFContractCompareOptions بأسماء camelCase؛ وgranularity إما word أو sentence

الميزانيات المشتركة هي memoryBytes وoutputBytes وresultBytes وtimeMilliseconds وpixels وobjectCount وpageCount; والخيارات تُقص إلى تلك الميزانيات

ميزانيات الذاكرة تخصص أذونات متحفظة لكلا مسارَي الفك وبكسلات التصيير وتخزين المحاذاة والمخرجات الخاصة؛ فهي حدود عمل لا سقف RSS لنظام تشغيل، ورسوم الكائنات المحمَّلة مسبقًا تبقى مملوكة للمستدعي

تخصيص JSON يُفحص بتقدير متحفظ للحجم المهرب، وقد يرفض نتيجة كان تمثيلها UTF-8 النهائي سيتسع؛ وHTML تستخدم إذن محارف متحفظًا داخل ميزانية بايتات المخرجات

فشل الميزانية يعيد حالة ABI بقيمة 8 والإلغاء يعيد الحالة 4؛ والإلغاء تعاوني عند حدود الصفحات والكائنات وكتل المسارات وكائنات التصيير وصفوف البكسلات والمحاذاة

غلاف التحكم بالأخطاء لـ ABI بلغة C له حد أقصى مستقل 8 KiB ويقص التفاصيل إلى 1,024 وحدة UTF-16 code، فيتيح الإبلاغ عن خطأ ميزانية عندما تكون ميزانية النتيجة المطلوبة أصغر من أن تحتمل استجابة خطأ

مقابض ABI بلغة C المستعارة

حمّل كل مقبض بمصدر hpdf_io_v1 الخاص به واستدعِ hpdf_document_compare_json_v1(handle_a, handle_b, operation); وتخطيطات سجلات ABI v1 والتصدير الأصلي للتنفيذ تبقى دون تغيير

operation.input_io يجب أن تكون NULL وresult_io يجب أن توفر كتابة وoutput_io الاختيارية تزوّد الأرتيفكت؛ ومفاتيح ملفات JSON بقيم input وotherInput وoutput تُرفض

كلا المصدرين المستقلين يمكنهما إعادة قراءات وصول عشوائية قصيرة، وكلتا callbackي الإلغاء تُستقصيان حتى عندما تكون كائناتهما المفكوكة مخزنة مؤقتًا؛ ويمكن تزويد نفس المقبض مرتين لالمقارنة الذاتية

أبقِ callbacks الإدخال وسياقاتها حية لعمر المقبض والاستدعاءات النشطة وسلسل العمليات على كل مقبض؛ ومراجع المقابض تُحفظ حتى تعود المقارنة

الأرتيفكتات تُبنى وتُتحقق في مخازن خاصة محدودة السقف قبل نشر callback؛ وcallbacks تفشل أثناء النشر يمكنها حفظ البايتات المقبولة مسبقًا بينما تبقى المستندات المصدرية دون تغيير

مهام الملفات

{"operations":[{"type":"compare.contract","input":"before.pdf",
  "otherInput":"after.pdf","format":"html","output":"review.html"}]}

password وotherPassword تفكان كل ملف من الملفين باستقلالية؛ ومخرج JSON يمكنه حذف مسار مخرجات والبقاء في غلاف النتيجة

مسارات المخرجات يجب أن تختلف عن كلا ملفَي المصدر، بما يشمل aliases hard-link قائمة؛ وملف مؤقت في مجلد الوجهة يُفرغ ويُنشر ذريًا بعد اجتياز كل الفحوص، محفظًا مخرجًا قائمًا عند الفشل

مواضع مرتبطة

مقارنة المستندات · المقارنة التعاقدية · تصدير مسار مشروح