💡 مثال كامل يعمل متاح على GitHub:
metadata-diff-doc-versions-using-groupdocs-metadata-nodejs

المقدمة

مقارنة البيانات الوصفية هي قدرة من GroupDocs.Metadata تكشف عن التغييرات المخفية بين إصدارات المستند، مما يمكّن المدققين من التحقق من الأصالة بسرعة. عندما تحتاج الفرق القانونية إلى إثبات أن عقدًا لم يتم العبث به، فإن الخصائص غير المرئية — المؤلف، المحرر، طوابع زمنية للمراجعة — غالبًا ما تحكي القصة الحقيقية.

واجهت هذه المشكلة أثناء مراجعتي لدفعة من اتفاقيات الموردين؛ كل ملف كان يدعي نفس تاريخ الإنشاء، لكن حقول المؤلف المخفية كانت مختلفة، وكان التدقيق اليدوي سيستغرق ساعات.

لماذا البيانات الوصفية المخفية مهمة للفرق القانونية

يعتمد المتخصصون في القانون والامتثال على أدلة لا يمكن تعديلها. حتى إذا ظل النص الظاهر كما هو، فإن تغيير حقل Creator أو LastPrinted يمكن أن يشير إلى تعديلات غير مصرح بها. اكتشاف هذه التحولات مبكرًا يمنع النزاعات المكلفة ويُرضي مسارات التدقيق التنظيمية.

حلنا باستخدام GroupDocs.Metadata

GroupDocs.Metadata لـ Node.js يوفر واجهة برمجة تطبيقات واحدة تستخرج كل خاصية مدعومة، تقارن بين مراجعتين، وتنتج تقارير فرق مُنظمة. يتعامل SDK مع DOCX وPDF وXLSX والعديد من الصيغ الأخرى مباشرةً، لذا لا تحتاج إلى محللات مخصصة لكل نوع ملف.

الخطوة 1 – استخراج جميع البيانات الوصفية من مستند

المساعد أدناه يفتح ملفًا، يتجول في شجرة الخصائص بالكامل، ويعيد خريطة JavaScript بسيطة من اسم الخاصية → القيمة. يستخدم AnySpecification لالتقاط الحقول المدمجة والمخصصة على حد سواء.

/** Extract all metadata from a file */
function extractAllMetadata(documentPath) {
  const result = {};
  const metadata = new groupdocs.Metadata(documentPath);
  try {
    const properties = metadata.findProperties(new groupdocs.AnySpecification());
    for (let i = 0; i < properties.getCount(); i++) {
      const p = properties.get_Item(i);
      const name = p.getName();
      const value = valueToString(p);
      result[name] = value;
    }