PDF を返す .aspx ページがあります。以下は Page_PreRender のコードです。
Protected Sub Page_PreRender(sender As Object, e As System.EventArgs) Handles Me.PreRender
Dim pdfStream As MemoryStream
pdfStream = CType(Cache("PdfViewerContent"), MemoryStream)
Response.BufferOutput = True
Response.ClearContent()
Response.ClearHeaders()
Response.AddHeader("Cache-control", "no-store")
Response.ContentType = "application/pdf"
Response.AddHeader("Content-Length", pdfStream.Length.ToString())
Response.AddHeader("Content-Disposition", "attachment=PDFFile.pdf")
Response.BinaryWrite(pdfStream.ToArray())
Response.Flush()
HttpContext.Current.ApplicationInstance.CompleteRequest()
End Sub
このページは、window.open JavaScript 呼び出しから起動されます。
これは、IE9、Chrome、および Firefox を搭載した Windows 7 で正常に動作します。ただし、IE7 を実行している Windows XP では、ブラウザーがちらつくだけで、ウィンドウは開かれません。(ポップアップ ブロッカーは無効になっています) Chrome では、開発者コンソールに「リソースはドキュメントとして解釈されましたが、MIME タイプ application/pdf で転送されました」というエラーが表示され、ページがファイルとしてダウンロードされます。