代码适用于控制台应用程序,但不适用于ASP.NET应用程

时间:2015-03-06 12:49:57

标签: c# asp.net asp.net-mvc pdf asp.net-mvc-5

我想在ASP.NET MVC 5应用程序中创建报表。我找到了这段代码(http://report.sourceforge.net/中的Hello world示例):

    Report report = new Report(new PdfFormatter());
    FontDef fd = new FontDef(report, "Helvetica");
    FontProp fp = new FontPropMM(fd, 25);
    Page page = new Page(report);
    page.AddCB_MM(80, new RepString(fp, "Hello World!"));
    RT.ViewPDF(report, "HelloWorld.pdf");

当我将此代码放在控制台应用程序的main中时,它会创建并打开一个写入" Hello World"的PDF文件。 但是当我在ASP.NET中的控制器中放入相同的代码时,我什么都没得到,没有PDF打开或者没有PDF保存在服务器中(我点击mywebsite / Person / Print):

 public ActionResult Print(int? id)
    {
        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        Person person= db.Person.Find(id);
        if (person== null)
        {

            Report report = new Report(new PdfFormatter());
            FontDef fd = new FontDef(report, "Helvetica");
            FontProp fp = new FontPropMM(fd, 25);
            Page page = new Page(report);
            page.AddCB_MM(80, new RepString(fp, "Hello World!"));
            RT.ViewPDF(report, "HelloWorld.pdf");
        }
        return View(person);
    }

如何修改我的ASP.NET应用程序以让用户使用此代码获取PDF? (如果您知道ASP.NET MVC 5的任何无酷的报告工具,我也将不胜感激。)谢谢。

1 个答案:

答案 0 :(得分:2)

不确定您在那里使用的库,但是您的操作的一般流程应该是:

  • 准备报告对象
  • 获取表示PDF文件内容的字节数组
  • 使用文件方法从您的操作返回文件:Controller.File

客户端上的结果将是文件下载提示