Aspose.Words pour les plugins .NET permettent aux développeurs d'implémenter un mécanisme de licence spécial. Cette approche flexible vous permet d'utiliser les fonctionnalités en fonction de vos besoins spécifiques tout en respectant les conditions de licence.

Le Aspose.Words Document Merger for .NET vous permet de façon programmatique fusionner n’importe quel nombre de documents compatibles Word en une sortie unique tout en préservant le formatage, les styles, la mise en page, les en-têtes/pieds de page et les champs. Les utilisations typiques incluent l’assemblage de rapports, le regroupement d’annexes de contrats ou l’agrégation de contenu généré pour l’archivage.

Licence achetée.

Installation et configuration

  1. Installez le package NuGet Aspose.Words.
  2. Appliquez metered licensing au démarrage de l’application pour éviter les filigranes d’évaluation. Voir Metered Licensing .
  3. Vérifiez les exigences du framework dans le Guide d’installation .

IDE : Visual Studio 2017–2026, JetBrains Rider, MonoDevelop.

Entrées / Sorties prises en charge: DOC, DOCX, RTF, DOT, DOTX, DOTM, DOCM, Word 2003 XML, et Word 2007 XML.

Mode d’essai

using Aspose.Words;

var master = new Document();
var builder = new DocumentBuilder(master);

builder.InsertBreak(BreakType.SectionBreakNewPage);

ImportFormatMode mode = ImportFormatMode.KeepSourceFormatting;

foreach (string path in new[] { "Blank.docx", "Background images.docx", "annex.rtf" })
{
    var src = new Document(path);
    master.AppendDocument(src, mode);
    builder.MoveToDocumentEnd();
    builder.InsertBreak(BreakType.SectionBreakNewPage);
}

master.UpdateFields();
master.Save("MergedOutput.docx");

Si vous essayez d’accéder aux fonctionnalités d’autres plugins qui dépassent le cadre de vos licences payantes, votre application passera automatiquement en mode d’essai. Cette option permet aux utilisateurs d’explorer des fonctionnalités supplémentaires sans engagement financier immédiat.:

  • KeepSourceFormatting — préserve les styles et le formatage direct de chaque source (idéal pour les inserts de marque).
  • UseDestinationStyles — associe les noms de styles identiques aux définitions de destination pour un rendu uniforme.

Suivez ces étapes pour appliquer la licence achetée à votre plugin et commencer :

Démarrer chaque document sur Nouvelle page, Continu, ou Page paire/impair:

var sect = master.LastSection;
sect.PageSetup.SectionStart = SectionStart.NewPage; // Continuous, EvenPage, OddPage

Unifier les marges/taille de page en copiant PageSetup à partir d’une section de modèle :

using Aspose.Words;
var master = new Document();

var template = new Document("template.docx");
var pageSetup = template.FirstSection.PageSetup;
foreach (Section s in master.Sections)
{
    s.PageSetup.Orientation = pageSetup.Orientation;
    s.PageSetup.PageWidth  = pageSetup.PageWidth;
    s.PageSetup.PageHeight = pageSetup.PageHeight;
    s.PageSetup.TopMargin  = pageSetup.TopMargin;
    s.PageSetup.BottomMargin = pageSetup.BottomMargin;
    s.PageSetup.LeftMargin = pageSetup.LeftMargin;
    s.PageSetup.RightMargin = pageSetup.RightMargin;
}

Effectuez les tâches de traitement : Exécutez les tâches nécessaires en utilisant le plugin.

Surveillez la consommation : Utilisez la méthode GetConsumptionQuantity pour suivre le nombre total de requêtes API consommées..:

// Copy headers/footers from a master template into every section
var hft = new Document("header-footer-template.docx");
foreach (Section s in master.Sections)
{
    s.HeadersFooters.Clear();
    s.HeadersFooters.AddClone(hft.FirstSection.HeadersFooters[HeaderFooterType.HeaderPrimary]);
    s.HeadersFooters.AddClone(hft.FirstSection.HeadersFooters[HeaderFooterType.FooterPrimary]);
}

