Merge PDF
Merge PDF
It is possible to merge PDFs in .NET using TallPDF. In this code sample we will create a new PDF by stitching two existing PDF documents.
C# merge PDF code sample
using System;
using System.IO;
using TallComponents.PDF.Layout;
using TallComponents.PDF.Layout.Paragraphs;
using TallComponents.PDF.Layout.Shapes;
namespace PageShapeSample
{
class Program
{
static void Main(string[] args)
{
using ( FileStream fileA = new FileStream(
"SuccesStory_Gems.pdf", FileMode.Open, FileAccess.Read))
using ( FileStream fileB = new FileStream(
"SuccesStory_Netco.pdf", FileMode.Open, FileAccess.Read))
{
Document document = new Document();
addPages(document, fileA);
addPages(document, fileB);
using (FileStream file = new FileStream(
"out.pdf", FileMode.Create, FileAccess.Write))
{
document.Write(file);
}
}
}
static void addPages(Document document, FileStream file)
{
PageShape pageShape = new PageShape(file, 0, "");
int n = pageShape.PageCount;
for (int i = 0; i < n; i++)
{
pageShape.PageIndex = i;
Section section = new Section();
section.StartOnNewPage = true;
section.PageSize = new PageSize(
pageShape.Width, pageShape.Height);
section.Margin.Left = 0;
section.Margin.Right = 0;
section.Margin.Top = 0;
section.Margin.Bottom = 0;
document.Sections.Add(section);
Drawing drawing = new Drawing(
pageShape.Width, pageShape.Height);
drawing.Shapes.Add(pageShape.Clone());
section.Paragraphs.Add(drawing);
}
}
}
}
Sub Main()
' Find all pdf documents in input folder.
Dim directoryInfo As New DirectoryInfo("..\..\../inputdocuments")
Dim allPDFs As FileInfo() = directoryInfo.GetFiles("*.pdf")
' Create a document for the merged result.
Dim mergedDocument As New Document()
' Keep a list of input streams to close when done.
Dim streams As New List(Of FileStream)()
For Each fileInfo As FileInfo In allPDFs
' Open input stream and add to list of streams.
Dim stream As New FileStream(fileInfo.FullName, FileMode.Open, FileAccess.Read)
streams.Add(stream)
' Open input document.
Dim document As New Document(stream)
' Append all pages to target document.
' The target document holds references to data in the input stream.
' For efficiency it does not copy this data so the input streams
' should not be closed before the merged document is saved.
mergedDocument.Pages.AddRange(document.Pages.CloneToArray())
Next
' Save merged document.
Using output As New FileStream("..\..\output.pdf", FileMode.Create, FileAccess.Write)
mergedDocument.Write(output)
End Using
' Close all input streams.
For Each stream As FileStream In streams
stream.Close()
Next
End Sub