In This Topic
Programming / PDF / Merging two PDF documents by alternating pages from both files

Merging two PDF documents by alternating pages from both files

In This Topic

In this example, we will see 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 fronts first and then the backs.

Copy Code
'We assume that GdPicture has been correctly installed and unlocked.
Dim PdfSource1 As New GdPicturePDF()
Dim PdfSource2 As New GdPicturePDF()
Dim PdfDest As New GdPicturePDF() 
Dim status As GdPictureStatus = PdfSource1.LoadFromFile("input1.pdf", False)
If status <> GdPictureStatus.OK Then
    MessageBox.Show("The first PDF document can't be loaded. Error: " + status.ToString(), "Merging PDF Example", MessageBoxButtons.OK, MessageBoxIcon.Error)
    GoTo [end]
End If
status = PdfSource2.LoadFromFile("input2.pdf", False)
If status <> GdPictureStatus.OK Then
    MessageBox.Show("The second PDF document can't be loaded. Error: " + status.ToString(), "Merging PDF Example", MessageBoxButtons.OK, MessageBoxIcon.Error)
    GoTo [end]
End If
status = PdfDest.NewPDF()
If status <> GdPictureStatus.OK Then
    MessageBox.Show("The destination PDF document can't be created. Error: " + status.ToString(), "Merging PDF Example", MessageBoxButtons.OK, MessageBoxIcon.Error)
    GoTo [end]
End If
status = GdPictureStatus.OK
Dim PageCountSource1 As Integer = PdfSource1.GetPageCount()
Dim PageCountSource2 As Integer = PdfSource1.GetPageCount()
Dim MaxPage As Integer = Math.Max(PageCountSource1, PageCountSource2)
For Page As Integer = 1 To MaxPage
    If Page <= PageCountSource1 Then
        status = PdfDest.ClonePage(PdfSource1, Page)
    End If
    If status <> GdPictureStatus.OK Then
        Exit For
    End If
    If Page <= PageCountSource2 Then
        status = PdfDest.ClonePage(PdfSource2, Page)
    End If
    If status <> GdPictureStatus.OK Then
        Exit For
    End If
Next
If status <> GdPictureStatus.OK Then
    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 Then
        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 If
End If
[end]:
PdfSource1.Dispose()
PdfSource2.Dispose()
PdfDest.Dispose()
Copy Code
//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();