The Syncfusion WinUI PDF library that allows users to split a PDF file into multiple sub-documents quickly and accurately. It also allows users to split, combine, import, and append PDFs.
Here is an example of how to split PDF files in C# using the Syncfusion WinUI PDF library. You can split a PDF file into a single page or multiple page PDF document with just a few lines of code.
//Open an existing PDF document.
Assembly assembly = typeof(MainWindow).GetTypeInfo().Assembly;
Stream inputFileStream = assembly.GetManifestResourceStream("Input.pdf");
//Load the PDF document from stream
using (PdfLoadedDocument loadedDocument = new PdfLoadedDocument(inputFileStream))
{
//Iterate over the pages
for (int pageIndex = 0; pageIndex < loadedDocument.PageCount; pageIndex++)
{
//Create a new PdfDocument object
using (PdfDocument outputDocument = new PdfDocument())
{
//Import the page from the loadedDocument to the outputDocument
outputDocument.ImportPage(loadedDocument, pageIndex);
//Give file path
string filePath = "Result"+pageIndex+".pdf";
//Save the document into a filestream object
using (FileStream outputFileStream = new FileStream(filePath, FileMode.Create, FileAccess.Write))
{
outputDocument.Save(outputFileStream);
}
}
}
}
A range of pages can be split into a separate PDF document.
//Open an existing PDF document.
Assembly assembly = typeof(MainWindow).GetTypeInfo().Assembly;
Stream inputStream = assembly.GetManifestResourceStream("Input.pdf");
using (PdfLoadedDocument loadedDocument = new PdfLoadedDocument(inputStream))
{
int[,] values = new int[,] { { 0, 2 }, { 2, 4 } };
loadedDocument.DocumentSplitEvent += (object sender, PdfDocumentSplitEventArgs args) =>
{
string filePath = Guid.NewGuid().ToString()+".pdf";
//Save the resulting document.
FileStream outputStream = new FileStream(filePath, FileMode.CreateNew);
args.PdfDocumentData.CopyTo(outputStream);
outputStream.Close();
};
//Spit the document by ranges.
loadedDocument.SplitByRanges(values);
}
Users can get specific pages or delete certain pages from a PDF document.
//Open an existing PDF document.
Assembly assembly = typeof(MainWindow).GetTypeInfo().Assembly;
Stream inputFilestream = assembly.GetManifestResourceStream("Input.pdf");
//Load the PDF document from stream
using (PdfLoadedDocument loadedDocument = new PdfLoadedDocument(inputFilestream))
{
//Creates a new PDF document
using (PdfDocument outputDocument = new PdfDocument())
{
//Remove the first page in the PDF document
loadedDocument.Pages.RemoveAt(0);
//Import certain pages to the new PDF document
outputDocument.ImportPage(loadedDocument, 0);
//Give file path
string filePath = "Split"+".pdf";
//Save the document into a filestream object
using (FileStream outputFileStream = new FileStream(filePath, FileMode.Create, FileAccess.Write))
{
outputDocument.Save(outputFileStream);
}
}
}
Split a PDF document based on bookmarks.
//Open an existing PDF document
Assembly assembly = typeof(MainWindow).GetTypeInfo().Assembly;
Stream inputFilestream = assembly.GetManifestResourceStream("Bookmark.pdf");
//Load the PDF document from stream
using (PdfLoadedDocument loadedDocument = new PdfLoadedDocument(inputFilestream))
{
//Create bookmark object
PdfBookmarkBase bookmarks = loadedDocument.Bookmarks;
//Load the PDF document from stream
foreach (PdfBookmark bookmark in bookmarks)
{
if (bookmark.Destination != null)
{
if (bookmark.Destination.Page != null)
{
int endIndex = bookmark.Destination.PageIndex;
//Create a new PDF document
using (PdfDocument document = new PdfDocument())
{
foreach (PdfLoadedBookmark childBookmark in bookmark)
{
endIndex = childBookmark.Destination.PageIndex;
}
//Import the pages to the new PDF document
document.ImportPageRange(loadedDocument, bookmark.Destination.PageIndex, endIndex);
//Give file path
string filePath = bookmark.Title +".pdf";
//Save the PDF file with the bookamark title's name.
using (var outputFileStream = new FileStream(filePath, FileMode.Create, FileAccess.Write))
{
document.Save(outputFileStream);
}
}
}
}
}
}
Greatness—it’s one thing to say you have it, but it means more when others recognize it. Syncfusion® is proud to hold the following industry awards.