وارد کردن گرهها با NodeImporter
وارد کردن گرهها با NodeImporter
این راهنما نشان میدهد چگونه محتوا را بین دو متفاوت مختلف منتقل کنید Document نمونهها در Aspose.Words FOSS برای .NET با استفاده از NodeImporter کلاس و دقیقالمقیاس ImportFormatOptions, برای سناریوهایی که نیاز به وارد کردن تعداد زیادی گره بهصورت کارآمد دارید یا کنترل رفتار واردات فراتر از ImportFormatMode انتخاب. برای سادهتر Document.ImportNode, Document.AppendDocument، و DocumentBuilder.InsertDocument متدهای راحتی، مراجعه کنید به کار با اسناد راهنما.
NodeImporter: واردات مکرر بدون تنظیمات مکرر
NodeImporter برای واردات مکرر گرهها از یک سند به سند دیگر ساخته شده است و هزینه تنظیم برای هر فراخوانی در یک واردات یکبار مصرف را حذف میکند. یک نمونه را با new NodeImporter(srcDoc, dstDoc, importFormatMode) — یا بارگذاری بیشینه new NodeImporter(srcDoc, dstDoc, importFormatMode, importFormatOptions) برای کنترل دقیقتر — یکبار بسازید، سپس ImportNode(srcNode, isImportChildren) را بر روی همان نمونه برای هر گرهای که باید منتقل کنید، صدا بزنید. استفاده مجدد از یک نمونه NodeImporter در فراخوانیهای متعدد، هزینه تنظیمی را که یک واردات راحت برای هر فراخوانی بهوجود میآورد، جلوگیری میکند.
کنترل دقیق واردات با ImportFormatOptions
ImportFormatOptions گزینهٔ پایهای ImportFormatMode (UseDestinationStyles، KeepSourceFormatting، KeepDifferentStyles) را با سوئیچهای دقیقتری تکمیل میکند: SmartStyleBehavior (bool) نحوهٔ واردات سبکهایی با نامهای برابر در منبع و مقصد را کنترل میکند. KeepSourceNumbering (bool) نحوهٔ واردات شمارهگذاری را وقتی بین منبع و مقصد تداخل دارد، تنظیم میکند. IgnoreTextBoxes و IgnoreHeaderFooter (bool) قالببندی منبع را برای محتوای جعبهٔ متن و سرصفحه/پاورقی بهطور خاص زمانی که KeepSourceFormatting فعال باشد، سرکوب میکنند. MergePastedLists (bool) فهرستهای چسباندهشده را با فهرستهای اطراف ادغام میکند بهجای اینکه جدا بمانند. ForceCopyStyles (bool) سبکهای متضاد را کپی میکند بهجای استفاده مجدد از نسخهٔ مقصد، در حالت KeepSourceFormatting. AdjustSentenceAndWordSpacing (bool) بهصورت خودکار فاصلهها را تنظیم میکند. AppendDocumentWithNewPage (bool) نوع اولین بخش وارد شده را به NewPage مجبور میکند.
نکات و بهترین شیوهها
- یک نمونهٔ
NodeImporterواحد ایجاد کنید و آن را در طول یک حلقه از فراخوانیهایImportNodeهنگام وارد کردن گرههای متعدد دوباره استفاده کنید — ساخت یک واردکننده جدید برای هر گره، کار تنظیم را بهصورت غیرضروری تکرار میکند. - یک نمونهٔ
ImportFormatOptionsرا به overload سازندهٔNodeImporterپاس دهید وقتی گزینهٔ سادهٔImportFormatModeبه اندازه کافی دقیق نیست — برای مثال، برای حفظ شمارهگذاری فهرست منبع باKeepSourceNumberingدر حالی که همچنان بهصورت کلی ازKeepSourceFormattingاستفاده میکنید. - زمانی که
KeepSourceFormattingاستایل منبع بیشتری نسبت به آنچه برای فقط آن نوع محتوا میخواهید میآورد،IgnoreTextBoxesیاIgnoreHeaderFooterرا تنظیم کنید. NodeImporter.ImportNode(srcNode, isImportChildren)امضای فراخوانی واردات در سطح سند و رفتار آن را بازتاب میدهد؛ تفاوت در کارایی بازاستفاده است، نه در معنای واردات.
مشکلات رایج
| مشکل | دلیل | رفع |
|---|---|---|
| وارد کردن مکرر گرههای متعدد، کند است | یک فراخوانی واردات راحت برای هر گره استفاده میشود بهجای یک NodeImporter که دوباره استفاده میشود | یک NodeImporter واحد بسازید و برای هر گره، ImportNode را روی آن فراخوانی کنید |
| شمارهگذاری فهرست بهطور غیرمنتظره پس از وارد کردن بازنشانی میشود | ImportFormatOptions.KeepSourceNumbering تنظیم نشده بود | ساخت NodeImporter با یک نمونه ImportFormatOptions که در صورت نیاز KeepSourceNumbering را تنظیم میکند |
| متن جعبه یا محتوای سرصفحه/پاورقی قالببندی ناخواسته منبع را دریافت میکند | حالت KeepSourceFormatting بهصورت پیشفرض سبک منبع را بهطور گسترده اعمال میکند | مقدار IgnoreTextBoxes یا IgnoreHeaderFooter را بر روی ImportFormatOptions که به NodeImporter پاس داده شده تنظیم کنید |
FAQ
کی باید به جای یک فراخوانی واردات واحد از NodeImporter استفاده کنم؟
هنگام وارد کردن گرههای متعدد در یک حلقه — یک NodeImporter را از ابتدا بسازید و ImportNode را بهطور مکرر فراخوانی کنید، بهجای اینکه هزینهٔ تنظیم را در هر فراخوانی پرداخت کنید.
چه چیزی ImportFormatOptions اضافه میکند که فراتر از ImportFormatMode باشد؟
سوئیچهای دقیقتری مانند SmartStyleBehavior، KeepSourceNumbering، IgnoreTextBoxes، IgnoreHeaderFooter، MergePastedLists، ForceCopyStyles، AdjustSentenceAndWordSpacing و AppendDocumentWithNewPage که بر پایه انتخاب ImportFormatMode پایه قرار میگیرند.
آیا NodeImporter.ImportNode رفتار متفاوتی نسبت به وارد کردن در سطح سند دارد؟
نه — هر دو یک گره منبع و یک پرچم isImportChildren میگیرند و آن را به سند مقصد وارد میکنند؛ NodeImporter وجود دارد تا تنظیمات یکبار انجام شود و در فراخوانیهای متعدد دوباره استفاده شود.
چگونه میتوانم شمارهگذاری فهرست سند منبع را هنگام وارد کردن دستنخورده نگه دارم؟
یک NodeImporter را با یک ImportFormatOptions بسازید که در آن KeepSourceNumbering برابر با true باشد.
خلاصه API Reference
| کلاس/متد | توضیح |
|---|---|
NodeImporter | در هر بار فراخوانی، واردات مکرر گرهها از یک سند به سند دیگر را انجام میدهد و تنظیمات را مجدداً استفاده میکند |
NodeImporter(srcDoc, dstDoc, importFormatMode) | سازنده برای واردات پایهای فقط با حالت-فرمت-واردات |
NodeImporter(srcDoc, dstDoc, importFormatMode, importFormatOptions) | سازندهای که ImportFormatOptions ریزدانه را میپذیرد |
NodeImporter.ImportNode(srcNode, isImportChildren) | یک گره را از سند منبع به سند مقصد وارد میکند |
ImportFormatOptions | تنظیمات واردات ریزدانه که بر روی ImportFormatMode لایهبندی شدهاند |
ImportFormatOptions.SmartStyleBehavior | چگونگی وارد شدن سبکهای همنام |
ImportFormatOptions.KeepSourceNumbering | نحوه وارد کردن شمارهگذاریهای متناقض |
ImportFormatOptions.IgnoreTextBoxes / IgnoreHeaderFooter | قالببندی منبع را برای جعبههای متن / سرصفحهها و پاورقیها تحت KeepSourceFormatting حذف میکند |
ImportFormatOptions.MergePastedLists | فهرستهای چسباندهشده را با فهرستهای اطراف ترکیب میکند |
ImportFormatOptions.ForceCopyStyles | بهجای استفاده مجدد از نسخه مقصد، سبکهای متناقض را کپی میکند |
ImportFormatOptions.AppendDocumentWithNewPage | نوع اولین بخش واردشده را به NewPage تحمیل میکند |