ABCPdf提供“无法呈现HTML。无法应用JScript”,即使使用简单的OnLoadScript也是如此

时间:2013-02-03 18:32:39

标签: c# javascript abcpdf

当使用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,因为这是我们的许可证。

修改:

我错过了.externalABCpdf_RenderWait()来电的ABCpdf_RenderComplete()。如果你正确地引用它们(想象一下)它是有效的:

doc.HtmlOptions.OnLoadScript = @"
    window.external.ABCpdf_RenderWait(); 
    window.external.ABCpdf_RenderComplete();";

虽然正如我在回答中提到的那样,IE也需要很多安全箍。

1 个答案:

答案 0 :(得分:0)

所以我实际上没有让IE引擎以我想要的方式执行JavaScript,但我能够找到使用Gecko引擎的解决方案。原始的NuGet安装不包括Gecko DLL,所以我刚刚下载了独立安装并手动添加了DLL。

之后,一切都按预期完成。

我认为IE引擎无法正常工作,因为它需要大量的安全配置,因为常见问题解答会花费大量时间讨论安全性调试:http://www.websupergoo.com/support.htm#6.7