تبدیل به فرمت صفحه ثابت

Aspose.Words موتور طرح بندی صفحه خود را پیاده سازی می کند. قبل از بررسی مشخصات آن، ارزش دارد که ابتدا سند را در سطح بالایی مورد بحث قرار دهیم. وقتی به یک سند فکر می کنند، کاربران معمولا تعدادی ورق کاغذی را تصور می کنند که شامل کلمات، تصاویر، جداول و نمودارها است. اسناد می توانند انواع مختلفی داشته باشند، مانند متن، صفحه گسترده، اسلاید، CAD نقاشی، نمودار جریان، و بنابراین، می توانند اساسا طرح های مختلفی داشته باشند. اکثر برنامه ها اجازه ارسال اسناد به چاپگر را می دهند ؛ این زمانی است که کاربر می تواند ظاهر نهایی سند را مشاهده کند.

نمایش یک سند در برنامه های مختلف

برنامه های مختلف مشاهده یا انتشار اسناد به کاربران اجازه می دهد تا اسناد (Adobe Acrobat، XPS Viewer) را باز کنند و گاهی اوقات (Adobe InDesign) را با فرمت های خاص ویرایش کنند. این برنامه ها معمولا اسناد فرمت “صفحه ثابت” را تولید می کنند. چنین فرمت سندی دقیقا توضیح می دهد که محتوای یک سند در هر صفحه کجا قرار می گیرد. در داخل، فرمت PDF یا XPS شامل توصیف هر صفحه و همچنین دستورالعمل های نقاشی است که طرح بندی محتوای صفحه را مشخص می کند. این شبیه به فرمت های تصویر است، که توصیف می کند که در آن محتوا به صورت رستر یا وکتور نشان داده می شود.

در مقابل، برخی از برنامه های ویرایش متن از مشاهده صفحات سند پشتیبانی نمی کنند. برای مثال، Microsoft Notepad از توابع بسیار کمی به جز نمایش، ویرایش و چاپ متن پشتیبانی می کند. نکته مهم در اینجا این است که چنین برنامه هایی نه می توانند صفحات سند را نشان دهند و نه به کاربر بگویند که چه تعداد از آنها چاپ می شوند، فقط اجازه می دهد محتوای سند را مشاهده کند. این سند را می توان در قالب متن ساده ذخیره کرد و می تواند توسط بسیاری از برنامه های دیگر باز شود. با استفاده از برنامه ای که امکان مشاهده محتوای باینری یک فایل دلخواه را فراهم می کند، می توان دید که چه چیزی در فایل سند ذخیره شده است – این فقط متن ساده است، هیچ چیز دیگری در آن وجود ندارد.

برنامه های ویرایش متن کمی پیچیده تر، مانند Microsoft WordPad، سند را در قالب متن غنی (RTF) ذخیره کنید، که از عملکردهای قالب بندی بیشتری مانند قرار دادن تصاویر، قالب بندی کاراکتر، حاشیه های پاراگراف و فاصله پشتیبانی می کند. با این حال، فرمت RTF نیز فقط حاوی محتوای سند است و هیچ اطلاعاتی در مورد صفحات ندارد.

Microsoft Word پیشرفته ترین برنامه ویرایش متن در Windows امروز است. این فایل ها را در فرمت DOCX فرمت می کند، که محتوای سند را انعطاف پذیر و گسترده توصیف می کند، به کاربران اجازه می دهد اندازه صفحه، جهت گیری برای بخش سند را مشخص کنند، و، به عنوان یک برنامه WYSIWYG حتی صفحات سند را در صفحه نمایش نشان می دهد. با این وجود، هنوز اطلاعاتی در مورد نحوه نمایش محتوای سند در صفحات موجود در پرونده سند وجود ندارد. فایل سند فقط خود محتوا و رابطه اشیاء سند با یکدیگر را همراه با برخی محدودیت های هندسی توصیف می کند. در نتیجه، قبل از نمایش یک سند، Microsoft Word خود این اطلاعات را محاسبه می کند. اینجاست که یک طرح صفحه وارد بازی می شود.

چیدمان صفحه چیست ؟

طرح بندی صفحه سند یک ساختار داده است که توصیف می کند که یک شی خاص در صفحات برای همه اشیاء سند قرار دارد. علاوه بر این، از آنجا که اشیاء دارای ویژگی هایی هستند که بر ظاهر آنها تأثیر می گذارد، مانند اندازه فونت، سایه یا جلوه های نقاشی، شما نه تنها باید بدانید که شیء کجاست، بلکه باید بدانید که چه منطقه ای از صفحه را اشغال می کند و آیا برای چندین صفحه اعمال می شود تا سایر اشیاء با همان منطقه همپوشانی نداشته باشند.

