Winnovative HTML to PDF转换器

7
我正在尝试使用Winnovative HTML to PDF转换器将一个aspx页面转换为PDF,但在转换页面之前,我希望运行一些javascript。我知道javascript可以工作,因为我已经测试过独立的aspx页面而没有将其转换为PDF。然而,在转换时,似乎javascript没有被执行。我已经阅读了Winnovative网站上的FAQ(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";

具有“items”类的元素包围页面上的所有内容。当我再次生成PDF时,所有内容都已消失,这是预期的结果。这意味着javascript正在运行。

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

pdfConverter.ConversionDelay = 30

即使经过这样的延迟,我的JavaScript仍然无法运行。有人可以给予任何帮助吗?谢谢。

你是在 document.ready 中运行你的 JS 代码吗? - Haroon
@Haroon 是的,我是。脚本在页面底部,因此即使内容加载完成后也可以运行,如果有用的话。 - Leah
这个问题有任何新进展吗?我也遇到了同样的问题。 - Matteo Conta
2
@Haroon,你的问题是指你对这个问题有答案或建议吗? - Matteo Conta
你找到解决方案了吗?我也遇到了这个问题。 - Glen Little
2个回答

1

我发现winnovative的另一款产品"EVO HTML to PDF Converter for .NET"能很好地执行JavaScript,也能与jQuery一起使用。

这是测试页面: http://www.evopdf.com/evopdfdemo/default.aspx 我已经成功地将下面这些使用jQuery渲染的页面进行了转换:

jQuery手风琴 (标签页正确渲染)

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>
    

你好,注意到你在列表中缺少了额外的四个空格缩进。 :) - Shadow The Spring Wizard

0

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

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


谢谢您的建议,但不幸的是,由于生成的HTML取决于各种参数,这是不可能的。 - Leah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接