【问题标题】:Rotativa - Wkhtmltopdf has stopped workingRotativa - Wkhtmltopdf 已停止工作
【发布时间】:2018-12-31 22:36:43
【问题描述】:

在 ASP.NET MVC 应用程序中尝试使用 Rotativa 生成一些 PDF 时,我收到以下异常(没有实际消息,只是堆栈跟踪)。

Rotativa.WkhtmltopdfDriver.Convert 的 System.Exception(字符串 wkhtmltopdfPath,字符串开关,字符串 html)在 Rotativa.WkhtmltopdfDriver.ConvertHtml(String wkhtmltopdfPath, String 开关,字符串 html) 在 Rotativa.ViewAsPdf.CallTheDriver(ControllerContext 上下文)在 Rotativa.AsPdfResultBase.BuildPdf(ControllerContext context) 在 Rotativa.AsPdfResultBase.ExecuteResult(ControllerContext 上下文)
在 System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) 在 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList1 过滤器,Int32 filterIndex,ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) 在 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList1 过滤器,ActionResult actionResult) 在 System.Web.Mvc.Async.AsyncControllerActionInvoker.c__DisplayClass21.c__DisplayClass2b.b__1c() 在 System.Web.Mvc.Async.AsyncControllerActionInvoker.c__DisplayClass21.b__1e(IAsyncResult asyncResult) 在 System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult1.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase1.End() 在 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) 在 System.Web.Mvc.Controller.b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) 在 System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid1.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase1.End() 在 System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) 在 System.Web.Mvc.Controller.b__15(IAsyncResult asyncResult,控制器控制器)在 System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid1.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase1.End() 在 System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult)
在 System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) 在 System.Web.Mvc.MvcHandler.b__5(IAsyncResult asyncResult, ProcessRequestState innerState) 在 System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid1.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase1.End() 在 System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) 在 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult 结果)在 System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 在 System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep 步骤)
在 System.Web.HttpApplication.ExecuteStep(IExecutionStep 步骤, Boolean & completedSynchronously)

该问题与缺少 Visual Studio 2013 (MSVCP120.dll) 的 C++ Redistributable Package 无关,因为它们已安装在计算机上。 实际上,可以通过应用程序生成一些PDF,这让我觉得视图中有些东西导致Wkhtmltopdf有时停止工作......

关于导致此异常的原因或如何调试它的任何想法?

(Rotativa版本是1.6.4我用的是MVC5)

【问题讨论】:

    标签: asp.net-mvc wkhtmltopdf rotativa


    【解决方案1】:

    经过多次尝试和错误,我找到了解决方案。这个question 也为我指明了正确的方向。这显然是 wkhtmltopdf 分页算法和大表或 HTML 块的问题。所以,为了解决我的问题,我将我的 HTML 更改为更小的块,现在它可以工作了。

    【讨论】:

      猜你喜欢
      • 2014-05-22
      • 2016-04-26
      • 2014-10-10
      • 2016-12-14
      • 2018-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多