Aspose.Words قابلیت طرح بندی صفحه را به صورت داخلی اجرا می کند و آن را قادر می سازد تا تمام فرمت های صفحه ثابت مانند PDF، XPS و فرمت های مختلف تصویر را تولید کند. بدون طرح بندی صفحه، اطلاعات ذخیره شده در فایل سند صفحه ثابت در دسترس نخواهد بود و همه این فرمت ها پشتیبانی نمی شوند.

رابطه بین یک سند و یک طرح صفحه کاملا ساده است. در حالی که یک سند محتوا را توصیف می کند، طرح صفحه مربوطه هندسه آن محتوا را توصیف می کند. توجه داشته باشید که یک طرح صفحه بدون یک سند وجود ندارد زیرا هیچ محتوایی برای محاسبه هندسه وجود ندارد، اما یک سند می تواند بدون طرح صفحه وجود داشته باشد. به عنوان مثال، هنگامی که یک سند DOCX به یک سند RTF تبدیل می شود، معمولا دانستن هندسه غیر ضروری است، زیرا هیچ یک از فرمت ها آن را ذخیره نمی کنند.

ایجاد یک طرح بندی صفحه

ایجاد یک طرح صفحه می تواند یک روش گران قیمت باشد، هم از نظر سرعت و هم از نظر حافظه. این به دلایل مختلفی است:

  • این سند ممکن است مقدار زیادی محتوا داشته باشد که ممکن است نیاز به نمایش در هزاران صفحه داشته باشد. هندسه هر شی در هر صفحه باید توصیف شود، و منابع حافظه را مصرف کند.
  • این سند ممکن است قوانین زیادی داشته باشد و محدودیت هایی را بر هندسه اعمال کند. زمان محاسباتی قابل توجهی ممکن است صرف شود، اطمینان حاصل شود که هر محدودیت برآورده شده است.
  • برخی از ویژگی های سند، به عنوان مثال، فیلد NUMPAGES، وابستگی های تکراری برای مقادیر خاصیت آینده ایجاد می کنند که در زمان محاسبه در دسترس نیستند. این منجر به محاسبات تکراری می شود و در زمان محاسبه جمع می شود.

به دلایل فوق، Aspose.Words فقط در صورت لزوم یک طرح صفحه ایجاد می کند. یک دلیل معمول برای این امر درخواست برای ارائه صفحات سند یا به دست آوردن یک مقدار فیلد است که به اطلاعات موجود در طرح صفحه بستگی دارد. یک دلیل کمتر واضح می تواند صادرات یک سند به HTML باشد. حتی اگر HTML یک فرمت صفحه ثابت نباشد و هندسه اشیاء محتوا را توصیف نکند، هنوز هم از تصاویر پشتیبانی می کند. چنین تصاویری ممکن است به شکل اشکال ایجاد شده در Microsoft Word با یک متن در داخل آنها باشد. به عنوان مثال، یک نمودار با برچسب های محور می تواند به عنوان یک تصویر به HTML صادر شود، اما قبل از اینکه این کار انجام شود Aspose.Words باید آن تصویر را ارائه دهد، و بنابراین باید بداند که برچسب را کجا نمایش دهد. به مثال نمودار زیر مراجعه کنید:

converting-to-fixed-page-format-aspose-words-

خواص غیر هندسی

علاوه بر پردازش اطلاعات هندسی، یک طرح صفحه نیز مسئول محاسبه رنگ ها و سبک های مرزی است. در Microsoft Word، رنگ متن را می توان به صورت خودکار مشخص کرد، به این معنی که انتخاب رنگ باید بر اساس رنگ سایه سلول یا پاراگراف یا بر اساس رنگ صفحه، جایی که متن ظاهر می شود، باشد.

طرح بندی صفحه محاسبه می کند که متن در کجا ظاهر می شود و چه محتوایی در پشت آن ارائه می شود و امکان محاسبه رنگ را فراهم می کند. محاسبات خاص دیگری نیز وجود دارد که توسط طرح صفحه انجام می شود. به عنوان مثال، یک مرز افقی در یک جدول بستگی به این دارد که آیا یک ردیف جدول در یک ستون متن آخر است و آیا در ستون ها شکسته شده است. اگر یک ردیف در یک ستون آخرین باشد، مرز پایین به جای افقی استفاده می شود.

non_geometric_properties_aspose-words-java

در Aspose.Words، یک کاربر می تواند درخواست کند که آیا یک طرح صفحه جدید ایجاد کند یا یک موجود را به روز کند. هر دو را می توان با روش UpdatePageLayout انجام داد که توسط کلاس Document ارائه شده است. اگر یک طرح صفحه وجود نداشته باشد، اما نیاز به آن وجود دارد (به عنوان مثال، هنگامی که سند به یک فرمت صفحه ثابت صادر می شود)، Aspose.Words به طور خودکار این روش را فرا می خواند. با این حال، اگر یک طرح صفحه قبلا وجود داشته باشد، Aspose.Words از موجود استفاده خواهد کرد تا از مصرف منابع لازم برای به روز رسانی آن جلوگیری کند. در این حالت، کاربر باید روش UpdatePageLayout را فراخوانی کند تا اطمینان حاصل شود که طرح صفحه با مدل سند به روز است.

