使用通用处理程序生成pdf(ashx)

时间:2014-01-10 06:33:43

标签: c# jquery asp.net wcf

我要求从存储在数据库中的数据动态创建pdf。 我在我的应用程序中使用了html,jquery和WCF。

我找不到使用客户端技术(jquery或任何其他客户端插件)生成pdf(在浏览器中显示或作为附件显示)的方法。我试图使用pdf.js,但无法成功。后来我使用.net泛型处理程序生成pdf。我将bytearray传递给handler,反过来pdf开始在客户端渲染。

我有一些随机问题,然后我写了一个示例应用程序,以确保处理程序正常工作。我使用相同的代码和静态文本生成pdf,但它开始在客户端上抛出错误。

以下是我使用的代码段

context.Response.Clear();
context.Response.ContentType = "application/pdf";
context.Response.AddHeader("content-disposition", "inline; filename=download");
context.Response.Write("Hello World");
//context.Response.BinaryWrite(System.Text.Encoding.Default.GetBytes("Hello world"));
//context.Response.BinaryWrite(System.Text.Encoding.UTF8.GetBytes("Hello world"));
context.Response.Flush();
context.Response.End();

我在所有浏览器上都遇到错误 无法在Chrome上加载pdf文档。 加载PDF时发生错误。 PDF.js v0.8.505(build:da1c944)消息:InvalidPDFException - 在Mozilla中的Firefox 文件不以IE中的'%PDF-'开头。

注意:我也试过aspx页面。由于安全问题,我无法创建物理文件。如果有更好的方法来实现它,请告诉我。提前谢谢。

1 个答案:

答案 0 :(得分:0)

PDF是一种标准文件格式。您无法编写普通文本文件并将其重命名为filename.pdf并希望它能够正常工作。 您将需要.Net libraries。有很多尝试使用Google搜索.Net pdf library

一些信息。

  • pdf.js仅供浏览器查看。
  • 设置context.Response.ContentType只是告诉浏览器它将接收的文件,因此它可以使用现有的映射应用程序打开它。就像pdf文件的Adobe浏览器插件一样。