Імпорт вузлів за допомогою 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у перевантаження конструктораNodeImporter, коли простий вибірImportFormatModeнедостатньо точний — наприклад, щоб зберегти нумерацію списку джерел за допомогоюKeepSourceNumbering, залишаючись при цьому у загальному використанніKeepSourceFormatting. - Встановіть
IgnoreTextBoxesабоIgnoreHeaderFooter, колиKeepSourceFormattingпідтягує більше стилізації джерела, ніж потрібно лише для цих типів вмісту. 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) | Конструктор для базових імпортів лише у режимі import-format-mode |
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 |