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#]
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;

namespace DuplicatePage
{
    class Program
    {
        static void Main(string[] args)
        {
            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]
Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Imports System.Drawing

Namespace DuplicatePage
	Class Program
		Private Shared Sub Main(args As String())
			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")
		End Sub
	End Class
End Namespace