The Syncfusion Xamarin PDF library 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 Xamarin PDF library. Users can split a PDF file into a single page or multiple-page PDF document with just a few lines of code.
- //Create a zip file
- Syncfusion.Compression.Zip.ZipArchive zipArchive = new Syncfusion.Compression.Zip.ZipArchive();
- //Load an existing PDF document
- Stream docStream = typeof(MainPage).GetTypeInfo().Assembly.GetManifestResourceStream("Input.pdf");
- //Load the PDF document from stream
- using (PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream))
- {
- //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);
- //Save the document into a memory object
- MemoryStream ms = new MemoryStream();
- outputDocument.Save(ms);
- zipArchive.AddItem("Files" + pageIndex + ".pdf", ms, false, Syncfusion.Compression.FileAttributes.Normal);
- ms.Position = 0;
- }
- }
- //Zip the filename
- MemoryStream memoryStream = new MemoryStream();
- zipArchive.Save(memoryStream, false);
- //Save the stream as a file in the device and invoke it for viewing
- Xamarin.Forms.DependencyService.Get<ISave>().SaveAndView("SplitDocuments.zip", "application/zip", memoryStream);
- }
A range of pages can be split into a separate PDF document.
- //Create a zip file
- Syncfusion.Compression.Zip.ZipArchive zipArchive = new Syncfusion.Compression.Zip.ZipArchive();
- //Load an existing PDF document
- Stream docStream = typeof(MainPage).GetTypeInfo().Assembly.GetManifestResourceStream("Input.pdf");
- //Load the PDF document from stream
- using (PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream))
- {
- //Subscribe to the document split event.
- loadedDocument.DocumentSplitEvent += LoadDocument_DocumentSplitEvent;
- //Spit the document by ranges
- loadedDocument.SplitByRanges(new int[,] { { 0, 2 }, { 2, 4 } });
- }
- //Zip the filename
- MemoryStream memoryStream = new MemoryStream();
- zipArchive.Save(memoryStream, false);
- //Save the stream as a file in the device and invoke it for viewing
- Xamarin.Forms.DependencyService.Get<ISave>().SaveAndView("SplitDocuments.zip", "application/zip", memoryStream);
-
- void LoadDocument_DocumentSplitEvent(object sender, PdfDocumentSplitEventArgs args)
- {
- //Save the resulting document
- MemoryStream ms = new MemoryStream();
- args.PdfDocumentData.CopyTo(ms);
- zipArchive.AddItem(Guid.NewGuid().ToString() + ".pdf", ms, false, System.IO.FileAttributes.Normal);
- }
Users can get specific pages or delete certain pages from a PDF document.
- //Create a zip file
- Syncfusion.Compression.Zip.ZipArchive zipArchive = new Syncfusion.Compression.Zip.ZipArchive();
- //Load an existing PDF document
- Stream docStream = typeof(MainPage).GetTypeInfo().Assembly.GetManifestResourceStream("Input.pdf");
- //Load the PDF document from stream
- using (PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream))
- {
-
- //Create a new PdfDocument object
- 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);
- //Save the document into a memory object
- MemoryStream ms = new MemoryStream();
- outputDocument.Save(ms);
- zipArchive.AddItem("Files.pdf", ms, false, Syncfusion.Compression.FileAttributes.Normal);
- ms.Position = 0;
- }
- //Zip the filename
- MemoryStream memoryStream = new MemoryStream();
- zipArchive.Save(memoryStream, false);
- //Save the stream as a file in the device and invoke it for viewing
- Xamarin.Forms.DependencyService.Get<ISave>().SaveAndView("SplitDocuments.zip", "application/zip", memoryStream);
- }
Split a PDF document based on bookmarks.
- //Create a zip file
- Syncfusion.Compression.Zip.ZipArchive zipArchive = new Syncfusion.Compression.Zip.ZipArchive();
- //Load an existing PDF document
- Stream docStream = typeof(MainPage).GetTypeInfo().Assembly.GetManifestResourceStream("Input.pdf");
- //Load the PDF document from stream
- using (PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream))
- {
- //Create a 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);
- //Save the document into a memory object
- MemoryStream ms = new MemoryStream();
- document.Save(ms);
- zipArchive.AddItem(bookmark.Title, ms, false, Syncfusion.Compression.FileAttributes.Normal);
- ms.Position = 0;
- }
- }
- }
- }
- //Zip the filename
- MemoryStream memoryStream = new MemoryStream();
- zipArchive.Save(memoryStream, false);
- //Save the stream as a file in the device and invoke it for viewing
- Xamarin.Forms.DependencyService.Get<ISave>().SaveAndView("SplitDocuments.zip", "application/zip", memoryStream);
- }
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.