This demo uses the DevExpress PDF Document API (PdfDocumentProcessor) to manage PDF pages. You can process the predefined sample file or supply your own document. To do the latter, select Upload a File in the file selection drop-down menu.
Select the required action and specify corresponding settings. Use the Process PDF button to update the document and download the result.
Select a Document
Sample_Main.pdf
using DevExpress.Pdf;
using DevExpress.Drawing;
Stream AddPage(Stream documentStream, PdfRectangle pageSize) {
using var processor = new PdfDocumentProcessor();
processor.LoadDocument(documentStream);
var newPage = processor.AddNewPage(pageSize);
var text = "New Page";
var font = new DXFont("Arial", 25);
using var brush = new DXSolidBrush(System.Drawing.Color.Black);
using var g = processor.CreateGraphicsPageSystem();
var textSize = g.MeasureString(text, font);
g.DrawString(text, font, brush, (float)(pageSize.Width - textSize.Width) / 2, (float)(pageSize.Height - textSize.Height) / 2);
g.AddToPageForeground(newPage);
var outputStream = new MemoryStream();
processor.SaveDocument(outputStream);
return outputStream;
}
Stream DeletePages(Stream documentStream, IEnumerable<int> pageRange) {
using var processor = new PdfDocumentProcessor();
processor.LoadDocument(documentStream);
foreach(var index in pageRange) {
if(index < 1 || index > processor.Document.Pages.Count)
continue;
processor.DeletePage(index);
}
var outputStream = new MemoryStream();
processor.SaveDocument(outputStream);
return outputStream;
}
Stream DuplicatePages(Stream documentStream, IEnumerable<int> pageRange) {
using var processor = new PdfDocumentProcessor();
processor.LoadDocument(documentStream);
foreach(var index in pageRange) {
if(index < 0 || index >= processor.Document.Pages.Count)
continue;
processor.Document.Pages.Add(processor.Document.Pages[index]);
}
var outputStream = new MemoryStream();
processor.SaveDocument(outputStream);
return outputStream;
}