Importando nós com NodeImporter
Importando nós com NodeImporter
Este guia mostra como mover conteúdo entre duas diferentes Document instâncias em Aspose.Words FOSS para .NET usando o dedicado NodeImporter classe e granular ImportFormatOptions, para cenários em que você precisa importar muitos nós de forma eficiente ou controlar o comportamento da importação além do básico ImportFormatMode escolha. Para os mais simples Document.ImportNode, Document.AppendDocument, e DocumentBuilder.InsertDocument métodos de conveniência, veja o Trabalhando com Documentos guia.
NodeImporter: Importações repetidas sem configuração repetida
NodeImporter foi desenvolvido para importação repetida de nós de um documento para outro, evitando o custo de configuração a cada chamada de uma importação de uso único. Construa um com new NodeImporter(srcDoc, dstDoc, importFormatMode) — ou a sobrecarga new NodeImporter(srcDoc, dstDoc, importFormatMode, importFormatOptions) para controle mais fino — uma única vez, então chame ImportNode(srcNode, isImportChildren) nessa mesma instância para cada nó que precisar transferir. Reutilizar uma instância de NodeImporter em várias chamadas evita o custo de configuração que uma importação de conveniência por chamada impõe a cada vez.
Controle de importação fino com ImportFormatOptions
O ImportFormatOptions complementa a escolha básica de ImportFormatMode (UseDestinationStyles, KeepSourceFormatting, KeepDifferentStyles) com interruptores mais finos: SmartStyleBehavior (bool) controla como estilos com nomes iguais na origem e no destino são importados. KeepSourceNumbering (bool) controla como a numeração é importada quando há conflito entre origem e destino. IgnoreTextBoxes e IgnoreHeaderFooter (bool) suprimem a formatação da origem para conteúdo de caixa de texto e cabeçalho/rodapé especificamente quando KeepSourceFormatting está em vigor. MergePastedLists (bool) mescla listas coladas com listas circundantes ao invés de mantê-las separadas. ForceCopyStyles (bool) copia estilos conflitantes ao invés de reutilizar a versão do destino, no modo KeepSourceFormatting. AdjustSentenceAndWordSpacing (bool) ajusta automaticamente o espaçamento. AppendDocumentWithNewPage (bool) força o tipo da primeira seção importada para NewPage.
Dicas e melhores práticas
- Crie uma única instância de
NodeImportere reutilize-a em um loop de chamadasImportNodeao importar muitos nós — construir um novo importador por nó repete o trabalho de configuração desnecessariamente. - Passe uma instância de
ImportFormatOptionspara a sobrecarga do construtorNodeImporterquando a escolha simples deImportFormatModenão for precisa o suficiente — por exemplo, para manter a numeração da lista de origem comKeepSourceNumberingenquanto ainda usaKeepSourceFormattingno geral. - Defina
IgnoreTextBoxesouIgnoreHeaderFooterquandoKeepSourceFormattingtraz mais estilo de origem do que você deseja apenas para esses tipos de conteúdo. NodeImporter.ImportNode(srcNode, isImportChildren)espelha a chamada de importação ao nível do documento em assinatura e comportamento; a diferença está na eficiência de reutilização, não na semântica da importação.
Problemas Comuns
| Problema | Causa | Correção |
|---|---|---|
| Importações repetidas de muitos nós são lentas | Uma chamada de importação conveniente é usada por nó em vez de uma NodeImporter reutilizada | Construa um único NodeImporter e chame ImportNode nele para cada nó |
| A numeração da lista reinicia inesperadamente após a importação | ImportFormatOptions.KeepSourceNumbering não foi definido | Construa NodeImporter com uma instância ImportFormatOptions que define KeepSourceNumbering conforme necessário |
| O conteúdo da caixa de texto ou do cabeçalho/rodapé recebe a formatação indesejada da fonte | O modo KeepSourceFormatting aplica o estilo da fonte amplamente por padrão | Defina IgnoreTextBoxes ou IgnoreHeaderFooter no ImportFormatOptions passado para NodeImporter |
FAQ
Quando devo usar NodeImporter em vez de uma única chamada de importação?
Ao importar muitos nós em um loop — construa um NodeImporter inicialmente e chame ImportNode repetidamente, em vez de pagar o custo de configuração em cada chamada.
O que ImportFormatOptions adiciona além de ImportFormatMode?
Interruptores mais finos, como SmartStyleBehavior, KeepSourceNumbering, IgnoreTextBoxes, IgnoreHeaderFooter, MergePastedLists, ForceCopyStyles, AdjustSentenceAndWordSpacing e AppendDocumentWithNewPage, sobrepostos à escolha base ImportFormatMode.
O NodeImporter.ImportNode se comporta de forma diferente de importar ao nível do documento?
Não — ambos recebem um nó de origem e uma sinalização isImportChildren e o importam para o documento de destino; NodeImporter existe para que a configuração seja feita uma vez e reutilizada em várias chamadas.
Como mantenho a numeração da lista do documento de origem intacta ao importar?
Construa NodeImporter com um ImportFormatOptions onde KeepSourceNumbering é true.
API Reference Resumo
| Classe/Método | Descrição |
|---|---|
NodeImporter | Executa importação repetida de nós de um documento para outro, reutilizando a configuração entre chamadas |
NodeImporter(srcDoc, dstDoc, importFormatMode) | Construtor para importações básicas apenas no modo de formato de importação |
NodeImporter(srcDoc, dstDoc, importFormatMode, importFormatOptions) | Construtor que aceita ImportFormatOptions de granularidade fina |
NodeImporter.ImportNode(srcNode, isImportChildren) | Importa um nó do documento de origem para o documento de destino |
ImportFormatOptions | Configurações de importação granulares sobrepostas a ImportFormatMode |
ImportFormatOptions.SmartStyleBehavior | Como estilos com nomes iguais são importados |
ImportFormatOptions.KeepSourceNumbering | Como a numeração em conflito é importada |
ImportFormatOptions.IgnoreTextBoxes / IgnoreHeaderFooter | Suprime a formatação de origem para caixas de texto / cabeçalhos e rodapés sob KeepSourceFormatting |
ImportFormatOptions.MergePastedLists | Mescla listas coladas com listas circundantes |
ImportFormatOptions.ForceCopyStyles | Copia estilos conflitantes em vez de reutilizar a versão de destino |
ImportFormatOptions.AppendDocumentWithNewPage | Força o tipo da primeira seção importada para NewPage |