احصل على عدد الصفحات واستخراج معلومات المستند باستخدام GroupDocs.Editor

مقدمة

في هذا الدرس الشامل ستتعلم كيفية get page count واستخراج معلومات مفصلة عن المستند — بما في ذلك التنسيق والحجم وحالة التشفير — باستخدام GroupDocs.Editor لـ .NET. سواءً كنت تبني نظام إدارة مستندات، أو محرك تقارير، أو خط أنابيب تحويل تلقائي، فإن فهم بيانات التعريف للملف هو الخطوة الأولى نحو معالجة موثوقة. دعنا نستعرض سير العمل بالكامل، من تحميل الملف إلى التخلص الآمن من الموارد.

إجابات سريعة

  • كيف يمكنني استرجاع عدد الصفحات لمستند؟
    استدعِ editor.GetDocumentInfo().PageCount بعد تحميل الملف باستخدام Editor.
  • ما هي صيغ الملفات المدعومة لاستخراج بيانات التعريف؟
    أكثر من 50 صيغة، بما في ذلك DOCX، XLSX، PPTX، PDF، TXT، وHTML.
  • هل يمكنني استخراج بيانات التعريف من الملفات المحمية بكلمة مرور؟
    نعم — قدم كلمة المرور عند إنشاء كائن Editor.
  • هل أحتاج إلى تحرير الموارد يدويًا؟
    بالطبع؛ يجب دائمًا استدعاء editor.Dispose() أو وضع المحرر داخل كتلة using.
  • ما هو إصدار GroupDocs.Editor المطلوب؟
    أحدث إصدار ثابت (v23.12+ في وقت الكتابة) يدعم جميع الميزات المعروضة.

ما هو “get page count” في GroupDocs.Editor؟

GetDocumentInfo() هي طريقة تُعيد كائن DocumentInfo يحتوي على عدد صفحات المستند، التنسيق، الحجم، وغيرها من بيانات التعريف. هذه الاستدعاءة الواحدة تمنحك نظرة فورية دون الحاجة إلى تحليل الملف يدويًا. باستخدام هذه الطريقة تتجنب تحميل المستند بالكامل في الذاكرة، مما يحسن الأداء خاصةً للملفات الكبيرة ويقلل استهلاك موارد الخادم.

لماذا استخراج بيانات تعريف المستند باستخدام GroupDocs.Editor؟

يمكن لـ GroupDocs.Editor معالجة أكثر من 50 صيغة إدخال وإخراج واسترجاع بيانات التعريف للملفات حتى 2 GB دون تحميل المستند بالكامل في الذاكرة. هذه الكفاءة تقلل حمل الخادم بنسبة تصل إلى 70 % مقارنةً بتحليل المستند بالكامل، مما يجعلها مثالية للتطبيقات ذات الإنتاجية العالية.

المتطلبات المسبقة

  • C# development basics – يجب أن تكون مرتاحًا مع Visual Studio وهياكل مشاريع .NET.
  • Visual Studio 2022 (أو أي نسخة حديثة) مثبتة على جهازك.
  • GroupDocs.Editor for .NET – قم بتنزيل أحدث حزمة من صفحة التحميل.

كيف تقوم بتحميل المستند الخاص بك؟

Editor هو الفئة الرئيسية التي تمثل مستندًا وتوفر طرقًا لتحميله ومعالجته. قم بتحميل الملف المستهدف بإنشاء مثيل Editor وتمرير مسار الملف. يكتشف المحرر التنسيق تلقائيًا، لذا لا تحتاج إلى تحديد خيارات التحميل. هذا النهج يعمل مع أي نوع ملف مدعوم ويسهل الإعداد الأولي.

using System;
using GroupDocs.Editor.Metadata;

كيف تسترجع معلومات المستند؟

GetDocumentInfo() تُعيد كائن DocumentInfo يحتوي على بيانات تعريف مثل عدد الصفحات، التنسيق، الحجم، وحالة التشفير. بعد التحميل، استدعِ هذه الطريقة للحصول على الكائن. الـ DocumentInfo المُرجع يمنحك لمحة مختصرة عن خصائص الملف، مما يتيح لك اتخاذ قرارات دون الحاجة إلى مزيد من المعالجة.

string docxInputFilePath = "YourSampleDocument.docx";
Editor editorDocx = new Editor(docxInputFilePath);

كيف تحدد نوع المستند؟