ساختار پویا

فرآیند ایجاد طرح صفحه شامل مراحل زیر است:

  • Conversion - شمارش محتوای مدل سند و تهیه اشیاء طرح مربوطه.
  • Build - ترتیب دادن اشیاء طرح بندی برای نشان دادن محتوای سند در صفحات.
  • Reflow - به روز رسانی ترتیب اشیاء برای برآورده کردن محدودیت های هندسه.
  • Projecting layout objects into fixed page presentation and finalizing color information.
  • Building and reflowing of shape content - یک مرحله لازم است اگر سند حاوی اشکال با محتوای متن آشیانه ای باشد.

توجه داشته باشید که طرح صفحه یک ساختار پویا است که می تواند تا حدی بازسازی شود. این به ویژه زمانی مورد نیاز است که محاسبه مقادیر فیلد بدون بازسازی ساختار طرح سند غیرممکن باشد. فیلد می تواند به مکان یک شی در یک صفحه اشاره کند و در عین حال ارزش فیلد نیز در صفحه ارائه می شود و بر مکان شی ارجاع شده تأثیر می گذارد. یک طرح صفحه را نمی توان در یک بار ساخت، زیرا ممکن است در زمان قرار دادن در یک صفحه، مقادیر فیلد هنوز در دسترس نباشد.

سناریوی معمول را در نظر بگیرید وقتی که فیلد NUMPAGES در پای صفحه اول سند ظاهر می شود. ارزش این فیلد تعداد کل صفحات است. برای قرار دادن این فیلد در یک صفحه، باید ارزش آن را بدانید. اگر فقط صفحه اول در حال ساخت است، تعداد کل صفحات هنوز مشخص نیست. در این حالت، طرح صفحه باید از مقدار پیش فرض استفاده کند و بعدا به آن فیلد بازگردد و مقدار آن را با توجه به محاسبات واقعی تغییر دهد. با این حال، تغییر مقدار فیلد ممکن است بر سایر محتوای سند در یک صفحه تأثیر بگذارد و در نهایت باعث شود یک صفحه جدید به آن اضافه شود یا یک صفحه موجود حذف شود، بنابراین ارزش محاسبه شده را منسوخ می کند. این مشکل را می توان با امکان به روز رسانی طرح صفحه موجود حل کرد.

هنگام ایجاد یک طرح، همچنین می توان ویژگی های LayoutOptions را تنظیم کرد که بر خروجی سند در صفحات تأثیر می گذارد.

ذخیره به فرمت صفحه ثابت

پس از ساخت طرح صفحه و محاسبه هندسه اشیاء و موقعیت آنها در صفحه، سند را می توان در قالب صفحه ثابت با پشتیبانی Aspose.Words ذخیره کرد. هنگام ذخیره اسناد به فرمت های صفحه ثابت، می توان از گزینه های رندر مشترک برای همه این فرمت ها استفاده کرد. آنها اجازه می دهند کنترل کنند:

  • تعداد و محدوده صفحات موجود در سند خروجی (PageIndex, PageCount.
  • پیشرفت ذخیره اسناد صفحه به صفحه (PageSavingCallback.
  • مجموعه ای از کاراکترها که برای رندر اعداد استفاده می شوند (NumeralFormat.
  • یک پخش کننده متافیل (MetafileRenderingOptions. برای جزئیات بیشتر، به Dest zden به Windows Metafiles مقاله.
  • نرخ کیفیت برای فشرده سازی مجدد تصاویرJPEG، که ارزش آن ممکن است کمی متفاوت باشد، بسته به فرمت ذخیره انتخاب شده (JpegQuality.
  • بهینه سازی گرافیک وکتور در خروجی Aspose.Words (OptimizeOutput.
  • گزینه های گرافیکی هنگام صرفه جویی در فرمت های Tiff، Png، Bmp، Jpeg، Emf (UseAntiAliasing، UseHighQualityRendering.
  • ذخیره سند در مقیاس خاکستری (ColorMode.
  • تغییر بین رندر شکل های DrawingML و شکل های پشتیبان (DmlRenderingMode.
  • تغییر بین حالت های رندر جلوه های DML (DmlEffectsRenderingMode.

مثال زیر نشان می دهد که چگونه یک سند را با استفاده از روش Save و گزینه های رندر به فرمت JPEG ذخیره کنید: