Aspose.Words dokumenter for .NET

Aspose.Words Document Merger for .NET giver dig mulighed for programmeret tilføjelse af ethvert antal Word-kompatible dokumenter til en enkelt udgang, samtidig med at du bevarer formatering, stilarter, siden layout, overskrifter/footere og felter. Typiske anvendelser omfatter indsamling af rapporter, bundling af kontraktudstillinger eller aggregering af genereret indhold til arkivering.

Arbejder uden hoved på Windows, Linux og macOS. Ingen Microsoft Office kræves.

Installation og installation

  • Installation af NuGet-pakken Aspose.Words.
  • Anvend målt licens på app startups for at undgå evaluering vandmærker. Se Metered Licensing .
  • Kontrollér rammevilkårene i Installation Guide .

Understøttede indtægter (valgt): DOC, DOCX, DOTX/DOTM, RTF, ODT, HTML/MHTML, PDF, TXT, WordML.Støttet udgang: DOCX, DOC, PDF, HTML (fixed/flow), MHTML, ODT, RTF, billeder, EPUB, XPS og meget mere.

Hurtig start: Tilføj flere dokumenter

using Aspose.Words;

// Destination (master) document
var master = new Document();
var builder = new DocumentBuilder(master);

// Start on a clean page
builder.InsertBreak(BreakType.SectionBreakNewPage);

// Append each source with chosen import mode
ImportFormatMode mode = ImportFormatMode.KeepSourceFormatting; // or UseDestinationStyles

foreach (string path in new [] { "intro.docx", "spec.docx", "annex.rtf" })
{
    var src = new Document(path);
    master.AppendDocument(src, mode);
    // Optional: force each source to start on a new page
    builder.MoveToDocumentEnd();
    builder.InsertBreak(BreakType.SectionBreakNewPage);
}

// Refresh fields (page numbers, TOC, cross‑refs)
master.UpdateFields();
master.Save("MergedOutput.pdf");

Import af formater

  • KeepSourceFormatting – bevarer hver kildens stilarter og direkte formatering (ideelt til mærkede indsæt).
  • UseDestinationStyles – mapper identiske stilnavne til destinationens definitioner for en ensartet udseende.

Kontrolleret sektion & side layout

Start hvert dokument på **Ny side ** , **Continuous ** eller Even/Odd Page:

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

Unify marginer/side størrelse ved at kopiere PageSetup Fra en template sektion:

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

Headers, Footers og Watermarks

Hold kildehoved/footere, eller erstatte dem med en master set efter fusionen:

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

Felder, kryds-referencer og TOC

Efter fusionen opdaterer du felterne, så siderne, referencerne og Table of Contents matcher den nye layout:

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

Hvis du opretholder en enkelt master TOC, indsæt den én gang og lad det automatisk genoprette:

var b = new DocumentBuilder(master);
b.MoveToDocumentStart();
b.InsertTableOfContents("TOC \o \h \z \u");  // classic TOC switch set
master.UpdateFields();

Password-beskyttet input og sikker udgang

using Aspose.Words.Loading;

var load = new LoadOptions { Password = "secret" };
var protectedDoc = new Document("protected.docx", load);
master.AppendDocument(protectedDoc, ImportFormatMode.KeepSourceFormatting);

// Save encrypted PDF
using Aspose.Words.Saving;
var pdf = new PdfSaveOptions
{
    EncryptionDetails = new PdfEncryptionDetails("openPwd", "ownerPwd",
        PdfEncryptionAlgorithm.RC4_128)
    { Permissions = PdfPermissions.DisallowAll }
};
master.Save("MergedEncrypted.pdf", pdf);

Stream-First / High-Volume Merges

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.Pdf);
    output.Position = 0;
    // return/output stream
}

Udførelsestips

  • Batch appends i hukommelsen; opkald UpdateFields() En gang i slutningen.
  • Foretrækker UseDestinationStyles , når du vil have konsekvent styling over tusindvis af indtægter.
  • Dispose Document Eksempler tidligt i lange rør til at reducere peak hukommelse.

Behandling af blandede formater (HTML, PDF, TXT)

  • HTML/MHTML : import med stilarter og billeder (linket eller indlejret).
  • PDF : sider importeres som genflydende indhold, hvor det er muligt; komplekse layouter bevares under udgivelsen til faste formater (f.eks. PDF).
  • TXT : tilføjet som flade afsnit; anvend en basestil efter import for konsistens.

Bedste praksis

  • Pre-validate for korruption/passwords for at undgå partielle blandinger.
  • Vælg **KeepSourceFormatting ** , når mærket er troværdigt; vælg UseDestinationStyles for et ensartet udseende.
  • Indtast en section break før hver append for at beskytte sidesætningen.
  • Unify headers/footers efter åbning, hvis du vil have en enkelt selskabsmodel.
  • Update felt & TOC som det endelige skridt.
  • For meget store partier, opdelt i grupper og slå grupperne for at holde hukommelsen stabil.

FAQ

**Kan jeg tvinge hver kilde til at starte på en ny side?**Indsæt en sektion eller side break før hver AppendDocument Opkald eller set SectionStart til NewPage.

**Hvordan opretholder jeg destinationsstiler, mens jeg importerer?**Brug af ImportFormatMode.UseDestinationStyles I AppendDocument.

**Vil sidnummer og TOC opdateres automatisk?**Ring til UpdateFields() (og UpdatePageLayout() for præcis side) efter alle appends.

**Kan jeg blande krypterede indtægter og producere kryptet output?**Ja, det giver LoadOptions.Password For indtægter og brug PdfSaveOptions.EncryptionDetails (eller OoxmlSaveOptions.Password) for produktionen.

**Er der brug for kontor?**No. Aspose.Words er en selvstændig bibliotek.

 Dansk