How to Duplicate a Page within a PDF Document in C#, VB.NET

In some circumstance where we need to create a copy of the existing pages in our PDF document instead of copying the entire file, in particular, if we have to create hundreds copies of a certain page, it can be tedious to copy the page one after another. This article demonstrates a solution for how to duplicate a page in a PDF document and create multiple copies at a time using Spire.PDF.

In this example, I prepare a sample PDF file that only contains one page and eventually I’ll create ten copies of this page in the same document. Main method would be as follows:

Code Snippet:

Step 1: Create a new PDF document and load the sample file.

PdfDocument pdf = new PdfDocument("Sample.pdf");

Step 2: Get the first page from PDF, get the size of the page. Create a new instance of Pdf Template object based on the content and appearance of the first page.

PdfPageBase page = pdf.Pages[0];
SizeF size = page.Size;
PdfTemplate template = page.CreateTemplate();

Step 3: Create a new PDF page with the method Pages.Add() based on the size of the first page, draw the template on the new page at the specified location. Use a for loops to get more copies of this page.

for (int i = 0; i < 10; i++)
{
    page = pdf.Pages.Add(size, new PdfMargins(0));
    page.Canvas.DrawTemplate(template, new PointF(0, 0));
}

Step 4: Save the file.

pdf.SaveToFile("Result.pdf");

Output:

Ten copies of the first page have been created in the sample PDF document.

How to Duplicate a Page within a PDF Document in C#, VB.NET

Full Code:

[C#]
PdfDocument pdf = new PdfDocument("Sample.pdf");

PdfPageBase page = pdf.Pages[0];
SizeF size = page.Size;
PdfTemplate template = page.CreateTemplate();

for (int i = 0; i < 10; i++)
{
    page = pdf.Pages.Add(size, new PdfMargins(0));
    page.Canvas.DrawTemplate(template, new PointF(0, 0));
}
pdf.SaveToFile("Result.pdf");
[VB.NET]
Dim pdf As New PdfDocument("Sample.pdf")

Dim page As PdfPageBase = pdf.Pages(0)
Dim size As SizeF = page.Size
Dim template As PdfTemplate = page.CreateTemplate()

For i As Integer = 0 To 9
	page = pdf.Pages.Add(size, New PdfMargins(0))
	page.Canvas.DrawTemplate(template, New PointF(0, 0))
Next
pdf.SaveToFile("Result.pdf")