Merging two PDF documents by alternating pages from both files in C#

This example shows how to merge two PDF documents, alternating a page from the first document and a page from the second document. This can be useful when you don’t have a duplex option on your scanner and want to scan a batch of documents, so you can acquire the frontsides first and then the backsides.


C#
//We assume that GdPicture has been correctly installed and unlocked.
GdPicturePDF PdfSource1 = new GdPicturePDF();
GdPicturePDF PdfSource2 = new GdPicturePDF();
GdPicturePDF PdfDest = new GdPicturePDF();
GdPictureStatus status = PdfSource1.LoadFromFile("input1.pdf", false);
if (status != GdPictureStatus.OK)
{
MessageBox.Show("The first PDF document can't be loaded. Error: " + status.ToString(), "Merging PDF Example", MessageBoxButtons.OK, MessageBoxIcon.Error);
goto end;
}
status = PdfSource2.LoadFromFile("input2.pdf", false);
if (status != GdPictureStatus.OK)
{
MessageBox.Show("The second PDF document can't be loaded. Error: " + status.ToString(), "Merging PDF Example", MessageBoxButtons.OK, MessageBoxIcon.Error);
goto end;
}
status = PdfDest.NewPDF();
if (status != GdPictureStatus.OK)
{
MessageBox.Show("The destination PDF document can't be created. Error: " + status.ToString(), "Merging PDF Example", MessageBoxButtons.OK, MessageBoxIcon.Error);
goto end;
}
status = GdPictureStatus.OK;
int PageCountSource1 = PdfSource1.GetPageCount();
int PageCountSource2 = PdfSource1.GetPageCount();
int MaxPage = Math.Max(PageCountSource1, PageCountSource2);
for (int Page = 1; Page <= MaxPage; Page++)
{
if (Page <= PageCountSource1)
status = PdfDest.ClonePage(PdfSource1, Page);
if (status != GdPictureStatus.OK)
break;
if (Page <= PageCountSource2)
status = PdfDest.ClonePage(PdfSource2, Page);
if (status != GdPictureStatus.OK)
break;
}
if (status != GdPictureStatus.OK)
{
MessageBox.Show("Error occurred when cloning. Error: " + status.ToString(), "Merging PDF Example", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
status = PdfDest.SaveToFile("output.pdf");
if (status == GdPictureStatus.OK)
{
MessageBox.Show("Done!", "Merging PDF Example", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("The final PDF document can't be saved. Error: " + status.ToString(), "Merging PDF Example", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
end:
PdfSource1.Dispose();
PdfSource2.Dispose();
PdfDest.Dispose();

This code sample is an example that illustrates how to use our SDK. Please adapt it to your specific use case.