// Add a simple text watermark
foreach (Section s in master.Sections)
{
    var header = s.HeadersFooters[HeaderFooterType.HeaderPrimary] ?? new HeaderFooter(master, HeaderFooterType.HeaderPrimary);
    if (header.ParentNode == null) s.HeadersFooters.Add(header);
    var shape = new Shape(master, ShapeType.TextPlainText)
    {
        RelativeHorizontalPosition = RelativeHorizontalPosition.Page,
        RelativeVerticalPosition   = RelativeVerticalPosition.Page,
        WrapType = WrapType.None,
        Rotation = -40,
        Width = 400, Height = 100, Left = 100, Top = 200,
        BehindText = true
    };
    shape.TextPath.Text = "CONFIDENTIAL";
    header.AppendChild(shape);
}

L’exemple de code suivant montre comment définir votre clé metered :

Après la fusion, mettez à jour les champs afin que les numéros de page, les références, et Table des matières correspondent à la nouvelle mise en page :

master.UpdateFields();
master.UpdatePageLayout();        // ensures accurate page count
master.UpdateTableLayout();       // improves complex table pagination

Choisir une solution de licence à la consommation offre plusieurs avantages :

using Aspose.Words;
var master = new Document();

var b = new DocumentBuilder(master);
b.MoveToDocumentStart();
b.InsertTableOfContents("TOC \\$1 \\$1 \\$1 \\$1");  // classic TOC switch set
master.UpdateFields();

Scalabilité : Ajustez facilement votre licence à mesure que les exigences de votre application évoluent.

using System.IO;
using System.Collections.Generic;
using Aspose.Words;
using Aspose.Words.Lists;

IEnumerable<Stream> sourceStreams = new List<Stream>();

using (var output = new MemoryStream())
{
    var dst = new Document();
    foreach (Stream srcStream in sourceStreams)
    {
        using var s = srcStream; // e.g., S3/Blob stream
        var src = new Document(s); // auto‑detects format
        dst.AppendDocument(src, ImportFormatMode.UseDestinationStyles);
    }
    dst.UpdateFields();
    dst.Save(output, SaveFormat.docx);
    output.Position = 0;
    // return/output stream
}

Conseils de performance:

  • Ajouts groupés en mémoire ; appelez UpdateFields() une fois à la fin.
  • Préférez UseDestinationStyles lorsque vous souhaitez une mise en forme cohérente sur des dizaines d’entrées.
  • Libérer Document instances tôt dans les longs pipelines pour réduire la mémoire de pointe.

Bonnes pratiques

  • Pré‑valider pour la corruption/mots de passe afin d’éviter les fusions partielles.
  • Choisir KeepSourceFormatting lorsque la fidélité à la marque est importante ; choisissez UseDestinationStyles pour un aspect uniforme.
  • Insérer un saut de section avant chaque ajout pour protéger la configuration de la page.
  • Unifier les en-têtes/pieds de page après l’ajout si vous voulez un modèle d’entreprise unique.
  • Mettre à jour les champs & TOC comme dernière étape.
  • Pour des lots très volumineux, divisez‑les en groupes et fusionnez les groupes afin de maintenir la mémoire stable.

FAQ

  1. Puis-je forcer chaque source à commencer sur une nouvelle page ? Oui. Insérez une section ou un saut de page avant chaque AppendDocument call ou set SectionStart à NewPage.
  2. Comment conserver les styles de destination lors de l’importation ? Utilisez ImportFormatMode.UseDestinationStyles dans AppendDocument.
  3. Les numéros de page et le TOC seront-ils mis à jour automatiquement ? Appeler UpdateFields() (et UpdatePageLayout() pour une pagination précise) après tous les ajouts.
  4. Office est‑il requis ? Non. Aspose.Words est une bibliothèque autonome.
 Français