DocumentType هو تعداد (enum) يوضح ما إذا كان المستند WordProcessing أو Spreadsheet أو Text. معرفة ما إذا كان الملف مستند معالجة كلمات، أو جدول بيانات، أو نصًا عاديًا يؤثر على طريقة التعامل معه لاحقًا. استخدم خاصية DocumentType لكائن DocumentInfo لاتخاذ هذا القرار وتفرع المنطق وفقًا لذلك.

IDocumentInfo infoDocx = editorDocx.GetDocumentInfo(null);

كيف تستخرج معلومات مفصلة لملفات معالجة الكلمات؟

WordProcessing يشير إلى المستندات مثل DOCX وODT وRTF التي تُعامل كملفات معالجة كلمات. إذا كان نوع المستند WordProcessing، يمكنك قراءة خصائص إضافية مثل format، extension، page count، size، وencryption flag مباشرةً من كائن DocumentInfo. هذه التفاصيل تساعدك على تخصيص خطوات المعالجة، مثل تطبيق تحويلات محددة أو فحوصات أمان.

bool isSpreadsheet = infoDocx is SpreadsheetDocumentInfo;
bool isText = infoDocx is TextualDocumentInfo;
bool isWordProcessing = infoDocx is WordProcessingDocumentInfo;
Console.WriteLine($"Is '{docxInputFilePath}' a Spreadsheet: {isSpreadsheet}");
Console.WriteLine($"Is '{docxInputFilePath}' a Textual document: {isText}");
Console.WriteLine($"Is '{docxInputFilePath}' a WordProcessing document: {isWordProcessing}");

كيف تتعامل مع مستندات الجداول والنصوص؟

Spreadsheet يرمز إلى ملفات الجداول مثل XLSX، بينما Text يمثل المستندات النصية العادية. بالنسبة لملفات الجداول (Spreadsheet) والملفات النصية العادية (Text)، لا يزال كائن DocumentInfo يوفر بيانات تعريف أساسية (الامتداد، الحجم، عدد الصفحات). قد لا تعرض بعض الصيغ عدد الصفحات، وفي هذه الحالة ستكون القيمة 0. يمكنك الاعتماد على بيانات التعريف الأخرى للمنطق اللاحق.

if (isWordProcessing)
{
    WordProcessingDocumentInfo casted = (WordProcessingDocumentInfo)infoDocx;
    Console.WriteLine($"Format: {casted.Format.Name}; Extension: {casted.Format.Extension}; Page count: {casted.PageCount}; Size: {casted.Size} bytes; Is encrypted: {casted.IsEncrypted}");
}

كيف تتعامل مع المستندات المحمية بكلمة مرور؟

Password هو سلسلة تُمرَّر إلى مُنشئ Editor لفتح الملفات المشفرة. عندما يكون المستند مشفرًا، حاول أولاً فتحه بدون كلمة مرور. إذا فشل ذلك، امسك الاستثناء ثم أعد المحاولة باستخدام كلمة المرور الصحيحة. مُنشئ Editor يقبل معامل Password لهذا الغرض، مما يتيح التعامل السلس مع الملفات المحمية.

string xlsxInputFilePath = "YourSampleDocument.xlsx";
Editor editorXlsx = new Editor(xlsxInputFilePath);
IDocumentInfo infoXlsx = editorXlsx.GetDocumentInfo(null);
bool isXlsxSpreadsheet = infoXlsx is SpreadsheetDocumentInfo;
Console.WriteLine($"Is '{xlsxInputFilePath}' a Spreadsheet: {isXlsxSpreadsheet}");
if (isXlsxSpreadsheet)
{
    SpreadsheetDocumentInfo casted = (SpreadsheetDocumentInfo)infoXlsx;
    Console.WriteLine($"Format: {casted.Format.Name}; Extension: {casted.Format.Extension}; Tabs count: {casted.PageCount}; Size: {casted.Size} bytes; Is encrypted: {casted.IsEncrypted}");
}

كيف تعالج المستندات النصية؟

DocumentInfo يوفر بيانات تعريف أساسية مثل الحجم، الامتداد، والترميز للملفات النصية. تُعامل ملفات النص (مثل .txt، .md) كتيارات بسيطة. لا يزال بإمكانك استرجاع معلومات الحجم والترميز من DocumentInfo، وهو مفيد للتحقق من سلامة الملف أو تحديد خطوط المعالجة المناسبة.

