I have found a inbuilt method to split pdf by size, however i am not sure about the parameter as it is asking for parameter to split the pdf (long size) and not sure using the parameter the split file in kb, mb. Can someone please suggest me the usage of this parameter, support i want to split the file of 95MB into 5MB files, so what value i need to pass as parameter i.e. 5000, 500, 50 or 5.
Code:
PdfReader reader = new PdfReader(fileName);
PdfDocument sourceDoc = new PdfDocument(reader);
IList<PdfDocument> pdfDocs = new CustomPdfSplitter(sourceDoc, outputFileName).SplitBySize(fileSize);
Code for CustomPdfSplitter:
private class CustomPdfSplitter : PdfSplitter
{
private String dest;
private int partNumber = 1;
public CustomPdfSplitter(PdfDocument pdfDocument, String dest) : base(pdfDocument)
{
this.dest = dest;
}
protected override PdfWriter GetNextPdfWriter(PageRange documentPageRange)
{
return new PdfWriter(dest.Replace(".pdf","_" + (partNumber++).ToString("0000")+".pdf"));
}
}
public string SplitPDFBySize(string fileName, string outputFileName, int fileSize)
{
StringBuilder outputMsg = new StringBuilder();
PdfReader reader = new PdfReader(fileName);
PdfDocument sourceDoc = new PdfDocument(reader);
long fileSizeinByte = fileSize * 1000000;
IList<PdfDocument> pdfDocs = new CustomPdfSplitter(sourceDoc, outputFileName).SplitBySize(fileSizeinByte);
try
{
PBChild.Value = 0;
PBChild.Maximum = pdfDocs.Count;
for (int i = 0; i < pdfDocs.Count; i++)
{
string splittedFile = outputFileName.Replace(".pdf", "_" + (i + 1).ToString("0000") + ".pdf");
pdfDocs[i].Close();
outputMsg.AppendLine(fileName + " splitted with output file: " + splittedFile);
PBChild.Value++;
}
}
catch (Exception ex)
{
outputMsg.AppendLine("Error: " + fileName + "||" + ex.Message);
}
finally
{
sourceDoc.Close();
}
return outputMsg.ToString();
}