ABCPdf给出“;无法呈现HTML.无法应用JScript“;即使使用简单的OnLoadScript
本文关键字:OnLoadScript 简单 HTML 给出 ABCPdf 应用 JScript | 更新日期: 2023-09-27 17:57:27
当使用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