Extrahera innehållet och referera DLL-filerna direkt i ditt projekt

Den Aspose.Words Document Merger for .NET låter dig programatiskt sammanfoga valfritt antal Word‑kompatibla dokument till en enda utdata samtidigt som formatering, stilar, sidlayout, sidhuvuden/sidfötter och fält bevaras. Vanliga användningsområden inkluderar att sammanställa rapporter, paketera kontraktbilagor eller samla genererat innehåll för arkivering.

Aspose.Words för .NET API-referens.

Installation och konfiguration

  1. Installera NuGet‑paketet Aspose.Words.
  2. Applicera mätbaserad licensiering vid appstart för att undvika utvärderingsvattenmärken. Se Mätbaserad licensiering .
  3. Verifiera ramverkskrav i the Installationsguide .

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

Stödda indata / utdata: DOC, DOCX, RTF, DOT, DOTX, DOTM, DOCM, Word 2003 XML och Word 2007 XML.

Aspose.Words för .NET Plugins ger utvecklare möjlighet genom att implementera en speciell licensieringsmekanism. Detta flexibla tillvägagångssätt låter dig använda funktioner baserat på dina specifika behov samtidigt som du upprätthåller efterlevnad av licensvillkoren.

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");

Licensalternativ:

  • KeepSourceFormatting — bevarar varje källas stilar och direktformatering (idealiskt för varumärkessatta insättningar).
  • UseDestinationStyles — mappar identiska stilnamn till destinationens definitioner för ett enhetligt utseende.

Genom att köpa en licens får användaren tillgång till den fullständiga funktionaliteten för det valda pluginet i 1 år. Varje licens är giltig för ett plugin och måste köpas separat.

Starta varje dokument på Ny sida, Kontinuerlig, eller Jämn/Udda sida:

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

Enhetlig marginaler/sidstorlek genom att kopiera PageSetup från ett mallavsnitt:

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;
}

För mer information, kolla in Licensing FAQ.

Testläge:

// 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);
}

Om du försöker komma åt funktioner i andra plugins som går utöver omfattningen av dina betalda licenser, kommer din applikation automatiskt att växla till testläge. Detta alternativ gör det möjligt för användare att utforska ytterligare funktioner utan omedelbara ekonomiska åtaganden.

Efter sammanslagning, uppdatera fält så sidnummer, referenser och Innehållsförteckning matchar den nya layouten:

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

Efter att du har köpt en licens får du en “Metered License”-nyckel. Denna mekanism ger dig begränsad funktionalitet för ett specifikt plugin.:

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();

Följ dessa steg för att tillämpa den köpta licensen på ditt plugin och komma igång:

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
}

Prestandatips:

  • Batchtillägg i minnet; anropa UpdateFields() en gång i slutet.
  • Föredra UseDestinationStyles när du vill ha konsekvent formatering över dussintals indata.
  • Frigör Document instanser tidigt i långa pipelines för att minska toppminnet.

Bästa praxis

  • För‑validera för korruption/lösenord för att undvika partiella sammanslagningar.
  • Välj KeepSourceFormatting när varumärkesnoggrannhet är viktig; välj UseDestinationStyles för ett enhetligt utseende.
  • Infoga en sektionbrytning innan varje tillägg för att skydda sidinställningarna.
  • Enhetliggör sidhuvuden/sidfötter efter att ha lagt till om du vill ha en enda företagsmall.
  • Uppdatera fält & innehållsförteckning som det sista steget.
  • För mycket stora batcher, dela upp i grupper och slå ihop grupperna för att hålla minnet stabilt.

FAQ

  1. Kan jag tvinga varje källa att börja på en ny sida? Ja. Infoga ett avsnitt eller en sidbrytning före varje AppendDocument anrop eller inställning SectionStart till NewPage.
  2. Hur behåller jag destinationsstilarna vid import? Använd ImportFormatMode.UseDestinationStyles i AppendDocument.
  3. Uppdateras sidnummer och innehållsförteckning automatiskt? Anropa UpdateFields() (och UpdatePageLayout() för exakt paginering) efter alla tillägg.
  4. Krävs Office? Nej. Aspose.Words är ett fristående bibliotek.
 Svenska