2016-12-06 4 views
0

У меня есть требование, когда мне нужно объединить несколько документов PDF и добавить страницы также с некоторым текстом. . Я скопировал страницы из одного PDF-файла, и теперь мне нужно добавить страницу с некоторым текстом, а затем мне нужно скопировать страницы из второго PDF-документа, а затем снова мне нужно добавить страницу с текстом ...Как объединить документы PDF и добавить страницы между

Я пробовал слияние PDF-файлов, но просто слияние PDF-файлов я хочу добавить текст после каждого PDF-документа.

Я хочу использовать iTextSharp. Ниже приведен фрагмент кода:

// шаг 1: создание документа-объекта Документ document = new Document();

 // step 2: we create a writer that listens to the document 
     PdfCopy writer = new PdfCopy(document, new FileStream(outFile, FileMode.Create)); 
     if (writer == null) 
     { 
      return; 
     } 

     // step 3: we open the document 
     document.Open(); 

     foreach (string fileName in fileNames) 
     { 
      // we create a reader for a certain document 
      PdfReader reader = new PdfReader(fileName); 
      reader.ConsolidateNamedDestinations(); 

      // step 4: we add content 
      for (int i = 1; i <= reader.NumberOfPages; i++) 
      { 
       PdfImportedPage page = writer.GetImportedPage(reader, i); 
       writer.AddPage(page); 
      } 


      //This commented part is not working 
      ////Add a new page to the pdf file 
      //document.NewPage(); 

      //Paragraph paragraph = new Paragraph(); 
      //Font titleFont = new Font(iTextSharp.text.Font.FontFamily.HELVETICA 
      //       , 15 
      //       , iTextSharp.text.Font.BOLD 
      //       , BaseColor.BLACK 
      // ); 
      //Chunk titleChunk = new Chunk("Comments", titleFont); 
      //paragraph.Add(titleChunk); 
      //writer.Add(paragraph); 

      //paragraph = new Paragraph(); 
      //Font textFont = new Font(iTextSharp.text.Font.FontFamily.HELVETICA 
      //       , 12 
      //       , iTextSharp.text.Font.NORMAL 
      //       , BaseColor.BLACK 
      // ); 
      //Chunk textChunk = new Chunk("Hello", textFont); 
      //paragraph.Add(textChunk); 
      //writer.Add(paragraph); 
      //document.Add(paragraph); 

      reader.Close(); 

     } 

     // step 5: we close the document and writer 
     writer.Close(); 
     document.Close(); 

Заранее спасибо.

+0

Не знаю, почему это получил авансовый голос. Я поддержал это, потому что в этом вопросе описывается техническая проблема, объясняемая предоставлением исходного кода, в котором заглушенная часть является подлинной (хотя и неверной) попыткой решить проблему. –

ответ

0

Вы не можете использовать document.newPage() в сочетании с PdfCopy. Если вы хотите, чтобы вставить дополнительные страницы с контентом, который создается на лету, вам необходимо создать новый документ в памяти: Create PDF in memory instead of physical file

Например, вы можете создать этот метод:

private byte[] CreatePdf(String comments) 
{ 
    Document doc = new Document(PageSize.LETTER); 
    using (MemoryStream output = new MemoryStream()) 
    { 
     PdfWriter wri = PdfWriter.GetInstance(doc, output); 
     doc.Open(); 
     Paragraph header = new Paragraph("Comments"); 
     doc.Add(header); 
     Paragraph paragraph = new Paragraph(comments); 
     doc.Add(paragraph); 
     doc.Close(); 
     return output.ToArray(); 
    } 
} 

В коде , вы можете использовать этот метод следующим образом:

writer.AddDocument(new PdfReader(CreatePdf("Test comment"));); 

Обратите внимание, что вам не нужно перебирать страницы. У вас есть:

for (int i = 1; i <= reader.NumberOfPages; i++) 
{ 
    PdfImportedPage page = writer.GetImportedPage(reader, i); 
    writer.AddPage(page); 
} 

Вы можете использовать:

writer.AddDocument(reader); 
+0

Большое спасибо! это сработало. – Meenal

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

  • Нет связанных вопросов^_^