问题标签 [rotativa]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2007 浏览

asp.net-mvc-4 - Rotativa 1.6.1 图像“重影”,但仅在 QA 上,而不是在开发或集成服务器上

我正在运行 ac# MVC 4 app ,使用 Rotativa 将 Razor 视图转换为 Pdfs。Rotativa 基本上是 wkhtmltopdf 的包装器。

我升级到 Rotativa 1.6.1,以修复 wkhtmltopdf 中的分页问题,​​并且我的图像是“重影”。我回滚到 1.5.0,问题就消失了(但分页符又被打破了)。

看起来就像在这个 wkhtmltopodf 错误 http://code.google.com/p/wkhtmltopdf/issues/detail?id=788

他们声称它固定在尖端。(我尝试手动更新到最新的稳定版本,它仍然发生)

奇怪的是,这个问题只发生在我们的 QA 服务器上,而不是我们的 DEV 服务器或我们的 IT 组声称与 QA“相同”的集成服务器上......

任何想法可能导致此问题?还有人得到它吗?

这个问题: https://github.com/webgio/Rotativa/issues/51 和这个 https://github.com/webgio/Rotativa/issues/26

暗示有一些权限问题可能导致 Rotativa 出现问题。谁能给我指出更多关于哪种权限可能有问题的信息,这样我就可以在两个盒子上进行比较?

谢谢,

埃里克-

0 投票
2 回答
2956 浏览

asp.net - 无法在 MVC4 中使用 Rotativa 下载 PDF 文件

我正在使用 Rotativa 将 Razor 视图转换为 PDF。

PDF 文件未下载。

我可以在 Fiddler 中看到它,但浏览器没有提示下载 - 我在 IE 和 Chrome 上都试过了。

我还尝试使用此问题中的解决方案将文件下载到物理路径。但这也不起作用,因为系统无法访问该文件夹(拒绝访问)。

这是我的代码:

我想知道为什么会发生这种情况——我单击按钮,它调用 print ActionResult 方法——没有错误消息(我将它包装在 try 和 catch 块中)。我在同事的电脑上试过了,还是一样的问题!

非常感谢。

0 投票
0 回答
2906 浏览

asp.net-mvc - Rotativa 和 wkhtmltopdf 在 iis6 上通过 HTTPS 没有 CSS 或图像,但在 HTTP 上很好

使用 Rotativa,一个 wkhtmltopdf 的 .net 包装器。如果我通过 HTTPS 连接,我无法在 PDF 中呈现 CSS 或图像。我之前使用 HTTPS(SSL)在 2008r2 iis7 服务器上设置了这个我确实遇到了 css 和 webfonts 的类似问题,但我只是将所有路径更改为绝对路径并且它有效。

该作业部署在 ii6 windows 2003 服务器上。昨天它只是产生“发生了未处理的异常”。使用 HTTPS 时,我将 wkhtmltopdf 升级到 V 0.12.0,现在 PDF 将使用 ViewAsPdf 生成,没有 CSS 或图像。并使用 ActionAsPdf 呈现“您无权查看此页面”错误的 PDF。但是,如果我关闭 HTTPS,它会按应有的方式呈现。

我添加了一些测试操作结果、一个视图和一个视图布局,只是为了隔离问题。

我确定它与绝对路径无关。这是我在 _TestCssFromPath.cshtml 视图布局的标题中尝试的 5 种绝对路径组合方式,它们都可以在非 HTTPS 下工作

_TestCssFromPath.cshtml:

_TestInlineCss.cshtml:只是将内容从 .css 中取出,这确实可以正确呈现 CSS,没有图像或 webfonts。

家庭控制器:

PDF.cshtml

访问以下 URL 会产生以下结果:

  • /Home/TestViewAsPdf/1 ------> CSS 有效(只要它已经在 html 中),没有图像
  • /Home/TestViewAsPdf/2 ------> 没有 CSS,没有图像
  • /Home/TestActionAsPdf/1 ---->“您无权查看此页面”的 PDF
  • /Home/TestActionAsPdf/2 ---->“您无权查看此页面”的 PDF

我已经通过了文件夹权限,它们接缝很好......我错过了什么?

0 投票
2 回答
4216 浏览

jquery - 除首页外的所有带有页眉的页面 - RotativaPDF

我正在尝试使用 RotativaPDF 创建一个可导出/可打印的页面,其中这些页面必须有一小部分,其中包含来自客户的一些数据、带有客户信用和付款的表格,并且每个页面都必须有页脚和页眉(不包括第一页)。

