Zlučovač dokumentov

Tento Aspose.Words Document Merger for .NET umožňuje vám programovo spojiť ľubovoľný počet dokumentov kompatibilných s Wordom do jedného výstupu pri zachovaní formátovania, štýlov, rozloženia stránky, hlavičiek/patkov a polí. Typické použitia zahŕňajú zostavovanie správ, zoskupovanie príloh zmlúv alebo zhromažďovanie vygenerovaného obsahu pre archiváciu.

Funguje bez grafického rozhrania na Windows, Linux a macOS. Nie je potrebný Microsoft Office.

Inštalácia a nastavenie

  1. Nainštalujte balík NuGet Aspose.Words.
  2. Použite merané licencovanie pri spustení aplikácie, aby ste sa vyhli hodnotiacim vodoznakom. Pozri Metered Licensing .
  3. Skontrolujte požiadavky rámca v the Inštalačný sprievodca .

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

Podporované vstupy / výstupy: DOC, DOCX, RTF, DOT, DOTX, DOTM, DOCM, Word 2003 XML a Word 2007 XML.

Rýchly štart: Pripojiť viacero dokumentov

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

Režimy importu formátu:

  • KeepSourceFormatting — zachováva štýly a priame formátovanie každého zdroja (ideálne pre značkové vložky).
  • UseDestinationStyles — mapuje identické názvy štýlov na definície cieľa pre jednotný vzhľad.

Kontrolovaná sekcia & rozloženie stránky

Začnite každý dokument na Nová stránka, Spojité, alebo Párna/nepárna stránka:

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

Zjednotte okraje/veľkosť stránky kopírovaním PageSetup z časti šablóny:

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

Hlavičky, päty a vodoznaky

Ponechajte pôvodné hlavičky/päty alebo ich po zlúčení nahraďte hlavnou sadou:

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

Polia, krížové odkazy a TOC

Po zlúčení aktualizujte polia, aby čísla strán, odkazy a Obsah zodpovedali novému rozloženiu:

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

Ak udržiavate jediný hlavný TOC, vložte ho raz a nechajte ho automaticky obnoviť.:

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

Zlučovanie v režime streamu / veľkého objemu

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
}

Tipy na výkon:

  • Dávkové pridávanie v pamäti; zavolajte UpdateFields() raz na konci.
  • Preferujte UseDestinationStyles keď chcete konzistentné štýlovanie naprieč desiatkami vstupov.
  • Uvoľnite Document inštancie skôr v dlhých pipeline-och, aby ste znížili špičkovú pamäť.

Najlepšie postupy

  • Pred‑overte kvôli korupcii/heslám, aby ste predišli čiastočným zlúčeniam.
  • Vyberte KeepSourceFormatting keď je dôležitá vernosť značke; vyberte UseDestinationStyles pre jednotný vzhľad.
  • Vložte odsek pred každým pripojením, aby ste chránili nastavenie stránky.
  • Zjednotiť hlavičky/pätičky po pripojení, ak chcete jednotnú firemnú šablónu.
  • Aktualizovať polia a obsah ako posledný krok.
  • Pre veľmi veľké dávky ich rozdeľte do skupín a zlúčte skupiny, aby ste udržali stabilnú pamäť.

FAQ

  1. Môžem vynútiť, aby každý zdroj začínal na novej stránke? Áno. Vložte sekciu alebo zalomenie stránky pred každým AppendDocument volaním alebo nastavením SectionStart na NewPage.
  2. Ako zachovať štýly cieľa pri importovaní? Použiť ImportFormatMode.UseDestinationStyles v AppendDocument.
  3. Budú čísla strán a TOC aktualizované automaticky? Zavolať UpdateFields() (a UpdatePageLayout() pre presné stránkovanie) po všetkých pripojeniach.
  4. Je Office potrebný? Nie. Aspose.Words je samostatná knižnica.
 Slovenčina