2013-09-12 3 views
11
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.Сплит PDF в несколько PDF-файлов с использованием iTextsharp

+1

Подсказка. Если вы хотите только новый документ каждые 50 страниц, почему вы создаете новый документ во время * каждой отдельной итерации цикла *? – Heinzi

ответ

4

это будет полезно. очень соответствует Вашему требованию

http://www.codeproject.com/Articles/559380/SplittingplusandplusMergingplusPdfplusFilesplusinp

+1

Я использовал приведенный выше код кодекса, и я получаю сообщение об ошибке: «Доступ к пути запрещен»; – Billy

+0

это означает, что у вас нет прав на запись в папку, в которую вы пишете pdf. – RohitWagh

11

Вы перекручивание через 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 страниц вызывается вышеуказанный метод. Вам просто нужно добавить переменные в свой блок, чтобы отслеживать начальные и конечные страницы.

Смежные вопросы