Короче говоря, вам нужно расширить, как класс PdfSplitter обрабатывает документы, создав новый экземпляр PdfWriter в методе GetNextPdfWriter.
public static readonly String DEST = "splitDocument1_{0}.pdf";
public void Split()
{
IList<int> splitByPage = new List<int>() {1, 2, 3};
PdfDocument pdfDoc = new PdfDocument(new PdfReader(@"C:\temp\hello.pdf"));
PdfSplitter splitter = new PdfSplitter(pdfDoc);
IList<PdfDocument> splittedDocuments = new CustomPdfSplitter(pdfDoc, DEST).SplitByPageNumbers(splitByPage);
foreach (PdfDocument doc in splittedDocuments)
{
doc.Close();
}
pdfDoc.Close();
}
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(String.Format(dest, partNumber++));
}
}
Я не смог найти в Интернете документацию для GetNextPdfWriter, но здесь она из исходного кода :
/// <summary>This method is called when another split document is to be created.</summary>
/// <remarks>
/// This method is called when another split document is to be created.
/// You can override this method and return your own
/// <see cref="T:iText.Kernel.Pdf.PdfWriter" />
/// depending on your needs.
/// </remarks>
/// <param name="documentPageRange">the page range of the original document to be included in the document being created now.
/// </param>
/// <returns>the PdfWriter instance for the document which is being created.</returns>
protected internal virtual PdfWriter GetNextPdfWriter(PageRange documentPageRange)
Помимо примера на Github , я также мог найти пример из FAQ по счетчику громкости (третий пример).