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.