18

ボタンをクリックすると、iTextSharpを使用してパネルをPDFに印刷しています。ボタンをクリックすると、PDFがクライアントのコンピューターにダウンロードされます。これの代わりに、ダウンロードする代わりにブラウザでPDFを開く必要があります。ブラウザから、ユーザーは自分のPCにPDFをダウンロードできるようになります。

私は次のコードを使用しています:

Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=" + filename + ".pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
pnl_print.RenderControl(hw);

StringReader sr = new StringReader(sw.ToString());
Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 100f, 0f);
HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
pdfDoc.Open();
htmlparser.Parse(sr);
pdfDoc.Close();
Response.Write(pdfDoc);
Response.End();

sr.Close();
hw.Close();
sw.Close();
4

3 に答える 3

27

の代わりにに変更しcontent-dispositionます。inlineattachment

スニペットの2行目は次のようになります

Response.AddHeader("content-disposition", "inline;filename=" + filename + ".pdf");

Content-Dispositionを参照してください:「インライン」と「添付ファイル」の違いは何ですか?詳細については。

于 2012-08-23T07:12:04.457 に答える
3

このコードを試してください:

アクション:

Response.AddHeader("content-disposition", "attachment;filename=" + filename + ".pdf");

新しいタブ/ウィンドウで開くには:

@Html.ActionLink("view pdf", "getpdf", "somecontroller", null, 
                  new { target = "_blank" })

また

<a href="GeneratePdf.ashx?somekey=10" target="_blank">
于 2012-08-23T08:01:25.077 に答える
1

「Content-Disposition」ヘッダーを確認する必要があります。たとえば、「Content-Disposition」を「attachment; filename = FileName.pdf」に設定すると、ユーザーは(通常は)「名前を付けて保存:FileName.pdf」ダイアログを開くのではなく、プロンプトが表示されます。ただし、これはダウンロードを実行しているリクエストから取得する必要があるため、リダイレクト中にこれを実行することはできません。ただし、ASP.NETはこの目的のためにResponse.TransmitFileを提供しています。たとえば(他の優先オプションがあるMVCを使用していないと仮定します):

Response.Clear();
Response.ContentType = "application/pdf";
Response.AppendHeader("Content-Disposition", "attachment; filename=FileName.pdf");
Response.TransmitFile(Server.MapPath("~/folder/Sample.pdf"));
Response.End(); 

開こうとしている場合は、apicontrollerのファイルをbytesarrayに変換してから、コンテンツを入力してください

HttpResponseMessage result = null;
result = Request.CreateResponse(HttpStatusCode.OK);
FileStream stream = File.OpenRead(path);
byte[] fileBytes = new byte[stream.Length];
stream.Read(fileBytes, 0, fileBytes.Length);
stream.Close();           
result.Content = new ByteArrayContent(fileBytes);
result.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");
result.Content.Headers.ContentDisposition.FileName = "FileName.pdf";            

私はそれがあなたを助けると思います...

于 2015-12-17T12:44:30.857 に答える