In document-centric workflows, combining multiple PDF files into a single document is a critical functionality in many .NET applications, ranging from enterprise document management systems to customer-facing invoicing platforms. While many tools exist for this PDF merging task, Spire.PDF for .NET stands out with its balance of simplicity, performance, and cost-effectiveness.

This guide explores how to merge PDF in C# using Spire.PDF, covering basic merging to advanced techniques with practical code examples.
- Why Programmatic PDF Merging Matters
- How to Merge PDFs in C#: Step-by-Step Guide
- Practical Example: Merge Selected Pages from Different PDFs
- Memory Efficient Solution: Merge PDF Files using Streams
- Conclusion
- FAQs
Why Programmatic PDF Merging Matters
In enterprise applications, PDF merging is crucial for:
- Consolidating financial reports
- Combining scanned document batches
- Assembling legal documentation packages
- Automated archiving systems
Spire.PDF for .NET stands out with:
- ✅ Pure .NET solution (no Acrobat dependencies)
- ✅ Cross-platform support (.NET framework, .NET Core, .NET 5+)
- ✅ Flexible page manipulation capabilities
How to Merge PDFs in C#: Step-by-Step Guide
Step 1. Install Spire.PDF
Before diving into the C# code to combine PDF files, it’s necessary to install the .NET PDF library via NuGet Package Manager.
- In Visual Studio, right-click your project in Solution Explorer
- Select Manage NuGet Packages
- Search for Spire.PDF and install
Or in Package Manager Console, run the following:
PM> Install-Package Spire.PDF
Step 2: Basic PDF Merging - C# / ASP.NET Sample
Spire.PDF provides a direct method PdfDocument.MergeFiles() method to merge multiple PDFs into a single file. The below C# code example defines three PDF file paths, merges them, and saves the result as a new PDF.
using Spire.Pdf;
namespace MergePDFs
{
class Program
{
static void Main(string[] args)
{
// Specify the PDF files to be merged
string[] files = new string[] {"sample0.pdf", "sample1.pdf", "sample2.pdf"};
// Merge PDF files
PdfDocumentBase pdf = PdfDocument.MergeFiles(files);
// Save the result file
pdf.Save("MergePDF.pdf", FileFormat.PDF);
}
}
}
Result: Combine three PDF files (total of 7 pages) into one PDF file.

Practical Example: Merge Selected Pages from Different PDFs
Merging selected pages involves combining specific pages from multiple PDFs into a new PDF document. Here’s how to achieve the task:
- Define the PDF files to be merged.
- Load PDFs into an array:
- Create an array of PdfDocument objects.
- Loops through to load each PDF into the array.
- Create a new PDF: Initializes a new PDF document to hold the merged pages.
- Insert specific pages into the new PDF:
- InsertPage(): Insert a specified page to the new PDF (Page index starts at 0).
- InsertPageRange(): Insert a range of pages to the new PDF.
- Save the merged PDF: Save the new document to a PDF file.
Code Example:
using Spire.Pdf;
namespace MergePDFs
{
class Program
{
static void Main(string[] args)
{
// Specify the PDF files to be merged
string[] files = new string[] {"sample0.pdf", "sample1.pdf", "sample2.pdf"};
// Create an array of PdfDocument
PdfDocument[] pdfs = new PdfDocument[files.Length];
// Loop through each PDF file
for (int i = 0; i < files.Length; i++)
{
pdfs[i] = new PdfDocument(files[i]);
}
// Create a new PdfDocument object
PdfDocument newPDF = new PdfDocument();
// Insert the selected pages from different PDFs to the new PDF file
newPDF.InsertPageRange(pdfs[0], 1, 2);
newPDF.InsertPage(pdfs[1], 0);
newPDF.InsertPage(pdfs[2], 1);
// Save the new PDF file
newPDF.SaveToFile("SelectivePageMerging.pdf");
}
}
}
Result: Combine selected pages from three separate PDF files into a new PDF.

Memory Efficient Solution: Merge PDF Files using Streams
For stream-based merging, refer to the C# code below:
using System.IO;
using Spire.Pdf;
namespace MergePDFsByStream
{
class Program
{
static void Main(string[] args)
{
// Specify the PDF files to be merged
string[] pdfFiles = {
"MergePdfsTemplate_1.pdf",
"MergePdfsTemplate_2.pdf",
"MergePdfsTemplate_3.pdf"
};
// Initialize a MemoryStream array
MemoryStream[] ms = new MemoryStream[pdfFiles.Length];
// Read all PDF files to the MemoryStream
for (int i = 0; i < pdfFiles.Length; i++)
{
byte[] fileBytes = File.ReadAllBytes(pdfFiles[i]);
ms[i] = new MemoryStream(fileBytes);
}
// Merge PDF files using streams
PdfDocumentBase pdf = PdfDocument.MergeFiles(ms);
// Save the merged PDF file
pdf.Save("MergePDFByStream.pdf", FileFormat.PDF);
}
}
}
Pro Tip: Learn more stream-based PDF handling techniques via the article: Load and Save PDF Files in Streams Using C#
Conclusion
Spire.PDF simplifies PDF merging in C# with its intuitive API and robust feature set. Whether you need to combine entire documents or specific pages, this library provides a reliable solution. By following the steps outlined in this guide, you can efficiently merge PDFs in your .NET applications while maintaining high quality and performance.
FAQs
Q1: Is Spire.PDF free to use?
A: Spire.PDF offers a free Community Edition with limitations (max 10 pages per document). To evaluate the commercial version without any limitations, request a free trial license here.
Q2: Can I merge PDFs from different sources?
A: Yes. Spire.PDF supports merging PDFs from various sources:
- Local Files: Use LoadFromFile() method.
- Streams: Use LoadFromStream() method.
- Base64: Convert Base64 to a byte array first, then use LoadFromBytes() method.
- URLs: Download the PDF to a stream or file first, then load it.
Q3: Can I add page numbers during merging?
A: After merging, you can add page numbers by following this guide: Add Page Numbers to a PDF in C#.
Q4. Where can I get support for Spire.PDF?
A: Check below resources: