Συγχωνευτής Εγγράφων

Το Aspose.Words Document Merger for .NET σας επιτρέπει προγραμματιστικά συγχωνεύει οποιονδήποτε αριθμό εγγράφων συμβατών με το Word σε μια ενιαία έξοδο διατηρώντας τη μορφοποίηση, τα στυλ, τη διάταξη σελίδας, τις κεφαλίδες/υποσέλιδα και τα πεδία. Τυπικές χρήσεις περιλαμβάνουν τη σύνθεση αναφορών, τη συγκέντρωση παραρτημάτων συμβάσεων ή τη συγκέντρωση παραγόμενου περιεχομένου για αρχειοθέτηση.

Λειτουργεί χωρίς γραφικό περιβάλλον σε Windows, Linux και macOS. Δεν απαιτείται Microsoft Office.

Εγκατάσταση και Ρύθμιση

  1. Εγκαταστήστε το πακέτο NuGet Aspose.Words.
  2. Εφαρμόστε metered licensing κατά την εκκίνηση της εφαρμογής για να αποφύγετε τα υδατογράμματα αξιολόγησης. Δείτε Metered Licensing .
  3. Επαληθεύστε τις απαιτήσεις του framework στο Οδηγός Εγκατάστασης .

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

Υποστηριζόμενες Εισόδους / Εξόδους: DOC, DOCX, RTF, DOT, DOTX, DOTM, DOCM, Word 2003 XML, και Word 2007 XML.

Γρήγορη Εκκίνηση: Προσθήκη Πολλαπλών Εγγράφων

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

Λειτουργίες Μορφής Εισαγωγής:

  • KeepSourceFormatting — διατηρεί τα στυλ και τη άμεση μορφοποίηση κάθε πηγής (ιδανικό για επωνυμισμένα ένθετα).
  • UseDestinationStyles — αντιστοιχίζει τα ίδια ονόματα στυλ στις ορισμούς του προορισμού για ομοιόμορφη εμφάνιση.

Ξεκινώντας

Ξεκινήστε κάθε έγγραφο στο Νέα Σελίδα, Συνεχής, ή Σελίδα Ζυγών/Μονών:

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

Ενοποίηση περιθωρίων/μεγέθους σελίδας με αντιγραφή PageSetup από τμήμα προτύπου:

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

πληροφορίες αδειοδότησης

οδηγός εγκατάστασης:

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

Οδηγός Προγραμματιστή

Μετά τη συγχώνευση, ενημερώστε τα πεδία ώστε οι αριθμοί σελίδων, οι παραπομπές και Πίνακας Περιεχομένων ταιριάζουν με τη νέα διάταξη:

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

Σε αυτήν την ενότητα θα καλύψουμε τα παρακάτω Aspose.Words για τα πρόσθετα .NET:

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

Document AI – μετάφραση, περίληψη και έλεγχος γραμματικής εγγράφων με λειτουργίες που τροφοδοτούνται από AI

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
}

Συμβουλές απόδοσης:

  • Ομαδικές προσθήκες στη μνήμη· καλέστε UpdateFields() μία φορά στο τέλος.
  • Προτιμήστε UseDestinationStyles όταν θέλετε συνεπή στυλιζάρισμα σε δεκάδες εισροές.
  • Απορρίψτε Document παραδείγματα νωρίς σε μακριές αλυσίδες επεξεργασίας για να μειώσετε τη μέγιστη μνήμη.

Καλές πρακτικές

  • Προ‑επαληθεύστε για διαφθορά/κωδικούς πρόσβασης ώστε να αποφύγετε μερικές συγχωνεύσεις.
  • Επιλέξτε KeepSourceFormatting όταν η πιστότητα του brand είναι σημαντική· επιλέξτε UseDestinationStyles για ομοιόμορφη εμφάνιση.
  • Εισάγετε ένα διάλειμμα ενότητας πριν από κάθε προσθήκη για προστασία της ρύθμισης σελίδας.
  • Ενοποίηση κεφαλίδων/υποσέλιδων μετά την προσθήκη εάν θέλετε ένα ενιαίο εταιρικό πρότυπο.
  • Ενημέρωση πεδίων & Πίνακα Περιεχομένων ως το τελικό βήμα.
  • NuGet (Προτιμώμενη Μέθοδος).

FAQ

  1. Μπορώ να αναγκάσω κάθε πηγή να ξεκινά σε νέα σελίδα;? Ναι. Εισάγετε μια ενότητα ή αλλαγή σελίδας πριν από κάθε AppendDocument κλήση ή σύνολο SectionStart σε NewPage.
  2. Πώς μπορώ να διατηρήσω τα στυλ προορισμού κατά την εισαγωγή;? Χρησιμοποιήστε ImportFormatMode.UseDestinationStyles σε AppendDocument.
  3. Θα ενημερώνονται αυτόματα οι αριθμοί σελίδων και ο Πίνακας Περιεχομένων;? Καλέστε UpdateFields() (και UpdatePageLayout() για ακριβή σελιδοποίηση) μετά από όλες τις προσθήκες.
  4. Απαιτείται το Office;? Όχι. Aspose.Words είναι μια ανεξάρτητη βιβλιοθήκη.
 Ελληνικά