0

当使用 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 也需要跳过很多安全问题。

4

1 回答 1

0

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

之后,一切都按预期工作。

我相信IE引擎没有工作,因为它需要大量的安全配置,因为FAQs花了很多时间讨论安全调试:http ://www.websupergoo.com/support.htm#6.7

于 2013-02-05T03:44:02.773 回答