العمل مع Enums

العمل مع القوائم المعدَّدة

Aspose.PDF FOSS لـ .NET يستخدم تعدادات ذات نوع قوي عبر API لتكوين سلوك المستند، مظهر الصفحة، وصيغ التحويل. بدلاً من السلاسل السحرية أو الأعداد الصحيحة، تُعبر معظم واجهات التكوين — من طريقة فتح عارض PDF للملف إلى الصيغة التي يُحفظ بها Document يُحفظ كـ — تُعبّر كقيم تعداد. تُقدّم هذه الصفحة أنواع التعداد التي ستصادفها غالبًا أثناء عملك مع المكتبة. إنها مقدمة مُنقّحة، ليست كتالوجًا شاملاً؛ للحصول على القائمة الكاملة لأنواع التعداد وكل قيمة عضو، راجع الـ API Reference.


عرض الصفحة وتخطيطها

PageMode وPageLayout هما خاصيتان في Document تتحكمان في طريقة عرض عارض PDF للمستند عند فتحه لأول مرة — سواء أظهر المخططات، المصغرات، أو تخطيط عمودي محدد.

using var doc = Document.Open("input.pdf");

// Show the outline (bookmarks) panel when the document opens
doc.PageMode = PageMode.UseOutlines;

// Display pages in two columns, first page on the left
doc.PageLayout = PageLayout.TwoColumnLeft;

doc.Save("output.pdf");

نموذج لون الصفحة

ColorType يصف نموذج لون الصفحة — RGB، CMYK، تدرج الرمادي، وما إلى ذلك. يتم إتاحته في كلٍ من Page وColor، مما يتيح لك توجيه المنطق بناءً على كيفية عرض المحتوى الفعلي للصفحة.

using var doc = Document.Open("input.pdf");
var page = doc.Pages[1];

if (page.ColorType == ColorType.Grayscale)
{
    // Apply grayscale-specific handling, e.g. skip color-profile conversion
}

Alignment

تُظهر عدة فئات HorizontalAlignment وVerticalAlignment لتحديد موضع المحتوى على الصفحة، بينما تُضيف فئات التعليقات التوضيحية TextAlignment وJustification لمحاذاة النص داخل الصندوق. Table، مثلاً، يتيح كلا محوري المحاذاة مباشرةً.

var table = new Table();
table.HorizontalAlignment = HorizontalAlignment.Center;
table.VerticalAlignment = VerticalAlignment.Center;

page.Paragraphs.Add(table);

FreeTextAnnotation (والنوع الأساسي Annotation) يتيح أيضاً Justification وTextAlignment للنص داخل التعليق التوضيحي:

if (page.Annotations[1] is FreeTextAnnotation freeText)
{
    freeText.Justification = Justification.Center;
    freeText.Alignment = TextAlignment.Right;
}

صيغ التحميل والحفظ

LoadFormat يحدد صيغة المصدر وراء فئة فرعية من LoadOptions (على سبيل المثال، HtmlLoadOptions.LoadFormat دائمًا LoadFormat.HTML)، بينما SaveFormat يختار صيغة الإخراج عند استدعاء Document.Save.

var loadOptions = new HtmlLoadOptions();
// loadOptions.LoadFormat == LoadFormat.HTML
using var doc = new Document("input.html", loadOptions);

doc.Save("output.html", SaveFormat.Html);

دوران الصفحة

Rotation يصف زاوية دوران الصفحة ويُعرض عبر Page.Rotate.

var page = doc.Pages[1];
page.Rotate = Rotation.on90;

نصائح وأفضل الممارسات

  • يفضَّل استخدام التحميل الزائد للـenum بدلاً من التحميل الزائد القائم على السلاسل أو الأعداد حيثما يوجد كلاهما — فهو يلتقط القيم غير الصالحة أثناء وقت التجميع.
  • طابق SaveFormat مع امتداد الملف الذي تمرره إلى Document.Save؛ يؤدي عدم التطابق إلى إنشاء ملف بمحتوى مضلل أو امتداد غير قابل للاستخدام.
  • استخدم الفئة الفرعية LoadOptions التي تتوافق مع تنسيق المصدر الخاص بك (مثلاً HtmlLoadOptions لـ HTML) بدلاً من الاعتماد فقط على الكشف الآلي للتنسيق.
  • قم بتعيين كل من HorizontalAlignment وVerticalAlignment معًا عند وضع الجداول أو الفقرات — ترك أحدهما على قيمته الافتراضية قد ينتج عنه موضع غير متوقع.
  • اعتبر ColorType وصفًا وليس توجيهًا: فهو يوضح كيفية نمذجة محتوى اللون للصفحة حاليًا، وليس خيارًا تقوم بتغييره لتحويل مساحات الألوان.

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

