डॉक्यूमेंट मर्जर

यह Aspose.Words Document Merger for .NET आपको प्रोग्रामेटिक रूप से अनुमति देता है किसी भी संख्या में Word‑compatible दस्तावेज़ों को जोड़ता है एकल आउटपुट में, फ़ॉर्मेटिंग, स्टाइल, पेज लेआउट, हेडर/फ़ूटर और फ़ील्ड को संरक्षित रखते हुए। सामान्य उपयोगों में रिपोर्टों को एकत्रित करना, अनुबंध के एक्सहिबिट को बंडल करना, या आर्काइविंग के लिए उत्पन्न सामग्री को संकलित करना शामिल है।.

Windows, Linux, और macOS पर हेडलेस रूप से काम करता है। Microsoft Office की आवश्यकता नहीं है।.

इंस्टॉलेशन और सेटअप

  1. इंस्टॉल करें NuGet पैकेज Aspose.Words.
  2. ऐप स्टार्टअप पर मीटरड लाइसेंसिंग लागू करें ताकि मूल्यांकन वॉटरमार्क से बचा जा सके। देखें मीटरड लाइसेंसिंग .
  3. फ़्रेमवर्क आवश्यकताओं को सत्यापित करें स्थापना गाइड .

आईडीईज़: Visual Studio 2017–2026, JetBrains Rider, MonoDevelop.

समर्थित इनपुट / आउटपुट: DOC, DOCX, RTF, DOT, DOTX, DOTM, DOCM, Word 2003 XML, and 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);
}

फ़ील्ड, क्रॉस‑रेफ़रेंसेज़, और TOC

मर्ज करने के बाद, फ़ील्ड्स को अपडेट करें ताकि पृष्ठ संख्या, संदर्भ, और सामग्री‑सूची नए लेआउट से मेल खाए:

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

यदि आप एकल मास्टर TOC बनाए रखते हैं, तो उसे एक बार डालें और इसे ऑटो‑रीबिल्ड होने दें:

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

स्ट्रीम‑फ़र्स्ट / हाई‑वॉल्यूम मर्जेज

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 जब ब्रांड की निष्ठा महत्वपूर्ण हो; चुनें UseDestinationStyles समान रूप के लिए।.
  • एक डालें सेक्शन ब्रेक प्रत्येक जोड़ से पहले पेज सेटअप की सुरक्षा के लिए।.
  • हेडर/फ़ूटर को एकीकृत करें जोड़ने के बाद यदि आप एकल कॉरपोरेट टेम्पलेट चाहते हैं।.
  • फ़ील्ड्स और TOC को अपडेट करें अंतिम चरण के रूप में।.
  • बहुत बड़े बैचों के लिए, समूहों में विभाजित करें और समूहों को मिलाएँ ताकि मेमोरी स्थिर रहे।.

FAQ

  1. क्या मैं प्रत्येक स्रोत को नई पृष्ठ पर शुरू करने के लिए बाध्य कर सकता हूँ? हाँ। प्रत्येक से पहले एक सेक्शन या पेज ब्रेक डालें AppendDocument कॉल या सेट SectionStart को NewPage.
  2. इम्पोर्ट करते समय मैं डेस्टिनेशन स्टाइल्स को कैसे रखूँ? उपयोग करें ImportFormatMode.UseDestinationStyles में AppendDocument.
  3. क्या पृष्ठ संख्याएँ और TOC स्वचालित रूप से अपडेट होंगी? कॉल UpdateFields() (और UpdatePageLayout() सटीक पेजिनेशन के लिए) सभी जोड़ने के बाद।.
  4. क्या Office आवश्यक है? नहीं। Aspose.Words एक स्वतंत्र लाइब्रेरी है।.
 हिंदी