2016-11-18 7 views
0

コントローラを使用してEvoPDFからPDFを作成する方法については、jQuery AJAX経由でコントローラを呼び出すことはできません。jQuery AJAX経由で呼び出されたコントローラからPDFを返します。

私は私のアプリでは他の多くのよう多くのコントローラにデータを送信し、簡単なjQueryの機能を持っている:

$.ajax({ 
    url: "/AnnualFees/showStatement", 
    cache: false, 
    data: { 
     authKey: memberData.authKey, 
     entityId: memberData.entityId, 
     barNumber: memberData.barNumber, 
     statementHTML: encodeURIComponent($("#statementBody").html()) 
    }, 
    method: "POST", 
    success: function (data) { 
    }, 
}); 

私はすべてのサンプルに続き、このコードを持っています。私はそれを変更してPDFを保存し、PDFが生成されていることを確認することができます。

public ActionResult getStatementPDF(string statementHTML) 
{ 
    //initialize the PdfConvert object 
    PdfConverter pdfConverter = new PdfConverter(); 

    // set the license key - required 
    pdfConverter.LicenseKey = "uzUmNCcnNCYsIjQgOiQ0JyU6JSY6LS0tLQ=="; 

    StringBuilder PDFBody = new StringBuilder(); 
    PDFBody.Append("<!DOCTYPE html>"); 
    PDFBody.Append("<html lang=\"en\">"); 
    PDFBody.Append("<head>"); 
    PDFBody.Append(" <meta charset=\"utf - 8\">"); 
    PDFBody.Append(" <title>Statement</title>"); 
    PDFBody.Append("</head>"); 
    PDFBody.Append(""); 
    PDFBody.Append("<body>"); 
    PDFBody.Append("Hello world."); 
    PDFBody.Append("</body>"); 
    PDFBody.Append("</html>"); 

    byte[] outPdfBuffer = pdfConverter.GetPdfBytesFromHtmlString(PDFBody.ToString()); 

    // Send the PDF file to browser 
    FileResult fileResult = new FileContentResult(outPdfBuffer, "application/pdf"); 
    fileResult.FileDownloadName = "Statement.pdf"; 

    return fileResult; 
} 

正しいアプリケーション/ pdfタイプとほぼ同じサイズのディスクでエラーが200回成功したことを確認できます。ただし、PDFは表示されず、ブラウザに何も表示されません。

+0

何を保存しないようにしたい場合は、あなたがFileSaverJS(https://github.com/eligrey/FileSaver.js/)を使用することをお勧めします、あなたがファイルを開くには、このような何かを行うことができますAJAX呼び出しのデータするonSuccessを処理する必要がありますコールバックがAJAXリクエストに応答して何もしないために起こります。 Plusファイルのダウンロードはajaxでは機能しません。必要なのは、PDFファイルを生成してサーバーに保存し、そのファイルを指すURLを返すので、ブラウザをコールバックにリダイレクトすることができます。 – marekful

+0

この段階では、PDFは最終的な文書の草稿であるため、PDFを保存する必要はありません。私はブラウザにPDFをストリーミングするサンプルコードを見ていますが、うまく機能していません。それはできないのですか? –

答えて

0

あなたは、ファイルに

success: function (data) { 

    var file = new Blob([data], { type: 'application/pdf' }); 
    var fileURL = URL.createObjectURL(file); 
    window.open(fileURL); 
} 
+0

これはファイルストリームを開くか、またはファイルがサーバー上に存在することを期待していますか?この手順でPDFの草案が生成されるので、サーバーの汚染を避け、PDFファイルのメモリコピーをブラウザにプッシュするだけです。 –

+0

これは動作しようとしていますが、私はfileURLにこれを取得しています。空白のタブが表示されます:blob:E9D06943-1619-4B89-BCF9-CD208BB9BAA9 –

+0

ajaxコールで、 $ .ajax({ url:/AnnualFees/showStatement "、 キャッシュ:偽、 応答タイプ: 'arraybuffer'、 .... –

関連する問題