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