我们在.Net MVC 5项目中使用Rotativa。它在本地工作就像魅力,并在部署到服务器时失败(生成空白PDF)。但是,如果我登录到服务器并以localhost身份访问该网站,则会生成PDF。
因此,它看起来像运行应用程序池的权限问题。因此,出于测试目的,我更改为运行App Pool以在“本地系统”上运行。还是同样的问题。
我们也尝试过:
<add key="WkhtmltopdfPath" value="<path to the folder>"/>
以下是代码:
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
};
答案 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是用户名和密码的代码示例,请为此创建一个通用用户帐户..