معرفی رشته ها
Aspose.Words یک کتابخانه کلاس است که برای پردازش سمت سرور اسناد Microsoft Word طراحی شده است و از زمینه ها به روش های زیر پشتیبانی می کند:
- تمام فیلد های یک سند در طول باز/ذخیره و تبدیل حفظ می شوند
- امکان به روز رسانی نتایج بیشتر زمینه ها وجود دارد
در این مقاله، ما در مورد ساختار میدان، زمینه های پشتیبانی شده در Aspose.Words و جزئیات کار با چنین زمینه هایی بیشتر خواهیم آموخت.
ساختار میدان
یک میدان شامل:
- گره های شروع و جدا کننده میدان برای شامل محتوای تشکیل دهنده کد میدان (معمولا به عنوان متن ساده) استفاده می شود.
- جدا کننده میدان و پایان میدان شامل نتیجه میدان است. این می تواند از انواع مختلف محتوا از متن گرفته تا پاراگراف ها و جداول تشکیل شود.
- بعضی از فیلد ها ممکن است جداکننده نداشته باشند که به این معنی است که کل محتوا کد فیلد را تشکیل می دهد.
- کد فیلد رفتار فیلد را تعریف می کند و شامل شناسه فیلد و اغلب پارامترهای دیگر مانند نام فیلد و سوئیچ ها است.
- نتیجه میدان شامل آخرین ارزیابی میدان است. این مقدار در نتیجه فیلد ذخیره می شود و همان چیزی است که به کاربر نمایش داده می شود. برخی از فیلد ها ممکن است هیچ نتیجه ای از فیلد نداشته باشند بنابراین هیچ چیز را در سند نمایش نمی دهند. به همین ترتیب، برخی از زمینه ها ممکن است هنوز به روز نشده باشند، بنابراین هیچ نتیجه ای در زمینه نخواهند داشت.
محتوایی که کد فیلد را تشکیل می دهد به عنوان گره های Run بین FieldStart و FieldSeparator ذخیره می شود. نتیجه فیلد بین گره های FieldSeparator و FieldEnd ذخیره می شود و می تواند از انواع مختلف محتوا تشکیل شود. به طور معمول نتیجه فیلد فقط شامل متن ساخته شده از گره های اجرا است، با این حال ممکن است که گره FieldEnd در یک پاراگراف کاملا متفاوت قرار گیرد و بنابراین نتیجه فیلد شامل گره های سطح بلوک مانند Table و Paragraph گره ها نیز.
در اینجا یک نمای از چگونگی ذخیره یک فیلد در Aspose.Words با استفاده از مثال “DocumentExplorer” که می تواند در Github.
فیلد های موجود در Aspose.Words مدل شیء سند (DOM)
هنگامی که یک سند در Aspose.Words بارگذاری می شود، فیلد های سند به عنوان مجموعه ای از اجزای جداگانه (گره ها) به مدل شیء سند Aspose.Words بارگذاری می شوند. یک فیلد واحد به عنوان مجموعه ای از گره های FieldStart، FieldSeparator و FieldEnd همراه با محتوای بین این گره ها بارگذاری می شود. اگر یک فیلد نتیجه فیلد نداشته باشد، هیچ گره FieldSeparator وجود نخواهد داشت. همه این گره ها همیشه در خط یافت می شوند (به عنوان کودکان Paragraph یا SmartTag.
در Aspose.Words هر یک از گره های FieldXXX از FieldChar مشتق شده است. این کلاس یک ویژگی برای بررسی نوع فیلد نشان داده شده توسط گره مشخص شده از طریق ویژگی FieldType فراهم می کند. به عنوان مثال FieldType.FieldMergeField
نشان دهنده یک فیلد ادغام در سند است.
برخی از زمینه های خاص وجود دارد که در یک سند ورد وجود دارد که به عنوان مجموعه ای از گره های FieldXXX وارد Aspose.Words نمی شوند. برای مثال، LINK
فیلد و INCLUDEPICTURE
فیلد به Aspose.Words به عنوان یک Shape شی وارد می شوند. این شی ویژگی هایی را برای کار با داده های تصویر که به طور معمول در این زمینه ها ذخیره می شوند، فراهم می کند. برای وارد کردن فیلد INCLUDEPICTURE
به عنوان FieldXXX گره ها گزینه PreserveIncludePictureField باید به عنوان true مشخص شود.
فیلد های فرم نیز به عنوان کلاس ویژه خود به Aspose.Words وارد می شوند. کلاس FormField یک فیلد فرم را در یک سند ورد نشان می دهد و روش های اضافی را که به یک فیلد فرم خاص است، ارائه می دهد.
زمینه های پشتیبانی شده
محاسبه فیلد های زیر در نسخه فعلی Aspose.Wordsپشتیبانی می شود:
- = (فرمول)
ADDRESSBLOCK
ASK
AUTHOR
AUTONUM
AUTONUMLGL
AUTONUMOUT
AUTOTEXT
BARCODE
COMMENTS
COMPARE
CREATEDATE
DATABASE
DATE
DISPLAYBARCODE
DOCPROPERTY
DOCVARIABLE
EDITTIME
EQ
FILENAME
FILESIZE
FILLIN
FORMCHECKBOX
FORMDROPDOWN
FORMTEXT
GLOSSARY
GOTOBUTTON
GREETINGLINE
HYPERLINK
IF
IMPORT
INCLUDE
INCLUDEPICTURE
INCLUDETEXT
INDEX
INFO
KEYWORDS
LASTSAVEDBY
LISTNUM
MACROBUTTON
MERGEBARCODE
MERGEFIELD
MERGEREC
MERGESEQ
NEXT
NEXTIF
NOTEREF
NUMCHARS
NUMPAGES
NUMWORDS
PAGE
PAGEREF
PRINTDATE
QUOTE
REF
REVNUM
SAVEDATE
SECTION
SECTIONPAGES
SEQ
SET
SHAPE
SKIPIF
STYLEREF
SUBJECT
SYMBOL
TEMPLATE
TIME
TITLE
TOA
TOC
(including TOT and TOF)USERADDRESS
USERINITIALS
USERNAME
تجزیه و تحلیل میدان پیچیده
Aspose.Words از روش Microsoft Word پردازش فیلد ها پیروی می کند و در نتیجه به درستی مدیریت می کند:
- زمین های آشیانه ای:
IF { =OR({
COMPARE{ =2.5 +PRODUCT(3,5 ,8.4) } > 4}, { =2/2 }) } = 1 "Credit not acceptable" "Credit acceptable"
- استدلال میدان می تواند نتیجه یک میدان آشیانه ای باشد
- فیلد ها می توانند در یک کد فیلد و همچنین در نتیجه فیلد قرار بگیرند
- فضاها / بدون فضاها، نقل قول ها / بدون نقل قول ها، شخصیت های فرار در زمینه ها و غیره:
MERGEFIELD \f"Text after""Field \n\ame with \" and \\\ and \\\*"\bTextBefor\e
- زمینه هایی که در پاراگراف های مختلف قرار دارند
زمینه های فرمول
Aspose.Words یک پیاده سازی بسیار جدی از موتور فرمول را فراهم می کند و از موارد زیر پشتیبانی می کند:
- عملگرهای ریاضی و منطقی:
=(54+4*(6-77)-(5))+(-6-5)/4/5
- توابع:
=ABS(-01.4)+2.645/(5.6^3.5)+776457 \\\# "#,##0"
- مرجع به نشانه ها:
=IF(C>4, 5,ABS(A)*.76) +3.85
- سوئیچ های قالب بندی شماره:
=00000000 \\\# "$#,##0.00;($#,##0.00)"
توابع زیر در عبارات پشتیبانی می شوند: ABS
, AND
, AVERAGE
, COUNT
, DEFINED
, FALSE
, IF
, INT
, MAX
, MIN
, MOD
, NOT
, OR
, PRODUCT
, ROUND
, SIGN
, SUM
, TRUE.
IF
and COMPARE
Fields
فقط برخی از عبارات IF
که Aspose.Words به راحتی می تواند محاسبه کند باید به شما ایده ای از قدرت این ویژگی را بدهد:
IF 3 > 5.7^4+MAX(4,3) True False
IF "abcd" > "abc" True False
IF "?ab*" = "1abdsg" True False
IF 4 = "2*2" True False
COMPARE 3+5/34 < 4.6/3/2
DATE
and TIME
Fields
Aspose.Words از تمام سوئیچ های قالب بندی تاریخ و زمان موجود در Microsoft Word پشتیبانی می کند، برخی از نمونه ها عبارتند از:
DATE @ "d-MMM-yy"
DATE @ "d/MM/yyyy h:mm am/pm
Mail Merge فیلدها
Aspose.Words هیچ محدودیتی برای پیچیدگی فیلد های Mail Merge در اسناد شما اعمال نمی کند و از فیلد های IF
و formula nested پشتیبانی می کند و حتی می تواند نام فیلد ادغام را با استفاده از یک فرمول محاسبه کند.
چند نمونه از فیلد های Mail Merge که Aspose.Words پشتیبانی می کنند:
- Mail merge سوئیچ های میدان:
MERGEFIELD FirstName \\\\\\\\* FirstCap \b "Mr. "
- زمینه های ادغام آشیانه ای در یک فرمول:
IF {
MERGEFIELDValue1 } >= {
MERGEFIELDValue2 } True False
- نام فیلد ادغام را در زمان اجرا محاسبه کنید:
MERGEFIELD {
IF{
MERGEFIELDValue1 } >= {
MERGEFIELDValue2 } FirstName"LastName" }
- حرکت مشروط به رکورد بعدی در منبع داده:
NEXTIF {
MERGEFIELDValue1 } <= { =IF(-2.45 >= 6*{
MERGEFIELDValue2 }, 2, -.45) }
سوئیچ های فرمت
یک فیلد در یک سند می تواند دارای سوئیچ های قالب بندی باشد که مشخص می کند که چگونه مقدار حاصل باید قالب بندی شود. Aspose.Words از سوئیچ های فرمت زیر پشتیبانی می کند:
- @ - قالب بندی تاریخ و زمان
- \# - قالب بندی اعداد
- \\\\* Caps
- \\\\* FirstCap
- \\\\* Lower
- \\\\* Upper
- \\\ \* CHARFORMAT – نتیجه را با توجه به اولین کاراکتر کد فیلد فرمت کنید
- \\\ \* MERGEFORMAT – نتیجه را با توجه به نحوه قالب بندی نتیجه قدیمی فرمت کنید
قالب بندی تاریخ و شماره در فیلد ها
وقتی Aspose.Words یک نتیجه فیلد را محاسبه می کند، اغلب باید یک رشته را به یک عدد یا مقدار تاریخ تجزیه کند و همچنین آن را به یک فرمت کند string.By پیش فرض Aspose.Words از فرهنگ موضوع فعلی برای انجام تجزیه و قالب بندی هنگام محاسبه مقادیر فیلد در هنگام به روز رسانی فیلد و mail merge استفاده می کند. همچنین گزینه هایی در قالب کلاس FieldOptions وجود دارد که اجازه کنترل بیشتر بر روی فرهنگ مورد استفاده در هنگام به روز رسانی میدان را می دهد%
- به طور پیش فرض، ویژگی FieldUpdateCultureSource به CurrentThread تنظیم شده است که فیلد ها را با استفاده از فرهنگ موضوع فعلی فرمت می کند
- این ویژگی را می توان به FieldCode تنظیم کرد بنابراین مجموعه زبان از کد فیلد فیلد برای قالب بندی استفاده می شود
قالب بندی با استفاده از فرهنگ موضوع فعلی
برای کنترل فرهنگ مورد استفاده در هنگام محاسبه فیلد، فقط قبل از فراخوانی محاسبه فیلد، ویژگی CurrentCulture را به فرهنگ مورد نظر خود تنظیم کنید.
مثال کد زیر نشان می دهد که چگونه فرهنگ مورد استفاده در زمینه های قالب بندی را در هنگام به روز رسانی تغییر دهید:
EXAMPLE (از بسته بندی عمومی CurrentThreadSettings استفاده کنید.getLocale() و setLocale() به جای خصوصی Thread.CurrentThread
.CurrentCulture)
استفاده از فرهنگ فعلی برای فرمت کردن فیلد ها به یک سیستم اجازه می دهد تا به راحتی و به طور مداوم کنترل کند که چگونه تمام فیلد های سند در طول به روز رسانی فیلد فرمت می شوند.
قالب بندی با استفاده از فرهنگ در سند
از سوی دیگر، Microsoft Word هر فیلد جداگانه را بر اساس زبان متن موجود در فیلد فرمت می کند (به طور خاص، از کد فیلد اجرا می شود). گاهی اوقات در طول به روز رسانی فیلد این ممکن است رفتار مورد نظر باشد، به عنوان مثال اگر شما اسناد جهانی شده ای دارید که حاوی محتوای بسیاری از زبان های مختلف است و می خواهید هر فیلد به محلی که از متن استفاده می شود احترام بگذارد. Aspose.Words همچنین از این قابلیت پشتیبانی می کند.
کلاس Document یک ویژگی FieldOptions را فراهم می کند که شامل اعضای است که می تواند برای کنترل نحوه به روز رسانی فیلد ها در سند استفاده شود.
مثال کد زیر نشان می دهد که چگونه مشخص کنیم که فرهنگ مورد استفاده برای قالب بندی تاریخ در طول به روز رسانی فیلد و Mail Merge از کجا انتخاب شده است:
EXAMPLE