7

我正在尝试使用 Winnovative HTML 到 PDF 转换器将 aspx 页面转换为 PDF,但在转换页面之前,我希望运行一些 javascript。我知道 javascript 可以工作,因为我已经测试了独立的 aspx 页面而没有将其转换为 PDF。但是,当它被转换时,似乎 javascript 尚未运行。我已阅读 Winnovative 网站 (http://www.winnovative-software.com/FAQ.aspx) 上的常见问题解答,因此我在我的代码中添加了以下内容,以确保允许运行 javascript:

pdfConverter.ScriptsEnabled = True
pdfConverter.InternetSecurityZone = InternetSecurityZone.LocalMachine

添加此代码仍然无效,因此我尝试注释掉我的主要 javascript 并测试一个非常简单的 javascript 以查看它是否有效。我试过的javascript很简单:

var item = $(".items")[0];
items.style.display = "none";

具有“项目”类的元素围绕页面上的所有内容。当我再次生成 PDF 时,所有内容都按预期消失了。这意味着 javascript 正在运行。

然后我想知道是否可能在我的 javascript 有机会运行之前生成了 PDF,这就是为什么看不到效果的原因。我在 Winnovative 网站的常见问题解答中发现 PDF 转换器有一个 ConversionDelay 属性,该属性可用于指定额外的时间段(以秒为单位),以在开始 PDF 渲染之前等待异步内容加载。所以我添加了以下内容:

pdfConverter.ConversionDelay = 30

即使在此延迟之后,我的 javascript 仍然无法运行。任何人都可以提供任何指导吗?谢谢。

4

2 回答 2

1

我发现另一个来自 winnovative “EVO HTML to PDF Converter for .NET”的产品可以很好地执行 javascript,它也适用于 jquery。

这是测试页面:http ://www.evopdf.com/evopdfdemo/default.aspx我尝试使用这些 jQuery 渲染页面成功转换:

jQuery Accordion(标签正确呈现)

jQuery分页(jquery创建的页码可见)

在这两个示例中,winnovative html 到 pdf 的转换失败。


编辑:似乎 EVO 库在相关脚本上存在问题,包括不以“/”开头

如果您需要链接外部脚本,您有三个选项:

  1. 使用绝对路径添加脚本引用,例如

    <script src="www.myserver.com/myjsfile.js" type="text/javascript"></script>
    
  2. 使用 <script> 标签将脚本插入到原始页面中

  3. 使用带有“/”的相对路径,例如

    <script src="/myjsfile.js" type="text/javascript"></script>
    
于 2011-11-09T23:13:40.617 回答
0

此问题的一种解决方法是在 JavaScript 在浏览器上运行保存页面源代码,然后将该 HTML 文件传递​​给转换器。

您可以安装 Firefox 的Web Developer Toolbar并使用查看源代码 -> 查看生成的源代码功能来获取当前状态的页面 HTML,然后将其保存到文件中。

于 2011-06-03T14:47:58.147 回答