我正在尝试使用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";
带有“items”类的元素围绕页面上的所有内容。当我再次生成PDF时,所有内容都按预期消失了。这意味着javascript正在运行。
然后我想知道是否可能在我的javascript有机会运行之前生成PDF,这就是无法看到效果的原因。我在Winnovative网站的常见问题解答中发现,PDF转换器具有ConversionDelay属性,该属性可用于指定在开始PDF呈现之前等待异步内容加载的额外时间(以秒为单位)。所以我添加了以下内容:
pdfConverter.ConversionDelay = 30
即使在此延迟之后,我的javascript仍然无法运行。任何人都可以提供任何指导吗?感谢。
答案 0 :(得分:1)
我发现另一款来自winnovative“EVO HTML to PDF Converter for .NET”的产品可以很好地执行javascript,它也适用于jquery。
以下是测试页面:http://www.evopdf.com/evopdfdemo/default.aspx我尝试使用这些jQuery呈现页面成功转换:
jQuery Accordion(标签已正确呈现)
jQuery pagination(由jquery创建的页码可见)
在这两个例子中,winnovative html to pdf转换失败。
编辑:似乎EVO库在相关脚本上存在问题,包括不以“/”
开头如果您需要链接外部脚本,您有三个选择:
使用绝对路径添加脚本引用,如
<script src="www.myserver.com/myjsfile.js" type="text/javascript"></script>
使用&lt; script&gt;将脚本插入原始页面内标签
使用带有“/”的相对路径,如
<script src="/myjsfile.js" type="text/javascript"></script>
答案 1 :(得分:0)
此问题的一种解决方法是在浏览器上运行 JavaScript后保存页面源,然后将该HTML文件传递给转换器。
您可以为Firefox安装Web Developer Toolbar并使用查看来源 - &gt;查看“生成的源”功能以使页面的HTML处于当前状态,然后将其保存到文件中。