2012-03-05 6 views
0

아래 표시된 코드를 사용하면 PDF 문서가 유효한 PDF 형식이 아닌 것 같습니다. 브라우저에 "PDF 문서를로드하지 못했습니다."다운로드를 파일로 저장하고 Adobe Reader에서 열면 "이 문서를 여는 동안 오류가 발생했습니다." "Google 문서 도구에서 PDF 문서를 다운로드하여 브라우저에 표시하는 방법은 무엇입니까?

Google 문서 도구에서 수동으로 문서를 열고 다운로드 할 수 있습니다. 따라서 유효한 PDF 문서입니다.

저는 C#, ASP.NET 및 Google.Documents를 사용하고 있습니다.

 // get the document to download 
     Feed<Document> feed = request.GetEverything(); 
     foreach(Document entry in feed.Entries) 
     { 
      if(entry.AtomEntry.AlternateUri.ToString() == DocumentAltUri) 
      { 
       document = entry; 
       break; 
      } 
     } 

     using(Stream stream = request.Download(document, Document.DownloadType.pdf)) 
     { 
      StreamReader reader = new StreamReader(stream); 
      string content = reader.ReadToEnd(); 
      reader.Close(); 

      Response.ClearContent(); 
      Response.ContentType = "application/pdf"; 
      Response.AddHeader("Content-Length", content.Length.ToString()); 
      Response.AddHeader("Content-Disposition", "inline;"); 
      Response.Write(content); 
      Response.Flush(); 
      Response.Close(); 
      Response.End(); 
     } 

UPDATE :는 해결. 아래 코드를 참조하십시오.

답변

0

문제는 파일 내용을 텍스트로 읽는 것이므로 Byte []가되어야한다는 것입니다.

업데이트 코드 :

 using(Stream stream = request.Download(document, type)) 
     { 
      long length = 0; 
      Response.ClearContent(); 
      Response.ContentType = contentType; 

      int nBytes = 2048; 
      int count = 0; 
      Byte[] arr = new Byte[nBytes]; 
      do 
      { 
       length += count = stream.Read(arr, 0, nBytes); 
       Response.OutputStream.Write(arr, 0, count); 
      } while(count > 0); 

      Response.AddHeader("Content-Disposition", "inline;filename=" + filename + fileext); 
      Response.AddHeader("Content-Length", length.ToString()); 
      Response.Flush(); 
      Response.Close(); 
      Response.End(); 
     } 
0

은 다음 게시물에서 몇 가지 아이디어를 걸릴 수 있습니다 : 내용 - 처리 : code to download PDF file in C#

그것은 추가 헤더를 사용합니다.

+0

내용 - 처리 헤더가있다. "응답"코드를 사용하여 로컬에 저장된 PDF 파일을 성공적으로 표시했습니다. – jim31415

관련 문제