المشكلةالسببالإصلاح
الملف المحفوظ يحتوي على محتوى غير صحيح لامتدادهقيمة SaveFormat غير صحيحة تم تمريرها إلى Document.Saveمرّر قيمة SaveFormat التي تتطابق مع امتداد الملف المستهدف
تم تحميل HTML/XML/etc. المحتوى يعرض بشكل غير صحيحتم استخدام LoadOptions عام بدلاً من الفئة الفرعية الخاصة بالتنسيقاستخدم الفئة الفرعية التي تطابق تنسيق المصدر، مثلاً HtmlLoadOptions
يظهر الجدول أو التعليق غير محاذى على الصفحةتم ترك HorizontalAlignment/VerticalAlignment على الإعدادات الافتراضيةحدد كلا الخاصيتين صراحةً قبل إضافة الكائن إلى Paragraphs
يفتح ملف PDF بسلوك عارض غير متوقع (بدون لوحة المخطط، تخطيط أعمدة خاطئ)لم يتم تعيين Document.PageMode/Document.PageLayout أبداًقم بتعيين كلا الخصائص قبل استدعاء Document.Save

FAQ

ما الفرق بين PageMode و PageLayout؟

PageMode يتحكم في حالة واجهة المستخدم للعارض عند الفتح (مثلاً، ما إذا كان لوحة المخطط أو المصغرات مرئية)، بينما PageLayout يتحكم في طريقة ترتيب الصفحات (صفحة واحدة، عمود واحد، عمودين، وهكذا).

كيف أعرف أي قيمة SaveFormat يجب استخدامُها؟

اختر قيمة SaveFormat التي تتطابق مع نوع ملف الإخراج الذي تريده — مثلاً، SaveFormat.Html لإخراج HTML أو SaveFormat.Pdf لإعادة الحفظ بصيغة PDF.

هل يمكنني تعيين كل من HorizontalAlignment و VerticalAlignment على نفس الكائن؟

نعم. الفئات مثل Table تكشف عن كلتا الخاصيتين بشكل مستقل، لذا يمكنك دمجهما لتحديد موضع المحتوى على أي من المحورين.

هل يمكّنني ColorType من تحويل مساحة ألوان الصفحة؟

لا. ColorType تُبلغ عن نموذج اللون المرتبط حالياً بصفحة أو قيمة لون؛ ولا تُجري التحويل.

أين يمكنني العثور على كل enum وكل قيمة؟

هذه الصفحة تغطي أكثر الـ enums المستخدمة شيوعًا. للحصول على المجموعة الكاملة، بما في ذلك كل قيمة عضو، انظر الـ API Reference.


API Reference ملخص

Enumوصف
PageModeكيف يعرض عارض PDF المستند عند الفتح (المخططات، المصغرات، ملء الشاشة، إلخ)
PageLayoutتخطيط الصفحة المستخدم عند عرض المستند (صفحة واحدة، أعمدة، إلخ.)
ColorTypeنموذج اللون للصفحة أو قيمة اللون (RGB، CMYK، تدرج الرمادي، إلخ.)
HorizontalAlignmentمحاذاة أفقية للفقرات أو الجداول أو التعليقات التوضيحية
VerticalAlignmentمحاذاة رأسية للفقرات أو الجداول أو التعليقات التوضيحية
TextAlignmentمحاذاة النص الأفقية لصناديق التعليقات التوضيحية
Justificationمحاذاة محتوى التعليق التوضيحي النص الحر
LoadFormatمحدد تنسيق المصدر المستخدم من قبل الفئات الفرعية لـ LoadOptions
SaveFormatمحدد تنسيق الإخراج المستخدم من قبل Document.Save
Rotationزاوية دوران الصفحة، معروضة عبر Page.Rotate

انظر أيضاً

 العربية