2011-05-27 146 views
5

我试图将一个aspx页面转换为使用Winnovative HTML to PDF转换器的PDF,但在转换页面之前,我想要运行一些JavaScript。我知道JavaScript的工作原理是我测试了独立的aspx页面而不将其转换为PDF。但是,转换时,看起来javascript还没有运行。我已阅读了Winnovative网站上的常见问题(http://www.winnovative-software.com/FAQ.aspx),因此我在代码中添加了以下内容以确保javascript可以运行:Winnovative HTML to PDF转换器

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

你运行里面的document.ready你的js代码的相对路径的原始页面内脚本??? – Haroon 2011-05-27 15:57:12

+0

@哈罗姆是的,我是,脚本在页面的底部,所以它运行后,内容已经加载,以及如果这是任何使用 – Leah 2011-05-27 16:02:04

+0

在这个问题上的任何新闻?我有同样的问题 – 2011-11-09 13:36:33

回答

0

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

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

+0

感谢您的建议,但不幸的是,因为生成的HTML是动态依赖于各种参数,所以这是不可能的。 – Leah 2011-06-14 19:03:23

1

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

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

jQuery Accordion(标签正确渲染)

jQuery pagination(由jQuery的创建的网页数量是可见的)

在这两个例子中,创新的html to pdf转换失败。


编辑:看来,EVO库对相关脚本的问题包括不以“/”

如果您需要连接外部脚本,你有三种选择:

  1. 添加像

    <script src="www.myserver.com/myjsfile.js" type="text/javascript"></script> 
    
  2. 插入T使用的绝对路径脚本参考他使用< script>标记

  3. 使用带有 “/” 像

    <script src="/myjsfile.js" type="text/javascript"></script> 
    
+0

@Shadow精灵感谢您的编辑! – 2011-11-10 13:48:55

+0

干杯,注意到你错过了列表中额外的四个空格缩进。 :) – 2011-11-10 14:58:34