2011-01-05 6 views
0

this tutorial을 기본으로 사용하려고했지만 아래에 지정된 줄에 null 참조 예외가 발생했습니다. 내가 다른 방식으로해야할까요? 그렇지 않은 경우 null 참조 예외가 발생합니다 (pagecb은 모두 null이 아닙니다). 코드 :iTextSharp를 사용하여 두 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

예외가있을 경우'page' 또는'pRdr'도 null이 아니십니까? – Bolu

+0

'pRdr'가 null 인 경우, 위의 7 행은 오류가 발생하지 않을까요? 'page'와'cb'는 모두 null이 아닙니다. –

+0

나는 이보다 적은 수의 라인에서 2 개의 문서를 병합 할 수 있다고 확신한다 ... 내 google-fu doens't가 나를 실패 시키길 희망한다. –

답변

1

1) PdfWriter가 아닌 PdfCopy를 사용하십시오. PdfWriter는 문서에서 생성 된 PDF를 작성하기위한 것입니다. PdfCopy는 페이지를 A에서 B로 복사하기 위해 만들어졌습니다.

2) 문제가 발생하면 예외가 발생합니다. 예외를 게시하십시오. 댓글에서 볼 수있는 많은 추측을 제거합니다.

3) PdfImportedPage는 해당 페이지의 내용 및 리소스입니다. 주석 (양식 필드 등), 책갈피 등을 잃게됩니다. PdfCopy는 그 중 일부를 도울 수 있지만 전부는 아닙니다.

+0

예외 : "개체 참조가 개체의 인스턴스로 설정되지 않았습니다." 그것은 내 OP에서 언급 한 "Null 참조 예외"와 다른가요? 또한 필자는 일부 콘텐츠에서 PDF를 작성하고 기존 PDF를 복사하려고합니다. 차이가 있는지 확실하지 않습니다. 나는 PdfCopy를 사용하여 조사 할 것이다. –

+0

스택 추적이 있습니까? –

0

확인. 나는 당신의 질문에 대답하지에 대한 비난받을 수도 있지만,이 PDF 파일을 병합 할 수있는 간단한 방법이있다 : iTextSharp를 사용하지 않는, 나는 그것을 수행하는 방법에 대한 게시물을 발견 iTextDotNet

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

내가 기억을 왜냐하면 저는 2 년 전에 이것을해야했기 때문입니다. 그것은 효과가 있고 잘합니다.

+0

또한 flexibile 방법 : http://alex.buayacorp.com/merge-pdf-files-with -itext-and-net.html – HABJAN

관련 문제