2012-03-05 26 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

のContent-Dispositionヘッダーがあります。私は "応答"コードを使用して、ローカルに保存されているPDFファイルを表示しています。 – jim31415

関連する問題