我使用rotativa 1.6.4 nuget包将html转换为带有vs ide的.net mvc5项目中的pdf。它在我当地工作正常。但是,在我发布到服务器(' Microsoft Windows Server 2012 Standard' arvixe共享服务器)之后;一切正常,除了pdf转换页面。结果非常慢(超过30秒)。
然后我学习到另一台服务器(@ 64位Windows Server 2008 R2企业版和IIS 7.5'),它在这里没有任何问题。
有什么建议吗?
答案 0 :(得分:2)
老问题以及所有,我知道....但我遇到了同样的问题。 使用Rotativa.PartialViewAsPdf我的pdf花了大约20秒来渲染。 经过大量的故障排除后,我将其缩小为外部样式表参考。
更改
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" />
到此(仅添加 https:)
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" />
解决了我的问题。
PDF现在可以在3秒内呈现。
答案 1 :(得分:0)
其他情况是关于包的wkhtmltopdf.exe的编译版本,我替换了项目中的.exe文件并替换为最新版本,并且这样做了#34;做了魔术&#34;
答案 2 :(得分:0)
我有同样的问题。 Rotativa工作得很好但是在服务器改变之后它工作得很慢。我发现添加了一些CSS和Javascript链接,我删除了它现在运行良好的所有链接。 还有一些图像没有加载,因此加载速度很慢。
Eg. < img src="/Images/arriw.png" / >
< script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script >
当我删除所有这些东西时,它工作得非常快。
答案 3 :(得分:0)
就我而言,使用UrlAsPdf()以及仅添加所需的cookie可以解决此问题。以下是我使用的示例代码。
var report = new UrlAsPdf(url);
Dictionary<string, string> cookieCollection = new Dictionary<string, string>();
foreach (var key in Request.Cookies.AllKeys)
{
if (Crypto.Hash("_user").Equals(key))
{
cookieCollection.Add(key, Request.Cookies.Get(key).Value);
break;
}
}
report.Cookies = cookieCollection;
report.FormsAuthenticationCookieName = FormsAuthentication.FormsCookieName;