کار با Enumها
کار با Enums
Aspose.PDF FOSS برای .NET از enumهای دارای نوع قوی در سراسر API خود استفاده میکند تا رفتار سند، ظاهر صفحه و فرمتهای تبدیل را پیکربندی کند. به جای رشتههای جادویی یا اعداد صحیح، اکثر سطحهای پیکربندی — از اینکه یک برنامهخوان PDF چگونه فایلی را باز میکند تا اینکه به چه فرمتایی ذخیره میشود — به صورت مقادیر enum بیان میشوند. Document این صفحه انواع enum را معرفی میکند که در هنگام کار با کتابخانه بیشترین بار با آنها مواجه میشوید. این یک مقدمهٔ منتخب است، نه یک فهرست کامل؛ برای دریافت فهرست کامل انواع enum و هر مقدار عضو، به 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، grayscale و غیره. این ویژگی هم در 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;نکات و بهترین تمرینها
- در صورت وجود هر دو، ترجیحاً از overloadهای enum به جای overloadهای مبتنی بر رشته یا عدد صحیح استفاده کنید — آنها مقادیر نامعتبر را در زمان کامپایل شناسایی میکنند.
- مقدار
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ها و تمام مقادیر را پیدا کنم؟
این صفحه شامل رایجترین enumها است. برای مجموعه کامل، شامل همه مقادیر اعضا، مراجعه کنید به API Reference.
API Reference خلاصه
| Enum | توضیح |
|---|---|
PageMode | نحوه نمایش سند توسط نمایشگر PDF هنگام باز شدن (طرحوارهها، تصویرهای کوچک، تمامصفحه و غیره) |
PageLayout | چیدمان صفحهای که هنگام نمایش سند استفاده میشود (صفحه تک، ستونها و غیره). |
ColorType | مدل رنگ صفحه یا مقدار رنگ (RGB، CMYK، مقیاس خاکستری و غیره). |
HorizontalAlignment | تراز افقی پاراگرافها، جدولها یا حاشیهنویسیها |
VerticalAlignment | تراز عمودی پاراگرافها، جدولها یا حاشیهنویسیها |
TextAlignment | تراز افقی متن برای جعبههای متن حاشیهنویسی |
Justification | تراز محتوی حاشیهنویسی متنی آزاد |
LoadFormat | انتخابکننده فرمت منبع استفاده شده توسط زیرکلاسهای LoadOptions |
SaveFormat | انتخابکننده فرمت خروجی استفاده شده توسط Document.Save |
Rotation | زاویه چرخش صفحه، که از طریق Page.Rotate در دسترس است |