Create a New PDF for Each Page in a PDF

The code below shows you how to create a new PDF file for each page in an existing file.

This sample requires a Tools license.

C#
using System;
using System.IO;
using SolidFramework.Model.Pdf.Pages;

namespace PagestoPDFs
{
    class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            // Call your Solid Documents License
            SolidFramework.License.Import(@"C:\MyFolder\license.xml");

            // Get multiple files
            string pdfPath = @"C:\YourFolder\yourpdf.pdf";

            //*Extract Single PDF Pages from a Multiple Page PDF File*//

            PagesModel model = new PagesModel();
            model.OpenPDF(pdfPath);

            //Define a string called partsFolder to get the directory information for the selected file
            String partsFolder = Path.GetDirectoryName(pdfPath);
            partsFolder = Path.Combine(partsFolder, Path.GetFileNameWithoutExtension(pdfPath));
            Directory.CreateDirectory(partsFolder);

            // Find the number of pages in your pdf file
            if (model.PagesCount > 1)
            {
                for (int pageIndex = 0;
                    pageIndex < model.PagesCount;
                    pageIndex++
                    )
                {
                    model.Selection.Clear();
                    model.Selection.Add(pageIndex);

                    String path = Path.Combine(partsFolder, Path.GetFileName(pdfPath));
                    path = Path.ChangeExtension(path, "." + (pageIndex + 1).ToString() + ".pdf");
                    model.Save(path, true);
                }
            }
            else // single page case workaround
            {
                String path = Path.Combine(partsFolder, Path.GetFileName(pdfPath));
                path = Path.ChangeExtension(path, ".1.pdf");
                File.Copy(pdfPath, path, true);
                File.SetAttributes(path, FileAttributes.Normal); // make sure the copy is not readonly
            }
            model.Close();

        }
    }
}
C++
#include "stdafx.h"
#include "SolidFramework.h"

using namespace std;

int main()
{
    // Call your Solid Documents License
    SolidFramework::License::Import(L"c:\\MyFolder\\license.xml");

    // Add the PDF file to convert
    wstring pdfPath(L"c:\\YourFolder\\yourpdf.pdf");

    /*Extract Single PDF Pages from a Multiple Page PDF File*/
    SolidFramework::Model::Pdf::Pages::PagesModelBasePtr model(new SolidFramework::Model::Pdf::Pages::PagesModelBase());
    model->OpenPDF(pdfPath);

    //Define a string called partsFolder to get the directory information for the selected file
    wstring partsFolder = SolidFramework::Platform::Path::GetDirectoryName(pdfPath);
    partsFolder = SolidFramework::Platform::Path::Combine(partsFolder, SolidFramework::Platform::Path::GetFileName(pdfPath));
    if (!SolidFramework::Platform::Directory::Exists(partsFolder))
    {
        SolidFramework::Platform::Directory::CreateDirectoryW(partsFolder);
    }

    // Find the number of pages in your pdf file
    int pagesCount = model->getPagesCount();
    if (pagesCount > 1)
    {
        for (int pageIndex = 0;
            pageIndex < pagesCount; pageIndex++ ) { SolidFramework::Plumbing::PagesArrayPtr pageArray(new SolidFramework::Plumbing::PagesArray); pageArray->Add(pageIndex);
            model->setSelection(pageArray);
            wstring path = SolidFramework::Platform::Path::Combine(partsFolder, SolidFramework::Platform::Path::GetFileName(pdfPath));
            wstring changeExtension(L".");
            changeExtension.append(to_wstring(pageIndex + 1));
            changeExtension.append(L".pdf");
            path = SolidFramework::Platform::Path::ChangeExtension(path, changeExtension);
            model->Save(path, true);
            pageArray->Dispose();
        }
    }
    else // single page case workaround
    {
        wstring path = SolidFramework::Platform::Path::Combine(partsFolder, SolidFramework::Platform::Path::GetFileName(pdfPath));
        path = SolidFramework::Platform::Path::ChangeExtension(path, L".1.pdf");
        SolidFramework::Platform::File::Copy(pdfPath, path, true);
        SetFileAttributes(path.c_str(), FILE_ATTRIBUTE_NORMAL); // make sure the copy is not readonly
    }

    model->Close();
    model->Dispose();

    return 0;
}
VB.Net
Imports System.IO
Imports SolidFramework.Converters.Plumbing

Module PDFtoWord

Sub Main()

' Call your Solid Documents License
SolidFramework.License.Import("C:MyFolderlicense.xml")

'Define a variable for your source file
Dim sPdfPath As String

' Define a String for the output file
Dim sDocxPath As String

' Define your Solid Framework Converter
Dim myConverter As SolidFramework.Converters.PdfToWordConverter

' Set your file path
sPdfPath = ("C:MyfolderMyFile.pdf")

' Set your output file and location
sDocxPath = Path.ChangeExtension(sPdfPath, ".docx")

' Set the converter
myConverter = New SolidFramework.Converters.PdfToWordConverter

' Set the preferred conversion properties

' Add files to convert.
myConverter.AddSourceFile(sPdfPath)

' Detect Headers and Footers
myConverter.HeaderAndFooterMode = HeaderAndFooterMode.Detect

' Turn on Solid Documents Optical Character Recognition (OCR) for Scanned Files
myConverter.TextRecoveryEngine = TextRecoveryEngine.Automatic

' Set the layout of the reconstruction (Exact for Forms)
myConverter.ReconstructionMode = ReconstructionMode.Flowing

' Convert the File.
myConverter.ConvertTo(sDocxPath, True)

' Clean up
myConverter.Dispose()

End Sub

End Module