2013-02-18 8 views
0

아무도 나에게 MemoryStream에서 PdfReader를 얻는 방법에 대한 예제를 제공 할 수 있습니까? 나는 PdfReader 클래스가 가능한 후보 (GetStreamBytes & GetStreamBytesRaw)로 보이는 몇 가지 메소드를 가지고 있음을 알 수있다. 그러나 이것들은 iText 특정 스트림을 필요로하는 것처럼 보인다고 광산은 단지 정규 바이트 또는 메모리 스트림이다.MemoryStream()에서 PdfReader

이 C# 및 사전에 .net4

iTextSharp.text.pdf.PdfReader rdr = iTextSharp.text.pdf.PdfReader.GetStreamBytesRaw 

감사를 사용하고 있습니다. 그냥 브라우저 사용 바이트에서 PDF를 열려면

+0

무슨 뜻입니까? memorystream의 pdfreader는 무엇입니까? 이미 사용 가능한 바이트에서 pdf를 생성하려고 시도하고 있습니까 – Zaki

+0

Dave, 동일한 문제가 있습니다. 해결책을 찾았습니까? –

답변

-3

다음을 수행하십시오

어쩌면
public void ReturnPDF(byte[] contents, string attachmentFilename) 
     { 
      var response = HttpContext.Current.Response; 
      try 
      { 
       if (!string.IsNullOrEmpty(attachmentFilename)) 
       { 
        response.ContentType = "application/pdf"; 
        response.AddHeader("Content-Disposition", "attachment; filename=" + attachmentFilename); 
       } 

       response.ContentType = "application/pdf"; 
       response.BinaryWrite(contents); 
      } 
      catch (Exception ex) 
      { 
       throw ex; 
      } 
      finally 
      { 
       response.End(); 
       response.Flush(); 
       response.Clear(); 
      } 


     } 
+0

나는 memorystream에 pdf가 있고 나는 PdfReader로 그것을 읽을 필요가있다. PdfReader rdr = 새로운 PdfReader (pdfstream); "PDF 헤더 서명을 찾을 수 없음"오류가 발생합니다. – Dave

+0

이것은 보통 pdf 파일이 손상되었음을 의미합니다. – Zaki

+0

이전 버전에서는 질문이 명확하지 않지만이 답변은 전혀 적용되지 않는 것 같지 않습니다. –

-1

조금 늦었 어. 너무 오래 MemoryStream을 유효한 PDF 객체이기 때문에, 0

... 
stream.Flush(); // Don't know if this is necessary 
stream.Position = 0; 
PdfReader reader = new PdfReader(stream.ToArray()); 
... 
+1

PdfReader는 정적 클래스입니다. '새로운 PdfReader (stream.ToArray) 대신'PdfReader.Open (stream)'이되었습니다. – MushinNoShin

3

당신은 MemoryStream을에서 PdfReader를 만들 수 있습니다에 스트림의 위치를 ​​설정하려고합니다. MemoryStream을 유효한 PDF 객체의 PdfReader를 시작하려면 다음 방법 중 하나가 이런 식으로되는 경우 : 아래의 코드에서

PdfReader _reader = new PdfReader((byte[])_memoryStream.ToArray()); 

의 PdfReader 호출 할 때 바이트 []로 반환됩니다 닷넷 자원에서 초기화 Properties.Resources 객체에서, Resource와 MemoryStream이 동일한 유형을 PdfReader에 반환하도록 바이트 []가 지정됩니다. 그런 다음 PdfReader 객체에서 PdfStamper 객체를 만들고 PdfStamper의 결과 컨테이너로 MemoryStream을 사용합니다.

PdfReader _srcDoc = new PdfReader(Properties.Resources.Resource1); 
MemoryStream _output = new MemoryStream(); 
PdfStamper _scratchDoc = new PdfStamper(_srcDoc, _output);