2011-01-05 18 views
0

this tutorialをベースとして使用しようとしましたが、以下で指定された行にヌル参照例外がスローされています。私はこれを別のやり方で行うべきですか?そうでない場合、null参照例外がスローされます(pagecbはnullではありません)。コード:iTextSharpを使用して2つのPDFを結合するにはどうすればよいですか?

 string filePath = @"c:\temp\test_new.pdf"; 
     string attachPath = @"c:\temp\test.pdf"; 

     Console.WriteLine("Begin!"); 
     Document d = new Document(); 

     if(File.Exists(filePath)){File.Delete(filePath);} 

     FileStream fs = new FileStream(filePath, FileMode.Create); 

     PdfWriter pw = PdfWriter.GetInstance(d, fs); 
     d.Open(); 
     d.Add(new Paragraph("New document! Now lets add an attachment!")); 

     PdfReader pRdr = new PdfReader(new FileStream(attachPath,FileMode.Open)); 
     PdfReaderContentParser parser = new PdfReaderContentParser(pRdr); 

     MemoryStream ms = new MemoryStream(); 
     PdfWriter writer = PdfWriter.GetInstance(d, ms); 
     writer.Open(); 
     PdfContentByte cb = writer.DirectContent; 
     PdfImportedPage page; 
     int rotation; 
     d.SetPageSize(PageSize.LETTER); 
     for (int i = 1; i <= pRdr.NumberOfPages; i++) 
     { 
      d.NewPage(); 
      page = writer.GetImportedPage(pRdr, i); 
      rotation = pRdr.GetPageRotation(i); 
      if (rotation == 90 || rotation == 270) 
      { 
       cb.AddTemplate(page, 0, -1.0F, 1.0F, 0, 0, pRdr.GetPageSizeWithRotation(i).Height); 
      } 
      else 
      { 
    /*NULL EXCEPTION HERE!!!*/cb.AddTemplate(page, 1.0F, 0, 0, 1.0F, 0, 0); //NULL EXCEPTION HERE!!! 

      } 
     } 
+0

あなたのケースでは確かに 'ページ'ですか、 'pRdr'でも例外があるときはnullではありませんか? – Bolu

+0

'pRdr'がnullだった場合、それは7行上でエラーになるでしょうか? 'page'と' cb'はどちらもnullではありません。 –

+0

私はあなたがこれよりも少ない行で2つのドキュメントをマージできると確信しています...私は私のgoogle-fu doens'tが私を失敗することを願っています –

答えて

1

1)PdfCopyではなくPdfWriterを使用してください。 PdfWriterは、ドキュメントから生成されたPDFを書き込むためのものです。 PdfCopyは、ページをAからBにコピーするために作成されます。

2)問題が発生した場合は、例外の結果が例外を投稿してください。それはあなたがコメントで見ている推測の多くを削除します。

3)PdfImportedPageは、そのページのコンテンツとリソースです。注釈(フォームフィールドなど)、ブックマークなどを失います。 PdfCopyはその一部を助けることができますが、すべてではありません。

+0

例外:「オブジェクト参照がオブジェクトのインスタンスに設定されていません」それは私のOPで言及した "Null参照例外"とは違いますか?また、私が持っているいくつかのコンテンツからPDFを書いています。そして、既存のPDFをコピーしたいと思います。私は、PdfCopyを使用して調べて、調整しておいてください。 –

+0

スタックトレースがありますか? –

0

OK。私は、あなたの質問に答えていないために非難を受けるかもしれないが、2つのPDFをマージするための簡単な方法があります:iTextSharpを使用していないが、私はそれを行う方法についての記事見つけiTextDotNet

使用:http://alex.buayacorp.com/merge-pdf-files-with-itextdotnet-and-net.html

私は思い出したがこれは数年前にこれをやらなければならなかったからです。それはうまくいく、とうまくいく。

+0

またflexibile方法:http://alex.buayacorp.com/merge-pdf-files-with -itext-and-net.html – HABJAN

0

単純なembPDFUtilsライブラリを調べてください。ここでは、XML-Configurationファイルを使ってマージと分割のプロセスを設定できます。 pdfファイルを連結し、分割して画像からpdfファイルを作成する方法があります。これは無料。ここでそれを確認してください:http://blog.mecum.biz/2011/11/how-master-xml-and-mistress-xsd-helped-itextsharp-out-of-the-claws-of-hippi-o-cratic-chaos-huggermugger/

関連する問題