3

我使用 rotativa 1.6.4 nuget 包在带有 vs 2013 ide 的 .net mvc5 项目中将 html 转换为 pdf。它在我当地运行良好。但是,在我发布到服务器后('Microsoft Windows Server 2012 Standard' arvixe 共享服务器);一切正常,除了 pdf 转换页面。结果非常慢(超过 30 秒)。

然后我发布到另一台服务器('64 位 Windows Server 2008 R2 Enterprise 和 IIS 7.5'),它在这里没有任何问题。

有什么建议吗?

4

4 回答 4

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 秒内呈现。

于 2017-01-20T10:56:58.153 回答
0

我有同样的问题。Rotativa 运行良好,但服务器更改后运行缓慢。我发现添加了一些 CSS 和 Javascript 链接,我删除了所有链接,它现在运行良好。还有一些图片没有加载,所以加载很慢。

Eg.  < img src="/Images/arriw.png" / >
   <  script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script >

当我删除所有这些东西时,它的工作速度非常快。

于 2018-05-19T09:52:52.060 回答
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;
于 2020-11-08T18:46:24.737 回答
0

其他情况是关于包上 wkhtmltopdf.exe 的编译版本,我替换了项目上的 .exe 文件并替换为最新版本,这“做魔术”

于 2017-02-15T04:39:41.070 回答