当使用 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 版,因为这是我们拥有的许可证。
编辑:
我错过了.external
和ABCpdf_RenderWait()
电话ABCpdf_RenderComplete()
。如果您正确引用它们,它会起作用(想象一下):
doc.HtmlOptions.OnLoadScript = @"
window.external.ABCpdf_RenderWait();
window.external.ABCpdf_RenderComplete();";
尽管正如我在回答中提到的那样,IE 也需要跳过很多安全问题。