string xlsInputFilePath = "YourSampleDocument.xls";
Editor editorXls = new Editor(xlsInputFilePath);
try
{
    IDocumentInfo infoXls = editorXls.GetDocumentInfo(null);
}
catch (PasswordRequiredException)
{
    Console.WriteLine("This document is password-protected.");
}
try
{
    IDocumentInfo infoXls = editorXls.GetDocumentInfo("incorrect_password");
}
catch (IncorrectPasswordException)
{
    Console.WriteLine("The provided password is incorrect.");
}
IDocumentInfo infoXlsValid = editorXls.GetDocumentInfo("correct_password");
bool isXlsSpreadsheet = infoXlsValid is SpreadsheetDocumentInfo;
Console.WriteLine($"Password-protected document is a Spreadsheet: {isXlsSpreadsheet}");
if (isXlsSpreadsheet)
{
    SpreadsheetDocumentInfo casted = (SpreadsheetDocumentInfo)infoXlsValid;
    Console.WriteLine($"Format: {casted.Format.Name}; Extension: {casted.Format.Extension}; Tabs count: {casted.PageCount}; Size: {casted.Size} bytes; Is encrypted: {casted.IsEncrypted}");
}

كيف تتخلص من الموارد بشكل صحيح؟

Editor هو الفئة الأساسية التي تحتفظ بموارد غير مُدارة ويجب تحريرها بعد الاستخدام. لتجنب تسرب الذاكرة، يجب دائمًا تحرير مثيل Editor بعد الانتهاء من استخراج المعلومات. عبارة using هي الأنماط الأكثر أمانًا لأنها تضمن تحرير الموارد حتى في حال حدوث استثناء، مما يضمن إدارة موارد نظيفة.

string xmlInputFilePath = "YourSampleDocument.xml";
Editor editorXml = new Editor(xmlInputFilePath);
IDocumentInfo infoXml = editorXml.GetDocumentInfo(null);
bool isXmlText = infoXml is TextualDocumentInfo;
Console.WriteLine($"Is '{xmlInputFilePath}' a Textual document: {isXmlText}");
if (isXmlText)
{
    TextualDocumentInfo casted = (TextualDocumentInfo)infoXml;
    Console.WriteLine($"Format: {casted.Format.Name}; Extension: {casted.Format.Extension}; Encoding: {casted.Encoding}; Size: {casted.Size} bytes");
}

المشكلات الشائعة والحلول

المشكلةالسببالحل
PageCount returns 0الصيغة لا تدعم الترميز (مثل النص العادي)تحقق من DocumentInfo.DocumentType قبل الاعتماد على PageCount.
Unsupported file formatامتداد الملف غير معروفتحقق من أن الملف أحد الصيغ الـ 50+ المدعومة؛ وقم بتحديث GroupDocs.Editor إلى أحدث إصدار.
Password exceptionتم توفير كلمة مرور خاطئةامسك PasswordProtectedException واطلب من المستخدم إعادة إدخال كلمة المرور.
Memory spike on large filesتحميل ملفات PDF كبيرة جدًا دون التدفقاستخدم LoadOptions مع LoadOptions.LoadMode = LoadMode.Stream (متاح في الإصدارات الأحدث).

الأسئلة المتكررة

Q: ما هي أنواع المستندات التي يمكنني استخراج بيانات التعريف منها؟
A: GroupDocs.Editor يدعم ملفات معالجة الكلمات، وجداول البيانات، والعروض التقديمية، وPDF، والملفات النصية العادية — أكثر من 50 صيغة إجمالاً.

Q: كيف يمكنني استرجاع امتداد الملف؟
A: يمكنك الوصول إلى DocumentInfo.Extension بعد استدعاء GetDocumentInfo()؛ فهو يُعيد الامتداد بدون النقطة الأولى.

Q: هل يمكنني الحصول على حجم المستند بالميغابايت؟
A: نعم — DocumentInfo.Size يُعيد الحجم بالبايت؛ قسِّمه على 1,048,576 للتحويل إلى ميغابايت.

Q: هل من الآمن معالجة الملفات المحمية بكلمة مرور على الخادم؟
A: بالطبع — GroupDocs.Editor لا يكتب كلمة المرور إلى القرص ويُفرغ جميع الكائنات التشفيرية بعد الاستخدام.

Q: أين يمكنني العثور على مساعدة إضافية إذا واجهت مشاكل؟
A: يمكنك الحصول على الدعم من منتدى دعم GroupDocs.Editor.


آخر تحديث: 2026-06-01
تم الاختبار مع: GroupDocs.Editor 23.12 for .NET
المؤلف: GroupDocs

editorDocx.Dispose();
editorXlsx.Dispose();
editorXls.Dispose();
editorXml.Dispose();
Console.WriteLine("ExtractingDocumentInfo routine has successfully finished");

الدروس ذات الصلة