PDFsharp Merge PDF in Memory
C#
PDF
A small code demo that uses PDFsharp to merge multiple PDF files in the memory of the server. There is no need to read an/or write files to the disk.
View source on GitHubCode Snippets
using PdfSharp.Pdf;
using PdfSharp.Pdf.IO;
using System.Collections.Generic;
using System.IO;
public static byte[] Merge(List<byte[]> files)
{
var streams = new List<Stream>();
//add the byte arrays to the stream list
foreach (var file in files)
{
streams.Add(new MemoryStream(file));
}
return Merge(streams);
}
public static byte[] Merge(List<Stream> files)
{
using (var merged_pdf = new PdfDocument())
{
//loop all the uploaded files
foreach (var file in files)
{
//read the pdf file from the stream
var source_pdf = PdfReader.Open(file, PdfDocumentOpenMode.Import);
//loop each page in the source and add them to the new pdf
for (int i = 0; i < source_pdf.PageCount; i++)
{
merged_pdf.AddPage(source_pdf.Pages[i]);
}
}
//copy the new pdf to a memorystream
byte[] bin = null;
using (var stream = new MemoryStream())
{
merged_pdf.Save(stream, false);
bin = stream.ToArray();
}
//return the merged pdf as byte array
return bin;
}
}