Сплит PDF в несколько PDF файлов с помощью iTextsharp

public int SplitAndSave(string inputPath, string outputPath)
    {
        FileInfo file = new FileInfo(inputPath);
        string name = file.Name.Substring(0, file.Name.LastIndexOf("."));

        using (PdfReader reader = new PdfReader(inputPath))
        {

            for (int pagenumber = 1; pagenumber <= reader.NumberOfPages; pagenumber++)
            {
                string filename = pagenumber.ToString() + ".pdf";

                Document document = new Document();
                PdfCopy copy = new PdfCopy(document, new FileStream(outputPath + "\\" + filename, FileMode.Create));

                document.Open();

                copy.AddPage(copy.GetImportedPage(reader, pagenumber));

                document.Close();
            }
            return reader.NumberOfPages;
        }

    }

Я хочу разбить Pdf на несколько PDF файлов с интервалом в 50 страниц. (Suppoose Если есть 400 страниц PDF, я хочу 8 pdf файлов). Вышеприведенный код разбивает каждую страницу на pdf. Пожалуйста, помогите мне... Я использую asp.net с iTextSharp.

Ответ 1

Вы просматриваете PDF-документ и создаете новый документ каждый раз, когда вы продвигаете страницу. Вам нужно будет отслеживать свои страницы, чтобы вы выполняли разделение только каждые 50 страниц. Лично я бы поместил это в отдельный метод и назвал его из вашего цикла. Что-то вроде этого:

private void ExtractPages(string sourcePDFpath, string outputPDFpath, int startpage,  int endpage)
{
    PdfReader reader = null;
    Document sourceDocument = null;
    PdfCopy pdfCopyProvider = null;
    PdfImportedPage importedPage = null;

    reader = new PdfReader(sourcePDFpath);
    sourceDocument = new Document(reader.GetPageSizeWithRotation(startpage));
    pdfCopyProvider = new PdfCopy(sourceDocument, new System.IO.FileStream(outputPDFpath, System.IO.FileMode.Create));

    sourceDocument.Open();

    for (int i = startpage; i <= endpage; i++)
    {
        importedPage = pdfCopyProvider.GetImportedPage(reader, i);
        pdfCopyProvider.AddPage(importedPage);
    }
    sourceDocument.Close();
    reader.Close();
}

Итак, в вашем исходном коде кода через ваш pdf, и каждые 50 страниц вызывают вышеуказанный метод. Вам просто нужно добавить переменные в свой блок, чтобы отслеживать начальные и конечные страницы.