Импорт узлов с помощью NodeImporter

Импорт узлов с помощью 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)Конструктор для базовых импортов в режиме только формата импорта
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

См. также:

 Русский