NodeImporter

NodeImporter(DocumentBaseDocumentBaseImportFormatMode)

Initialise une nouvelle instance duNodeImporter classe.

public NodeImporter(DocumentBase srcDoc, DocumentBase dstDoc, ImportFormatMode importFormatMode)
ParamètreTaperLa description
srcDocDocumentBaseLe document source.
dstDocDocumentBaseLe document de destination qui sera propriétaire des nœuds importés.
importFormatModeImportFormatModeSpécifie comment fusionner le formatage de style en conflit.

Exemples

Montre comment insérer le contenu d’un document dans un signet dans un autre document.

public void InsertAtBookmark()
{
    Document doc = new Document();
    DocumentBuilder builder = new DocumentBuilder(doc);

    builder.StartBookmark("InsertionPoint");
    builder.Write("We will insert a document here: ");
    builder.EndBookmark("InsertionPoint");

    Document docToInsert = new Document();
    builder = new DocumentBuilder(docToInsert);

    builder.Write("Hello world!");

    docToInsert.Save(ArtifactsDir + "NodeImporter.InsertAtMergeField.docx");

    Bookmark bookmark = doc.Range.Bookmarks["InsertionPoint"];
    InsertDocument(bookmark.BookmarkStart.ParentNode, docToInsert);

    Assert.AreEqual("We will insert a document here: " +
                    "\rHello world!", doc.GetText().Trim());
}

/// <summary>
/// Insère le contenu d'un document après le nœud spécifié.
/// </summary>
static void InsertDocument(Node insertionDestination, Document docToInsert)
{
    if (insertionDestination.NodeType == NodeType.Paragraph || insertionDestination.NodeType == NodeType.Table)
    {
        CompositeNode destinationParent = insertionDestination.ParentNode;

        NodeImporter importer =
            new NodeImporter(docToInsert, insertionDestination.Document, ImportFormatMode.KeepSourceFormatting);

        // Parcourez tous les nœuds de niveau bloc dans le corps de la section,
        // puis clonez et insérez chaque nœud qui n'est pas le dernier paragraphe vide d'une section.
        foreach (Section srcSection in docToInsert.Sections.OfType<Section>())
            foreach (Node srcNode in srcSection.Body)
            {
                if (srcNode.NodeType == NodeType.Paragraph)
                {
                    Paragraph para = (Paragraph)srcNode;
                    if (para.IsEndOfSection && !para.HasChildNodes)
                        continue;
                }

                Node newNode = importer.ImportNode(srcNode, true);

                destinationParent.InsertAfter(newNode, insertionDestination);
                insertionDestination = newNode;
            }
    }
    else
    {
        throw new ArgumentException("The destination node should be either a paragraph or table.");
    }
}

Voir également


NodeImporter(DocumentBaseDocumentBaseImportFormatModeImportFormatOptions)

Initialise une nouvelle instance duNodeImporter classe.

public NodeImporter(DocumentBase srcDoc, DocumentBase dstDoc, ImportFormatMode importFormatMode, 
    ImportFormatOptions importFormatOptions)
ParamètreTaperLa description
srcDocDocumentBaseLe document source.
dstDocDocumentBaseLe document de destination qui sera propriétaire des nœuds importés.
importFormatModeImportFormatModeSpécifie comment fusionner le formatage de style en conflit.
importFormatOptionsImportFormatOptionsSpécifie diverses options pour formater le nœud importé.

Exemples

Montre comment résoudre un conflit lors de l’importation de documents contenant des listes avec le même identifiant de définition de liste.

Document srcDoc = new Document(MyDir + "List with the same definition identifier - source.docx");
Document dstDoc = new Document(MyDir + "List with the same definition identifier - destination.docx");

// Définissez la propriété "KeepSourceNumbering" sur "true" pour appliquer un ID de définition de liste différent
// vers des styles identiques car Aspose.Words les importe dans les documents de destination.
ImportFormatOptions importFormatOptions = new ImportFormatOptions { KeepSourceNumbering = true };

dstDoc.AppendDocument(srcDoc, ImportFormatMode.UseDestinationStyles, importFormatOptions);
dstDoc.UpdateListLabels();

Montre comment résoudre les conflits de numérotation de liste dans les documents source et de destination.

// Ouvrez un document avec un schéma de numérotation de liste personnalisé, puis clonez-le.
// Puisque les deux ont le même format de numérotation, les formats entreront en conflit si nous importons un document dans l'autre.
Document srcDoc = new Document(MyDir + "Custom list numbering.docx");
Document dstDoc = srcDoc.Clone();

// Lorsque nous importons le clone du document dans l'original et que nous l'ajoutons,
// alors les deux listes avec le même format de liste se joindront.
// Si nous définissons l'indicateur "KeepSourceNumbering" sur "false", alors la liste du clone du document
// que nous ajoutons à l'original conservera la numérotation de la liste à laquelle nous l'ajoutons.
// Cela fusionnera effectivement les deux listes en une seule.
// Si nous définissons le flag "KeepSourceNumbering" sur "true", alors le clone du document
 // list conservera sa numérotation d'origine, faisant apparaître les deux listes comme des listes distinctes.
ImportFormatOptions importFormatOptions = new ImportFormatOptions();
importFormatOptions.KeepSourceNumbering = keepSourceNumbering;

NodeImporter importer = new NodeImporter(srcDoc, dstDoc, ImportFormatMode.KeepDifferentStyles, importFormatOptions);
foreach (Paragraph paragraph in srcDoc.FirstSection.Body.Paragraphs)
{
    Node importedNode = importer.ImportNode(paragraph, true);
    dstDoc.FirstSection.Body.AppendChild(importedNode);
}

dstDoc.UpdateListLabels();

if (keepSourceNumbering)
{
    Assert.AreEqual(
        "6. Item 1\r\n" +
        "7. Item 2 \r\n" +
        "8. Item 3\r\n" +
        "9. Item 4\r\n" +
        "6. Item 1\r\n" +
        "7. Item 2 \r\n" +
        "8. Item 3\r\n" +
        "9. Item 4", dstDoc.FirstSection.Body.ToString(SaveFormat.Text).Trim());
}
else
{
    Assert.AreEqual(
        "6. Item 1\r\n" +
        "7. Item 2 \r\n" +
        "8. Item 3\r\n" +
        "9. Item 4\r\n" +
        "10. Item 1\r\n" +
        "11. Item 2 \r\n" +
        "12. Item 3\r\n" +
        "13. Item 4", dstDoc.FirstSection.Body.ToString(SaveFormat.Text).Trim());
}

Voir également