我的控制器的操作:

注意:我定义的 CustomSwitches 就像在这个链接中描述的那样。

使用我的代码,所有页面都显示一个标题。我应该怎么做才能不在第一页上显示标题?

预期结果: 预期结果

0 投票
1 回答
1563 浏览

asp.net-mvc-3 - 使用 rotativa 下载pdf-在生产中花费很长时间

我在 MVC3 中使用 rotativa 下载 pdf 格式的多个视图。它在我的本地系统中运行良好。但是当我将它移到生产环境时,它需要将近 2-3 分钟才能下载。请建议任何选项以使其在生产中更快。

我在 rotativa 中使用 ViewAsPdf。

谢谢。

0 投票
4 回答
23012 浏览

asp.net-mvc - Rotativa ViewAsPDF CSS 大小/尺寸

我正在使用 RotativaViewAsPdf方法将 ASP.Net MVC 中的 HTML 视图渲染为 PDF。我通过设置将输出设置为 A4 尺寸、纵向且无边距:

然后在 CSS 中,我将一个元素设置为具有210mm宽度,它应该扩展页面的整个宽度,但在输出 PDF 中,210mm宽度并不代表 PDF 的整个宽度,而是更少。通过反复试验,生成的 PDF 的总宽度似乎约为246mm.

任何想法为什么会发生这种情况?

0 投票
3 回答
1415 浏览

rotativa - Rotativa 图像和 css 在 localhost 上工作正常,但在实时服务器中被忽略

在本地工作,css 和图像正确加载为 pdf。但是一旦我在服务器上迁移代码,这些就不会加载到生成的 pdf 中。

我正在使用 ViewAsPDF()。我的代码中有一些部分视图,所以我不能使用 Server.Map。

非常感谢您的帮助。

问候

0 投票
3 回答
4782 浏览

rotativa - 如何让 Rotativa 等待 javascript/jquery 执行

我有一个呈现的视图和一些更新某些字段的 javascript/jquery。当我使用 Rotativa 时,它会渲染视图,但在执行 JS 以替换某些字段文本之前。

有没有办法延迟 Rotativa 或让它等待 JS/JQuery?

0 投票
0 回答
1042 浏览

c# - ASP.NET c#创建PDF(Rotativa和ITextSharp)如何修改ViewerPreferences字典以关闭adobe reader中的打印缩放

我们通过几种不同的方式从 Web 应用程序生成 PDFS,ItextASharp、Html->Rotativa 和 RDLC...

这些工具中是否有任何方法可以修改 PDF 中的 ViewerPreferences 字典,以禁用“缩小以适应”选项。

PDF 格式支持此选项,我找到了相关文档...

我知道并非所有观众都遵守不缩小以适应的要求,但我们正在全面使用库存 adobe 阅读器,所以没关系。

我能够在 ITextSharp 中找到它来阅读、修改并保存它,所以我必须相信有一种方法可以在生成之前设置它......但我找不到它......

在 iTextSharp 中确定 PDF 是 Simplex 还是 Duplex 等属性

如果 Rotativa 也有办法,那就太棒了……因为我们将它用于一些报告

如果有办法在那里做的话,我们也有一些 RDLC 风格的工作......

我们必须这样做的原因是我们的一个应用程序打印标签,并且数据量没有留下任何捏造的空间。即使我们控制了生态系统,从 Web 应用程序打印它们也是有问题的。

不幸的是,我们的 IT 团队不会使用 reg 设置来更改机器上的默认设置。我们必须通过代码来完成。

0 投票
2 回答
4442 浏览

c# - Rotativa [Win32Exception (0x80004005): 访问被拒绝]

我正在使用 Rotativa 生成 PDF 格式的视图,它可以在我的 localhost 上完美运行/工作。但是,当部署到 GoDaddy 上的共享主机或我的 Azure 网站实例时,我收到以下错误。

我尝试授予 Rotativa 文件夹中 .exe 的权限,但没有成功,还尝试使用完全信任运行,但仍然出现错误。

错误/堆栈跟踪

说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.ComponentModel.Win32Exception:访问被拒绝

源错误:

在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。

堆栈跟踪:

