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を使用しています。これは、バージョン8のライセンスがあるためです。

編集:

との呼び出しがありませんでした.external。それらを適切に参照すると機能します(想像してみてください)。ABCpdf_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 エンジンが機能しなかったのは、多くのセキュリティ構成が必要なためだと思います。FAQ では、セキュリティのデバッグについて多くの時間を費やしているためです

于 2013-02-05T03:44:02.773 に答える