2017-06-02 8 views
0

Asp.Net MVCを使用していて、pdfファイルを返すコントローラを構築しました。Asp.net mvc ajax open pdf(パラメータ付き)

public ActionResult GenerateReport(string Param) 
{ 
    // Create a new PDF document 
    PdfDocument document = new PdfDocument(); 
    document.Info.Title = "Created with PDFsharp"; 

    // Create an empty page 
    PdfPage page = document.AddPage(); 

    // Get an XGraphics object for drawing 
    XGraphics gfx = XGraphics.FromPdfPage(page); 

    // Create a font 
    XFont font = new XFont("Verdana", 20, XFontStyle.BoldItalic); 

    // Draw the text 
    gfx.DrawString("Hello, World!", font, XBrushes.Black, 
    new XRect(0, 0, page.Width, page.Height), 
    XStringFormats.Center); 

    MemoryStream stream = new MemoryStream(); 
    document.Save(stream, false); 
    byte[] bytes = stream.ToArray(); 

    return File(bytes, "application/pdf"); 
} 

今、私の目標は、jQueryのAJAXからのリクエストを送信し、新しいタブでPDFファイルを開くには、次のとおりです。 私はPdfSharpでPDFを構築しました。それ以外に、コントローラにパラメータを渡したい。

ありがとうございます!

答えて

1

私が知っているので、ファイルを直接ajaxで開くのは簡単ではありません。

私は別のルートを提案します。

jqueryのは、あなたが新しいタブでURLのようなそのリンク を開くことのできるファイルにリンクを返し、代わりにファイルを返すので、PDFが生成されますし、AJAXを送ります。

だから、最初のリンクを返すようにあなたの行動を変更します。そのPDFのURL

$.getJSON("your GenerateReport url", function(data) { 
    window.open(data.url,'_blank'); 
} 
+0

グレートにだけを参照し、戻って結果を得るとき

public ActionResult GenerateReport(string Param) { // same as before .... // save your pdf to a file File.WriteAllBytes("result.pdf", memoryStream.ToArray()); // get url to that pdf which can be browsed var pdfUrl = "some location which url can browse"; return Json(new {url: pdfUrl}, JsonBehaviour.AllowGet); } 

は、あなたは、AJAXをjqueryの観点では、解雇回避策:) – Anokrize

関連する問題