Importování uzlů pomocí NodeImporter
Importování uzlů pomocí NodeImporter
Tento průvodce ukazuje, jak přesunout obsah mezi dvěma různými Document instancemi v Aspose.Words FOSS pro .NET pomocí vyhrazeného NodeImporter třídy a jemně granulovaného ImportFormatOptions, pro scénáře, kdy potřebujete efektivně importovat mnoho uzlů nebo řídit chování importu nad rámec základního ImportFormatMode výběru. Pro jednodušší Document.ImportNode, Document.AppendDocument, a DocumentBuilder.InsertDocument praktické metody, viz Práce s dokumenty průvodce.
NodeImporter: Opakované importy bez opakovaného nastavení
NodeImporter je vytvořen pro opakovaný import uzlů z jednoho dokumentu do druhého, čímž se vyhýbá nákladům na nastavení při každém volání při jednorázovém importu. Vytvořte jej pomocí new NodeImporter(srcDoc, dstDoc, importFormatMode) — nebo přetížením new NodeImporter(srcDoc, dstDoc, importFormatMode, importFormatOptions) pro jemnější kontrolu — jednou, poté volejte ImportNode(srcNode, isImportChildren) na stejné instanci pro každý uzel, který potřebujete přenést. Opětovné použití jedné instance NodeImporter při mnoha voláních eliminuje náklady na nastavení, které při každém volání pohodlného importu vznikají.
Jemná kontrola importu pomocí ImportFormatOptions
ImportFormatOptions doplňuje základní volbu ImportFormatMode (UseDestinationStyles, KeepSourceFormatting, KeepDifferentStyles) jemnějšími přepínači: SmartStyleBehavior (bool) řídí, jak jsou importovány styly se stejnými názvy ve zdroji i cíli. KeepSourceNumbering (bool) řídí, jak je importováno číslování, když dochází ke kolizi mezi zdrojem a cílem. IgnoreTextBoxes a IgnoreHeaderFooter (bool) potlačují formátování zdroje pro textová pole a obsah záhlaví/pati, konkrétně když je v platnosti KeepSourceFormatting. MergePastedLists (bool) slučuje vložené seznamy s okolními seznamy místo jejich odděleného zachování. ForceCopyStyles (bool) kopíruje konfliktní styly místo opakovaného použití verze cíle, v režimu KeepSourceFormatting. AdjustSentenceAndWordSpacing (bool) automaticky upravuje mezery. AppendDocumentWithNewPage (bool) vynutí, aby typ první importované sekce byl NewPage.
Tipy a osvědčené postupy
- Vytvořte jedinou instanci
NodeImportera znovu ji použijte v rámci smyčky voláníImportNodepři importu mnoha uzlů — vytváření nového importéru pro každý uzel zbytečně opakuje nastavení. - Předejte instanci
ImportFormatOptionsdo přetíženého konstruktoruNodeImporter, pokud prostá volbaImportFormatModenení dostatečně přesná — například pro zachování číslování zdrojového seznamu pomocíKeepSourceNumbering, zatímco celkově stále používáteKeepSourceFormatting. - Nastavte
IgnoreTextBoxesneboIgnoreHeaderFooter, kdyžKeepSourceFormattingnačítá více stylování zdroje, než chcete pro tyto typy obsahu. NodeImporter.ImportNode(srcNode, isImportChildren)odráží importní volání na úrovni dokumentu v signatuře i chování; rozdíl spočívá v efektivitě opětovného použití, nikoli v semantice importu.
Časté problémy
| Problém | Příčina | Oprava |
|---|---|---|
| Opakované importy mnoha uzlů jsou pomalé | Pro každý uzel se používá pohodlné importní volání místo jednoho znovu použitého NodeImporter | Vytvořte jediný NodeImporter a zavolejte na něj ImportNode pro každý uzel |
| Číslování seznamu se neočekávaně resetuje po importu | ImportFormatOptions.KeepSourceNumbering nebyl nastaven | Vytvořte NodeImporter s instancí ImportFormatOptions, která nastaví KeepSourceNumbering podle potřeby |
| Obsah textového pole nebo hlavičky/patičky zachytává nechtěné formátování zdroje | Režim KeepSourceFormatting ve výchozím nastavení aplikuje stylování zdroje obecně | Nastavte IgnoreTextBoxes nebo IgnoreHeaderFooter na ImportFormatOptions předaný do NodeImporter |
FAQ
Kdy bych měl použít NodeImporter místo jediného importního volání?
Při importu mnoha uzlů ve smyčce — vytvořte jednu NodeImporter předem a opakovaně volajte ImportNode, místo aby se na každém volání platil náklad na nastavení.
Co ImportFormatOptions přidává nad ImportFormatMode?
Jemnější přepínače, jako jsou SmartStyleBehavior, KeepSourceNumbering, IgnoreTextBoxes, IgnoreHeaderFooter, MergePastedLists, ForceCopyStyles, AdjustSentenceAndWordSpacing a AppendDocumentWithNewPage, vrstvené nad základní volbu ImportFormatMode.
Chová se NodeImporter.ImportNode jinak než importování na úrovni dokumentu?
Ne — oba přijímají zdrojový uzel a příznak isImportChildren a importují jej do cílového dokumentu; NodeImporter existuje proto, aby se nastavení provedlo jednou a znovu použilo při mnoha voláních.
Jak při importu zachovat číslování seznamu ve zdrojovém dokumentu nedotčené?
Sestavte NodeImporter s ImportFormatOptions, kde je KeepSourceNumbering true.
API Reference Shrnutí
| Třída/Metoda | Popis: |
|---|---|
NodeImporter | Provádí opakovaný import uzlů z jednoho dokumentu do druhého, přičemž znovu používá nastavení mezi voláními |
NodeImporter(srcDoc, dstDoc, importFormatMode) | Konstruktor pro základní importy pouze ve formátu import-format-mode |
NodeImporter(srcDoc, dstDoc, importFormatMode, importFormatOptions) | Konstruktor přijímající jemně granulární ImportFormatOptions |
NodeImporter.ImportNode(srcNode, isImportChildren) | Importuje uzel ze zdrojového dokumentu do cílového dokumentu |
ImportFormatOptions | Jemné nastavení importu vrstvené nad ImportFormatMode |
ImportFormatOptions.SmartStyleBehavior | Jak se importují styly se stejným názvem |
ImportFormatOptions.KeepSourceNumbering | Jak se importuje kolidující číslování |
ImportFormatOptions.IgnoreTextBoxes / IgnoreHeaderFooter | Potlačuje formátování zdroje pro textová pole / záhlaví a zápatí pod KeepSourceFormatting |
ImportFormatOptions.MergePastedLists | Spojuje vložené seznamy s okolními seznamy |
ImportFormatOptions.ForceCopyStyles | Kopíruje konfliktní styly místo opětovného použití verze cíle |
ImportFormatOptions.AppendDocumentWithNewPage | Vynutí typ první importované sekce na NewPage |