ABCPdf给出“;无法呈现HTML.无法应用JScript“;即使使用简单的OnLoadScript
ABCPdf giving "Unable to render HTML. Unable to apply JScript" even with simple OnLoadScript
当使用ABCPdf将页面呈现为PDF时,我正在尝试进行一些简单的DOM操作。我遵循了他们在这里记录的内容:http://www.websupergoo.com/helppdf9net/source/5-abcpdf/xhtmloptions/2-properties/usescript.htm
但当我尝试以下简单的东西时:
var doc = new Doc();
doc.HtmlOptions.UseScript = true;
doc.HtmlOptions.UseNoCache = true;
doc.HtmlOptions.PageCachePurge();
doc.HtmlOptions.OnLoadScript = @"var reportElms = document.getElementsByClassName(""report"");";
doc.Page = doc.AddPage();
doc.AddImageUrl(Url.Action("TestPdf", "Pdf", new { }, "http"));
我得到了一个例外:
Unable to render HTML. Unable to apply JScript.
COM error 80020101.
Script 'var reportElms = document.getElementsByClassName("report");'.
有没有想过我做错了什么?
即使是内置功能也无法工作
我甚至在下面的脚本中得到了同样的异常:
doc.HtmlOptions.OnLoadScript = @"
window.ABCpdf_RenderWait();
window.ABCpdf_RenderComplete();";
顺便说一句,我使用的是版本8,因为这是我们的许可证。
编辑:
我错过了ABCpdf_RenderWait()
和ABCpdf_RenderComplete()
调用的.external
。如果你正确地引用它们(想象一下),它就会起作用:
doc.HtmlOptions.OnLoadScript = @"
window.external.ABCpdf_RenderWait();
window.external.ABCpdf_RenderComplete();";
尽管正如我在回答中所提到的,IE也需要跳过许多安全障碍。
所以我实际上并没有让IE引擎以我想要的方式执行JavaScript,但我能够使用Gecko引擎找到解决方案。最初的NuGet安装不包括Gecko DLL,所以我只是下载了独立安装并手动添加了DLL。
在那之后,一切都如愿以偿。
我认为IE引擎不起作用,因为它需要大量的安全配置,因为常见问题解答花了大量时间讨论安全调试:http://www.websupergoo.com/support.htm#6.7
相关文章:
- 简单的javascript在Shopify中不起作用
- Firebase迁移-简单的Firebase.set没有'不再工作了——旧的还是新的
- 如何制作简单的php'在Javascript中的foreach等价物
- JQuery:向多个匹配结果添加换行符的最简单方法
- AJAX简单错误.XMLHttpRequest无法加载http://localhost/mpl/getPage.php.
- Moment/Jquery-一个简单时间线的愚蠢问题
- 什么's本地node.js服务器和python简单http服务器之间的区别
- 简单类测试未通过
- 简单地将拆分变量添加到对象中
- 通过javascript操作图像,非常简单
- 问题用moment JS制作一个简单的时间表
- 简单的ES6承诺问题-交换解决和拒绝参数
- 带有计数器、缩略图、进度条和淡入淡出效果的简单jQuery幻灯片
- 简单的JS函数.需要对变量进行澄清
- 简单的交换程序无法使用javascript
- 如何只使用特定的表行构建简单的手风琴
- 我怎么能让流星简单模式中的一个字段等于一个js变量,并且仍然让用户填写简单模式的其余部分
- react路由器使用简单的javascript路由器配置来处理不匹配的路径
- 简单的JavaScript方法链接
- ABCPdf给出“;无法呈现HTML.无法应用JScript“;即使使用简单的OnLoadScript