我想在这里关注这篇文章:http ://www.4guysfromrolla.com/articles/030911-1.aspx
我在 Services.asmx 中有这个方法:
[WebMethod]
public void CreatePdf()
{
// Create a Document object
var document = new Document(PageSize.A4, 50, 50, 25, 25);
// Create a new PdfWriter object, specifying the output stream
var output = new MemoryStream();
var writer = PdfWriter.GetInstance(document, output);
// Open the Document for writing
document.Open();
// Create a new Paragraph object with the text, "Hello, World!"
var welcomeParagraph = new Paragraph("Hello, World!");
// Add the Paragraph object to the document
document.Add(welcomeParagraph);
// Close the Document - this saves the document contents to the output stream
document.Close();
HttpContext.Current.Response.ContentType = "application/pdf";
HttpContext.Current.Response.AddHeader("Content-Disposition",
"attachment;filename=file.pdf");
HttpContext.Current.Response.BinaryWrite(output.ToArray());
}
我页面上的这个 jQuery 代码:
$('a.download').click(function () {
$.ajax({
type: "POST",
url: "/Services.asmx/CreatePdf",
data: '{}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {
alert(result.d);
}
});
});
这应该创建一个 pdf 并将其流式传输到用户的浏览器。
当我单击带有类的链接时download
,我的 web 方法被点击并且代码运行。它只是不会将 pdf 流式传输到浏览器。
如果我查看 Firebug,它会以状态 200 发布到我的方法,然后我得到以下响应:
%PDF-1.4 %���� 2 0 obj <>stream x�+�r �25P�04WI�2P�5��1���BҸ4>>>/Contents 2 0 R/Parent 3 0 R>> endobj 1 0 obj <> endobj 3 0 obj <> endobj 5 0 obj <> endobj 6 0 obj <> endobj xref 0 7 0000000000 65535 f 0000000304 00000 n 0000000015 00000 n 0000000392 00000 n 0000000147 00000 n 0000000443 00000 n 0000000488 00000 n trailer <<21ba8d519bb56a2d0ec514bcb9c47169>]>> %iText-5.3.5 startxref 646 %%EOF {"d":null}
我在这里做错了吗?