Dokumentu apvienotājs
Šis Aspose.Words Document Merger for .NET ļauj jums programmatiski apvienot jebkuru skaitu ar Word‑compatible dokumentiem vienā izvadē, saglabājot formatējumu, stilus, lapas izkārtojumu, galvenes/kājenes un laukus. Tipiski lietojumi ietver pārskatu apvienošanu, līgumu pielikumu grupēšanu vai ģenerētā satura apkopošanu arhivēšanai.
Darbojas bez galvas (headless) operētājsistēmās Windows, Linux un macOS. Nav nepieciešams Microsoft Office.
Instalēšana un iestatīšana
- Instalējiet NuGet pakotni
Aspose.Words. - Pielietojiet mērīta licencēšanas programmas startēšanas laikā, lai izvairītos no novērtējuma ūdenszīmēm. Skatīt Mērīta licencēšana .
- Pārbaudiet ietvara prasības Instalācijas ceļvedis .
IDE: Visual Studio 2017–2026, JetBrains Rider, MonoDevelop.
Atbalstītie ievades / izvades: DOC, DOCX, RTF, DOT, DOTX, DOTM, DOCM, Word 2003 XML, and Word 2007 XML.
Ātrais sākums: Pievienot vairākus dokumentus
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");Importēšanas formāta režīmi:
- KeepSourceFormatting — saglabā katra avota stilus un tiešo formatēšanu (ideāli piemērots zīmola ievietojumiem).
- UseDestinationStyles — kartē identiskus stilu nosaukumus uz galamērķa definīcijām, lai izveidotu vienotu izskatu.
Kontrolēta sekcija & lapas izkārtojums
Sāciet katru dokumentu uz Jauna lapa, Pastāvīgs, vai Pāra/Nepāra lapa:
var sect = master.LastSection;
sect.PageSetup.SectionStart = SectionStart.NewPage; // Continuous, EvenPage, OddPageApvienot malas/lapas izmēru, kopējot PageSetup no veidnes sadaļas:
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;
}Galvenes, kājenes un ūdenszīmes
Saglabājiet avota galvenes/kājenes, vai aizstājiet tās ar galveno komplektu pēc sapludināšanas:
// 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);
}Lauki, krustatsauces un TOC
Pēc apvienošanas atjauniniet laukus, lai lapas numuri, atsauces un Saturs atbilstu jaunajam izkārtojumam:
master.UpdateFields();
master.UpdatePageLayout(); // ensures accurate page count
master.UpdateTableLayout(); // improves complex table paginationJa jūs uzturējat vienu galveno TOC, ievietojiet to vienreiz un ļaujiet tam automātiski atjaunoties:
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();Straume‑pirmais / Liela‑apjoma sapludināšanas
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
}Veiktspējas padomi:
- Pārlādējiet pievienošanas grupas atmiņā; izsauciet
UpdateFields()vienreiz beigās. - Dod priekšroku UseDestinationStyles kad vēlaties konsekventu stilu visā desmitiem ievades vienumu.
- Atbrīvojiet
Documentinstancēm agrīni garos cauruļvados, lai samazinātu maksimālo atmiņas patēriņu.
Labākās prakses
- Pārbaudi iepriekš pret korupciju/parolēm, lai izvairītos no daļējiem sapludinājumiem.
- Izvēlieties KeepSourceFormatting kad svarīga zīmola precizitāte; izvēlieties UseDestinationStyles vienotam izskatam.
- Ievietojiet sadaļas pārtraukums pirms katras pievienošanas, lai aizsargātu lapas iestatījumus.
- Apvienot galvenes/kājēdas pēc pievienošanas, ja vēlaties vienu korporatīvu veidni.
- Atjaunināt laukus & satura rādītāju kā pēdējais solis.
- Ļoti lielām partijām sadaliet tās grupās un apvienojiet grupas, lai atmiņa būtu stabila.
FAQ
- Vai varu piespiest katru avotu sākt uz jaunas lapas? Jā. Ievietojiet sadaļu vai lapas pārtraukumu pirms katra
AppendDocumentizsaukuma vai iestatījumaSectionStartuzNewPage. - Kā es varu saglabāt mērķa stilus, importējot? Izmantojiet
ImportFormatMode.UseDestinationStylesiekšAppendDocument. - Vai lapas numuri un satura rādītājs tiks atjaunināti automātiski? Izsauciet
UpdateFields()(unUpdatePageLayout()precīzai lappušu numerēšanai) pēc visiem pievienojumiem. - Vai Office ir nepieciešams? Nē. Aspose.Words ir neatkarīga bibliotēka.