Aspose.Words Doküman Birleştirme Aracı .NET için

Aspose.Words Document Merger for .NET programlı olarak Word uyumlu belgelerin herhangi bir sayısını tek bir çıkışa eklemenizi sağlar, aynı zamanda biçimlendirme, stiller, sayfa düzenleri, başlıklar/yürücüler ve alanları koruyabilirsiniz. tipik kullanımlar toplama raporları, paketleme sözleşme gösterileri veya arşivleme için oluşturulan içeriği birleştirmek içerir.

Windows, Linux ve macOS’ta başlık olmadan çalışır. Microsoft Office gerektirmez.

Yükleme ve Setup

  • NuGet paketini kurun Aspose.Words.
  • Değerlendirme su işaretlerinden kaçınmak için uygulama başlangıçında ölçülen lisans uygulayın. bakınız Metered Licensing .
  • Çerçeve gereksinimlerini Yükleme Kılavuzu adresinde kontrol edin/).

Desteklenen girişler (seçilmiş): DOC, DOCX, DOTX/DOTM, RTF, ODT, HTML/MHTML, PDF, TXT, WordML.Desteklenen çıkışlar: DOCX, DOC, PDF, HTML (düz / akış), MHTML, ODT, RTF, resimler, EPUB, XPS ve daha fazlası.

Hızlı Başlangıç: Çeşitli belgeleri eklemek

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

İthalat Modları

  • KeepSourceFormatting - her kaynağın stillerini ve doğrudan biçimlendirilmesini korur (markalı içerikler için idealdir).
  • UseDestinationStyles - eşsiz görünüm için varış noktası tanımlarına benzer tarz isimleri haritalar.

Kontrol Edilen Bölüm & Sayfa Tasarımı

Her belgeyi Yeni Sayfa , Sürdürülebilir veya Even/Odd Page sayfasında başlatın:

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

Marjları / sayfa boyutunu kopyalayarak birleştirin PageSetup Bir şablon bölümünden:

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

Başlar, ayaklar ve su işaretleri

Kaynak başlıkları / ayakları tutun veya birleştirildikten sonra bir master set ile değiştirin:

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

Alanlar, Çapraz Referanslar ve TOC

Birleştikten sonra, güncelleştirme alanları sayfa sayısı, referanslar ve ** İçerik Tablosu** yeni düzenle uyumludur:

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

Eğer tek bir master TOC’u tutarsanız, bir kez girin ve otomatik olarak geri verin:

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

Şifre Korunan Giriş ve Güvenli Çıkış

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 / Yüksek 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
}

performans teklifi

  • Batch hafızada açılır; çağrı UpdateFields() Sonunda bir kere.
  • UseDestinationStyles tercih edin, onlarca giriş üzerinde tutarlı bir stil yapmak istiyorsanız.
  • Dispose Document Uzun borularda erken örnekler, zirve hafızasını azaltmak için.

Karışık biçimleri (HTML, PDF, TXT)

  • HTML/MHTML : Stiller ve resimler ile ithalat (bir bağlantı veya yerleşik).
  • PDF : sayfalar mümkün olduğunca yeniden akışlı içerik olarak ithal edilir; karmaşık düzenler çıkış sırasında sabit biçimlere (örneğin, PDF) kaydedilir).
  • TXT : düz paragraflar olarak eklendi; tutarlılık için ithalat sonrası bir temel tarzı uygulayın.

En İyi Uygulamalar

  • Korrupsiyon / şifre için önceden geçerlidir kısmi birleşmelerden kaçınmak için.
  • Marka sadakat sorunu olduğunda **KeepSourceFormatting ** seçin; eşsiz görünüm için UseDestinationStyles ‘u seçiniz.
  • Sayfa ayarlarını korumak için her eklenti öncesinde bir section break girin.
  • Tek bir şirket şablonu istiyorsanız açtıktan sonra başlıkları / ayakları birleştirin.
  • Avrim alanları & TOC son adım olarak güncellenir.
  • Çok büyük maçlar için, hafızayı istikrarlı tutmak için gruplara bölün ve grupları birleştirin.

FAQ Hakkında

**Her kaynağı yeni bir sayfada başlatmaya zorlayabilir miyim?**Evet: Her bir bölüm veya sayfa kırılmadan önce bir bölümü girin AppendDocument İletişim veya Set SectionStart için NewPage.

**İthalat sırasında hedefleri nasıl tutuyorum?**Kullanımı ImportFormatMode.UseDestinationStyles içinde AppendDocument.

**Sayfa sayısı ve TOC otomatik olarak güncellenir mi?**Çağrı UpdateFields() (ve UpdatePageLayout() Tüm sayfaların arkasında (tüm sayfalar arka arkaya.

**Şifreli girişleri birleştirebilir miyim ve şifrelenmiş çıkışlar üretebilir mi?**Evet - sağlama LoadOptions.Password Giriş ve Kullanım için PdfSaveOptions.EncryptionDetails (ya da OoxmlSaveOptions.Password) Üretimi için.

**Ofis İhtiyacı Var mı?**No. Aspose.Words ayrı bir kütüphane.

 Türkçe