2013-04-11 2 views
2

iTextSharp를 사용하여 Microsoft 보고서 뷰어의 여러 pdfs를 함께 사용합니다. 아래 코드의 page.AddImage (image__1)가 오류를 던지고 있습니다. 객체 참조가 객체의 인스턴스로 설정되지 않았습니다. 나는 아무것도 보이지 않는다. 보고서 뷰어에서 보고서에 참여하고 워터 마크 이미지를 추가 할 수있는 다른 방법이 있습니까?PDF 문서에 이미지를 추가하는 방법은 무엇입니까?

mybytes = MSRptViewer1.LocalReport.Render("PDF", Nothing, Nothing, Nothing, Nothing, Nothing, Nothing) 
    reader = New iTextSharp.text.pdf.PdfReader(mybytes) 
    numberOfPages = reader.NumberOfPages 
    currentPageNumber = 0 

    Dim imageFile As String = Server.MapPath("WaterMark.png") 
    Dim buffer As Byte() = IO.File.ReadAllBytes(imageFile) 
    Dim image__1 As iTextSharp.text.Image = iTextSharp.text.Image.GetInstance(buffer) 
    image__1.SetAbsolutePosition(100, 100) 

    Do While (currentPageNumber < numberOfPages) 
     currentPageNumber += 1 
     doc.SetPageSize(PageSize.LETTER) 
     doc.NewPage() 

     page = writer.GetImportedPage(reader, currentPageNumber) 
     page.AddImage(image__1) 

     rotation = reader.GetPageRotation(currentPageNumber) 
     If (rotation = 90) Or (rotation = 270) Then 
      cb.AddTemplate(page, 0, -1.0F, 1.0F, 0, 0, reader.GetPageSizeWithRotation(currentPageNumber).Height) 
     Else 
      cb.AddTemplate(page, 1.0F, 0, 0, 1.0F, 0, 0) 
     End If 
    Loop 
+0

가능한 복제본 [기존 PDF에 iTextSharp로 이미지를 삽입하려면 어떻게해야합니까?] (http://stackoverflow.com/questions/583629/how-can-i-insert-an-image-with-itextsharp- in-a-existing-pdf) –

답변

-1

게시자에게 Manning Publications에 chapter 6 of my book을 무료로 제공 해달라고 요청했습니다. 이 장에서는 자바 예제 만 보여 주지만 모든 예제는 편의상 ported to C#입니다. 이 장을 읽으면

, 당신은 다음과 같은 실수를하고 있음을 확인할 수있는 것들 : 당신은 대신 PdfReader/PdfStamper의 기존 문서에 내용을 추가 할 수 PdfReader/PdfWriter를 사용하는

  1. . 멋진 워터 마크 예제가 필요하다면, StampStationery.cs 예제의 ManipulatePdf 메소드를 살펴보십시오. 다른 PDF에서 가져온 배경 페이지 대신 이미지를 추가하려면 background.addTemplate()background.addImage()으로 바꿉니다. 이미지를 워터 마크로 사용하는 방법에 대해 자세히 알아 보려면 How to add a watermark to a PDF file?
  2. PdfReader/PdfWriter을 사용하여 PdfCopy 대신 기존 문서를 연결하십시오. 이렇게하면 모든 종류의 문제가 발생할 위험이 있습니다. 페이지가 끊어지는 부분, 링크가 제거되는 문제, 주석을 잃어 버림, ...이 질문에 대한 나의 대답을 읽어보십시오. How to merge documents correctly?
  3. PdfImportedPage은 읽기 전용이라는 사실을 무시하고 있습니다. PageStamp 개체를 만든 후에는 PdfCopy의 컨텍스트로만 콘텐츠를 추가 할 수 있습니다. ConcatenateStamp.cs 예제를 살펴보십시오.

요약 : 귀하의 질문은 StackOverflow에서 이전에 답변 한 다른 질문의 중복 (여러 조합)입니다. 공식적인 문서 소스가 아닌 소스에서 일부 코드를 복사/붙여 넣은 것으로 보입니다.

+0

해당 코드의 출처를 모릅니다. 1 년이 넘었습니다. – user1167466

+0

이상합니다. 그래서 어제 물었다. 아마도 우연 일 것입니다. 어쨌든 대답을 수락 해 주셔서 감사합니다. –

+0

그런 질문을 받았지만, 문서를 연결하는 코드는 내가 일하고있는 제품에서 1 년 넘게 사용되었습니다 – user1167466

관련 문제