[Win32Exception (0x80004005): Access is denied]
System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo) +1789 System.Diagnostics.Process.Start() +6735098
Rotativa.WkhtmltopdfDriver.Convert(String wkhtmltopdfPath, String switch, String html) + 226
Rotativa.AsPdfResultBase.CallTheDriver(ControllerContext context) +26 Rotativa.AsPdfResultBase.BuildPdf(ControllerContext context) +128
Rotativa.AsPdfResultBase.ExecuteResult(ControllerContext context) +19 System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) +13
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) +56
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList
1 个过滤器,Int32 filterIndex,ResultExecutingContext preContext,ControllerContext controllerContext,ActionResult actionResult) +420
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList 1.CallEndDelegate(IAsyncResult asyncResult) +10 System.Web.Mvc.Async.WrappedAsyncResultBase 1 .CallEndDelegate(IAsyncResult asyncResult) +36 System.Web.Mvc.Async.WrappedAsyncResultBase 1.CallEndDelegate(IAsyncResult asyncResult) +28 System.Web.Mvc.Async.WrappedAsyncResultBase 1.CallEndDelegate(IAsyncResult asyncResult) +36 System.Web.Mvc。 Async.WrappedAsyncResultBase`1.End() +541 filters, ActionResult actionResult) +52
System.Web.Mvc.Async.<>c__DisplayClass2b.<BeginInvokeAction>b__1c() +173 System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult) +100
System.Web.Mvc.Async.WrappedAsyncResult

1.End() +49
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +27
System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +13
System.Web.Mvc.Async.WrappedAsyncVoid

1.End() +54
System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +39 System.Web.Mvc.Controller.<BeginExecute>b__15(IAsyncResult asyncResult, Controller controller) +12
System.Web.Mvc.Async.WrappedAsyncVoid

1.End() +54
System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +29
System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10
System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState) +21
System.Web.Mvc.Async.WrappedAsyncVoid


System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +31 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult 结果) +9
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep。 Execute() +9514928 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155

控制器

权限我试图通过完全控制设置整个文件夹“Rotativa”的权限,现在我得到了这个......

该程序被组策略阻止。有关详细信息,请联系您的系统管理员

说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.ComponentModel.Win32Exception:此程序被组策略阻止。有关详细信息,请联系您的系统管理员

源错误:

在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。

堆栈跟踪:

[Win32Exception (0x80004005):此程序被组策略阻止。有关详细信息,请联系您的系统管理员]
System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo) +1789 System.Diagnostics.Process.Start() +6735098
Rotativa.WkhtmltopdfDriver.Convert(String wkhtmltopdfPath, Stringswitches, String html) +226
Rotativa.AsPdfResultBase.CallTheDriver(ControllerContext context) +26 Rotativa.AsPdfResultBase.BuildPdf(ControllerContext context) +128
Rotativa.AsPdfResultBase.ExecuteResult(ControllerContext context) +19 System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) + 13
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList 1 过滤器,Int32 filterIndex,ResultExecutingContext preContext,ControllerContext controllerContext,ActionResult actionResult) +420 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext,IList 1.CallEndDelegate(IAsyncResult asyncResult) + 10 System.Web.Mvc.Async.WrappedAsyncResultBase 1.CallEndDelegate(IAsyncResult asyncResult) +36 System.Web.Mvc.Async.WrappedAsyncResultBase 1.CallEndDelegate(IAsyncResult asyncResult) +28 System.Web.Mvc.Async.WrappedAsyncResultBase 1.CallEndDelegate( IAsyncResult asyncResult) +361 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) +56
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList

1 filters, ActionResult actionResult) +52
System.Web.Mvc.Async.<>c__DisplayClass2b.<BeginInvokeAction>b__1c() +173 System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult) +100
System.Web.Mvc.Async.WrappedAsyncResult

1.End() +49
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +27
System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +13
System.Web.Mvc.Async.WrappedAsyncVoid

1.End() +54
System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +39 System.Web.Mvc.Controller.<BeginExecute>b__15(IAsyncResult asyncResult, Controller controller) +12
System.Web.Mvc.Async.WrappedAsyncVoid

1.End() +54
System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +29
System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10
System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState) +21
System.Web.Mvc.Async.WrappedAsyncVoid

System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +54
System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +31 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult 结果) +9
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9514928 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155

2015 年 1 月 13 日更新

我最终切换到 TuesPechkin,这是一个更容易使用的解决方案。GoDaddy 和 Azure 一样支持 FullTrust,但是 Azure 在运行调用 GDI 的进程方面存在一个已知问题,大多数 wkhtmltopdf 库都会这样做。TuesPechkin 也无法在 Azure 上运行,因此我从未找到 Azure 网站的解决方案,但 TuesPechkin 在我的 web.config 中设置的 GoDaddy 托管上运行良好。