به روز رسانی فیلدها

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

نحوه به روز رسانی فیلدها

هنگامی که یک سند بارگیری می شود، Aspose.Words رفتار Microsoft Word را تقلید می کند و گزینه به روز رسانی خودکار فیلدها خاموش می شود. رفتار را می توان به صورت زیر خلاصه کرد:

  • هنگام باز کردن/ذخیره یک سند، فیلدها دست نخورده باقی می مانند
  • شما می توانید به صراحت تمام فیلدهای یک سند (مثلاً بازسازی TOC) را در صورت نیاز به روز کنید
  • وقتی به PDF یا XPS پرینت یا رندر می‌کنید، فیلدهای مربوط به شماره‌گذاری صفحه در سرصفحه/پانویس به‌روزرسانی می‌شوند
  • هنگامی که Mail Merge را اجرا می کنید همه فیلدها به طور خودکار به روز می شوند

به روز رسانی فیلدها به صورت برنامه ای

برای به روز رسانی صریح فیلدها در کل سند، به سادگی با update_fields تماس بگیرید. برای به روز رسانی فیلدهای موجود در بخشی از یک سند، یک شی Range بدست آورید و متد update_fields را فراخوانی کنید. در Aspose.Words می توانید برای هر گره درخت سند، مانند Section، HeaderFooter، Paragraph و غیره با استفاده از ویژگی Node.range، یک Range بدست آورید. با تماس با روش update می توانید نتیجه یک فیلد را به روز کنید.

به روز رسانی خودکار فیلدهای مرتبط با صفحه در حین رندرینگ

هنگامی که یک سند را به یک فرمت صفحه ثابت به عنوان مثال به PDF یا XPS تبدیل می‌کنید، Aspose.Words به‌طور خودکار فیلدهای مربوط به طرح‌بندی صفحه PAGE، PAGEREF موجود در سرصفحه/پاورقی سند را به‌روزرسانی می‌کند. این رفتار رفتار Microsoft Word هنگام چاپ یک سند را تقلید می کند.

اگر می خواهید تمام فیلدهای دیگر سند را به روز کنید، باید قبل از رندر کردن سند با update_fields تماس بگیرید.

مثال کد زیر نحوه به روز رسانی تمام فیلدها را قبل از رندر کردن یک سند نشان می دهد:

به روز رسانی فیلد خودکار در طول Mail Merge

هنگامی که یک Mail Merge را اجرا می کنید، تمام فیلدهای سند به طور خودکار به روز می شوند. این به این دلیل است که Mail Merge یک مورد به روز رسانی میدانی است. برنامه با یک فیلد Mail Merge مواجه می شود و باید نتیجه خود را به روز کند، که شامل گرفتن مقدار از منبع داده و درج آن در فیلد است. منطق البته پیچیده‌تر است، برای مثال، زمانی که به انتهای منطقه سند/mail merge رسیده‌اید اما هنوز داده‌های بیشتری برای ادغام وجود دارد، پس منطقه باید کپی شده و مجموعه جدید فیلدها به‌روزرسانی شود.

به روز رسانی فیلدهایی که دارای ویژگی کثیف هستند

w:dirty یک ویژگی سطح فیلد است که تنها فیلدی را که شما مشخص کرده‌اید، هنگام باز شدن سند، بازخوانی می‌کند. به MS Word می‌گوید که فقط دفعه بعد که سند باز می‌شود، این فیلد را تازه‌سازی کند. می توانید از ویژگی update_dirty_fields برای به روز رسانی فیلدها با ویژگی dirty استفاده کنید. وقتی مقدار update_dirty_fields روی True تنظیم می شود، تمام فیلدهای دارای مقدار True برای ویژگی Field.is_dirty یا FieldChar.is_dirty در بارگذاری سند به روز می شوند.

مثال کد زیر نحوه به روز رسانی فیلدهایی را که دارای ویژگی کثیف هستند نشان می دهد:

قبل از ذخیره، ویژگی LastSavedTime را به روز کنید

می‌توانید از ویژگی SaveOptions.update_last_saved_time_property برای به‌روزرسانی ویژگی سند داخلی last_saved_time هنگام ذخیره سند استفاده کنید.

مثال کد زیر نحوه به روز رسانی این ویژگی را نشان می دهد: