Rotativa在服务器

时间:2015-11-13 13:54:44

标签: asp.net-mvc pdf rotativa

我们在.Net MVC 5项目中使用Rotativa。它在本地工作就像魅力,并在部署到服务器时失败(生成空白PDF)。但是,如果我登录到服务器并以localhost身份访问该网站,则会生成PDF。

因此,它看起来像运行应用程序池的权限问题。因此,出于测试目的,我更改为运行App Pool以在“本地系统”上运行。还是同样的问题。

我们也尝试过:

  1. “ViewasPDF”
  2. 应用设置,如下所示:<add key="WkhtmltopdfPath" value="<path to the folder>"/>
  3. 以下是代码:

    return new ActionAsPdf("ActionMethod",new { id = id, partSelected =        part, selectedTab = selectedTab, isDownload = true })
    {
        FileName = fileName,
        PageMargins = { Left = 0, Right = 0 },
        CustomSwitches = "--disable-external-links --disable-internal-links --disable-smart-shrinking --viewport-size 1600x900 --load-error-handling ignore",
        PageOrientation = Rotativa.Options.Orientation.Portrait,
        PageSize = Rotativa.Options.Size.A4,
        PageWidth = 210,
        PageHeight = 297
    };
    

2 个答案:

答案 0 :(得分:0)

首先,您已禁用自定义开关--load-error-handling ignore显示错误。为了调试,暂时禁用它可能会有所帮助。

其次,我的盲目猜测是你可能在pdf上有一些需要本地路径作为src的图像?如果是这种情况,那么每个都需要@ Server.MapPath。

例如:

<img src="@Server.MapPath("your image path")"/>

答案 1 :(得分:-1)

 var iResult = new Rotativa.ActionAsPdf("PrintForm", new { Id = Id }) { FileName = iFilename, SaveOnServerPath = ViewBag.FileName };
 iResult.UserName = System.Configuration.ConfigurationManager.AppSettings["ADUserID"].ToString();
 iResult.Password = System.Configuration.ConfigurationManager.AppSettings["ADPassword"].ToString();
 return iResult;

以下是aduser是用户名和密码的代码示例,请为此创建一个通用用户帐户..