2016-12-06 33 views
0

複数のPDFドキュメントをマージしていくつかのテキストを含むページを追加する必要があります。 私は1つのPDFからページをコピーして、今ではいくつかのテキストを含むページを追加しなければならないし、2番目のPDFからページをコピーし、次にもう少しテキストを含むページを追加する必要がある...pdfドキュメントを結合してページを追加する方法

私は試したPDFをマージしますが、PDFをマージするだけです。各PDFドキュメントの後にテキストを追加したいと思っています。

私はiTextSharpを使いたいです。以下はコードスニペットです:

//ステップ1:ドキュメントオブジェクトの作成 ドキュメントドキュメント=新しいドキュメント();

 // 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を組み合わせて使用​​することはできません。あなたがその場で作成されたコンテンツと、余分なページを挿入したい場合は、メモリ内に新しい文書を作成する必要があります:あなたのコードでは

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(); 
    } 
} 

Create PDF in memory instead of physical file例えば

、あなたがこのメソッドを作成することができます次のような方法を使用できます。

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

関連する問題