Reference Guide
Programming / PDF / Splitting PDF documents by number of pages
In This Topic
    Splitting PDF documents by number of pages
    In This Topic

    In this example, we will see how to split a multipage PDF document into separate PDF documents that will contain the same number of pages. You can also examine how to optimize the file size of resulting PDF documents by reducing redundant resources and using packing option when saving documents.

    Copy Code
    'We assume that GdPicture has been correctly installed and unlocked.
    Dim src_pdf As New GdPicturePDF()
    Dim dest_pdf As New GdPicturePDF()
    If (src_pdf.LoadFromFile("source.pdf", False) = GdPictureStatus.OK) AndAlso
        (dest_pdf.NewPDF() = GdPictureStatus.OK) Then
        Dim filename As String = "dest", filetype As String = ".pdf"
        Dim pageCount As Integer = src_pdf.GetPageCount()
        If src_pdf.GetStat() = GdPictureStatus.OK Then
            Dim quotient As Integer = 0, remainder As Integer = 0
            For i As Integer = 1 To pageCount
                If dest_pdf.ClonePage(src_pdf, i) = GdPictureStatus.OK Then
                    quotient = Math.DivRem(i, 3, remainder)
                    If remainder = 0 Then
                        If (dest_pdf.RemoveUnusedResources() <> GdPictureStatus.OK) OrElse
                           (dest_pdf.SaveToFile(filename + quotient.ToString() + filetype, True) <> GdPictureStatus.OK) OrElse
                           (dest_pdf.CloseDocument() <> GdPictureStatus.OK) OrElse
                           (dest_pdf.NewPDF() <> GdPictureStatus.OK) Then
                            MessageBox.Show("Error occurred when handling destination file. Status: " + dest_pdf.GetStat().ToString(), "Document Splitter", MessageBoxButtons.OK, MessageBoxIcon.Error)
                            Exit For
                        End If
                    End If
                Else
                    MessageBox.Show("Error occurred when cloning the page. Status: " + dest_pdf.GetStat().ToString(), "Document Splitter", MessageBoxButtons.OK, MessageBoxIcon.Error)
                    Exit For
                End If
            Next
            If remainder <> 0 Then
                If (dest_pdf.RemoveUnusedResources() = GdPictureStatus.OK) AndAlso
                   (dest_pdf.SaveToFile(filename + (quotient + 1).ToString() + filetype, True) = GdPictureStatus.OK) AndAlso
                   (dest_pdf.CloseDocument() = GdPictureStatus.OK) Then
                    MessageBox.Show("Done!", "Document Splitter", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Else
                    MessageBox.Show("Error occurred when saving the last destination file. Status: " + dest_pdf.GetStat().ToString(), "Document Splitter", MessageBoxButtons.OK, MessageBoxIcon.Error)
                End If
            Else
                MessageBox.Show("Error occurred when cloning the page. Status: " + dest_pdf.GetStat().ToString(), "Document Splitter", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End If
        Else
            MessageBox.Show("Error occurred in GetPageCount() method. Status: " + src_pdf.GetStat().ToString(), "Document Splitter", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End If
    Else
        MessageBox.Show("The documents can't be loaded or created.", "Document Splitter", MessageBoxButtons.OK, MessageBoxIcon.Error)
    End If
    src_pdf.Dispose()
    dest_pdf.Dispose()
    Copy Code
    //We assume that GdPicture has been correctly installed and unlocked.
    GdPicturePDF src_pdf = new GdPicturePDF();
    GdPicturePDF dest_pdf = new GdPicturePDF();
    if ((src_pdf.LoadFromFile("source.pdf", false) == GdPictureStatus.OK) &&
        (dest_pdf.NewPDF() == GdPictureStatus.OK))
    {
        string filename = "dest", filetype = ".pdf";
        int pageCount = src_pdf.GetPageCount();
        if (src_pdf.GetStat() == GdPictureStatus.OK)
        {
            int quotient = 0, remainder = 0;
            for (int i = 1; i <= pageCount; i++)
            {
                if (dest_pdf.ClonePage(src_pdf, i) == GdPictureStatus.OK)
                {
                    quotient = Math.DivRem(i, 3, out remainder);
                    if (remainder == 0)
                    {
                        if ((dest_pdf.RemoveUnusedResources() != GdPictureStatus.OK) ||
                            (dest_pdf.SaveToFile(filename + quotient.ToString() + filetype, true) != GdPictureStatus.OK) ||
                            (dest_pdf.CloseDocument() != GdPictureStatus.OK) ||
                            (dest_pdf.NewPDF() != GdPictureStatus.OK))
                        {
                            MessageBox.Show("Error occurred when handling destination file. Status: " + dest_pdf.GetStat().ToString(), "Document Splitter", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            break;
                        }
                    }
                }
                else
                {
                    MessageBox.Show("Error occurred when cloning the page. Status: " + dest_pdf.GetStat().ToString(), "Document Splitter", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    break;
                }
            }
            if (remainder != 0)
            {
                if ((dest_pdf.RemoveUnusedResources() == GdPictureStatus.OK) &&
                    (dest_pdf.SaveToFile(filename + (quotient + 1).ToString() + filetype, true) == GdPictureStatus.OK) &&
                    (dest_pdf.CloseDocument() == GdPictureStatus.OK))
                {
                    MessageBox.Show("Done!", "Document Splitter", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    MessageBox.Show("Error occurred when saving the last destination file. Status: " + dest_pdf.GetStat().ToString(), "Document Splitter", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
                MessageBox.Show("Error occurred when cloning the page. Status: " + dest_pdf.GetStat().ToString(), "Document Splitter", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
        else
            MessageBox.Show("Error occurred in GetPageCount() method. Status: " + src_pdf.GetStat().ToString(), "Document Splitter", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
    else
        MessageBox.Show("The documents can't be loaded or created.", "Document Splitter", MessageBoxButtons.OK, MessageBoxIcon.Error);
    src_pdf.Dispose();
    dest_pdf.Dispose();