使用 NodeImporter 导入节点

使用 NodeImporter 导入节点

使用 NodeImporter 导入节点

本指南展示了如何在两个不同的 Document 在 Aspose.Words FOSS for .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(布尔)控制源与目标中同名样式的导入方式。KeepSourceNumbering(布尔)控制在源和目标之间编号冲突时的导入方式。IgnoreTextBoxes 和 IgnoreHeaderFooter(布尔)在 KeepSourceFormatting 生效时专门抑制文本框以及页眉/页脚内容的源格式。MergePastedLists(布尔)将粘贴的列表与周围的列表合并,而不是保持分离。ForceCopyStyles(布尔)在 KeepSourceFormatting 模式下复制冲突的样式,而不是复用目标的版本。AdjustSentenceAndWordSpacing(布尔)自动调整间距。AppendDocumentWithNewPage(布尔)强制首个导入章节的类型为 NewPage。


技巧与最佳实践

  • 在导入大量节点时,创建一个 NodeImporter 实例并在 ImportNode 调用的循环中重复使用——为每个节点构建新的导入器会不必要地重复设置工作。
  • 当普通的 ImportFormatMode 选项不够精确时,将 ImportFormatOptions 实例传递给 NodeImporter 构造函数重载——例如,为了在整体使用 KeepSourceFormatting 的同时保持 KeepSourceNumbering 的源列表编号。
  • 当 KeepSourceFormatting 引入的源样式超出您仅针对这些内容类型所需的范围时,可设置 IgnoreTextBoxes 或 IgnoreHeaderFooter。
  • NodeImporter.ImportNode(srcNode, isImportChildren) 在签名和行为上与文档级别的导入调用相同;区别在于重用效率,而非导入语义。

常见问题

问题原因修复
大量节点的重复导入速度慢对每个节点都使用一次便利的导入调用,而不是复用同一个 NodeImporter构建一个单一的 NodeImporter,并对每个节点调用其上的 ImportNode
导入后列表编号意外重置ImportFormatOptions.KeepSourceNumbering 未设置使用能够根据需要设置 KeepSourceNumbering 的 ImportFormatOptions 实例来构造 NodeImporter
文本框或页眉/页脚内容会拾取不需要的源格式KeepSourceFormatting 模式默认会广泛应用源样式在传递给 NodeImporter 的 ImportFormatOptions 上设置 IgnoreTextBoxes 或 IgnoreHeaderFooter

FAQ

何时应使用 NodeImporter 而不是单次导入调用?

在循环中导入大量节点时——预先构建一个 NodeImporter 并重复调用 ImportNode,而不是在每次调用时都承担设置成本。

相较于 ImportFormatMode,ImportFormatOptions 额外增加了什么?

更细致的开关,例如 SmartStyleBehavior、KeepSourceNumbering、IgnoreTextBoxes、IgnoreHeaderFooter、MergePastedLists、ForceCopyStyles、AdjustSentenceAndWordSpacing 和 AppendDocumentWithNewPage,叠加在基础的 ImportFormatMode 选项之上。

相较于在文档层面导入,NodeImporter.ImportNode 的行为是否不同?

不——两者都接受一个源节点和一个 isImportChildren 标志,并将其导入目标文档;NodeImporter 的存在是为了让设置只进行一次,并在多次调用中复用。

导入时,我如何保持源文档的列表编号完整?

使用 ImportFormatOptions 构造 NodeImporter,其中 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

另请参阅

 中文