public static List <byte[]> Split(PdfReader reader)
{
int p = 0;
Document document;
var data = new List <byte[]>();
for (p = 1; p <= reader.NumberOfPages; p++)
{
using (MemoryStream memoryStream = new MemoryStream())
{
document = new iTextSharp.text.Document();
PdfWriter writer = PdfWriter.GetInstance(document, memoryStream);
writer.SetPdfVersion(PdfWriter.PDF_VERSION_1_2);
writer.CompressionLevel = PdfStream.BEST_COMPRESSION;
writer.SetFullCompression();
document.SetPageSize(reader.GetPageSize(p));
document.NewPage();
document.Open();
document.AddDocListener(writer);
PdfContentByte cb = writer.DirectContent;
PdfImportedPage pageImport = writer.GetImportedPage(reader, p);
int rot = reader.GetPageRotation(p);
if (rot == 90 || rot == 270)
{
cb.AddTemplate(pageImport, 0, -1.0F, 1.0F, 0, 0, reader.GetPageSizeWithRotation(p).Height);
}
else
{
cb.AddTemplate(pageImport, 1.0F, 0, 0, 1.0F, 0, 0);
}
document.Close();
document.Dispose();
//File.WriteAllBytes(DestinationFolder + "/" + p + ".pdf", memoryStream.ToArray());
data.Add(memoryStream.ToArray());
if (OnSplitProcess != null)
{
OnSplitProcess(p, null);
}
}
}
reader.Close();
reader.Dispose();
return(data);
}