العمل مع 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 |