2010-02-25 33 views
9

我需要能够将动态HTML(通过javascript加载页面时呈现的HTML)转换为PDF。我知道有很多HTML到PDF的转换器,但我迄今为止所发现的都没有处理动态HTML。动态HTML为PDF

给定的工具应该能够成功转换下页 - http://www.simile-widgets.org/timeline/

干杯 安东尼

UPDATE:

我不需要这里的JavaScript功能...即我不不需要能够交互屏幕...我只想要在PDF中捕获屏幕的最终呈现 - 就像在页面加载后拍摄照片一样。在这个例子中,我提供的JavaScript只是将div渲染到屏幕上,所以它不应该能够处理,只要它“让”“页面”首先渲染即可。

+1

因为有这么多类似这个问题但不完全相同的问题,我决定尝试收集一个完整的HTML到PDF转换器列表到一个社区wiki问题http://stackoverflow.com/questions/3178448/ list-of-html-to-pdf-converters – rjmunro 2010-07-05 12:56:11

+0

@rjmunro - 听起来真的很有用,但页面已经消失了 - 你是否设法在其他地方发布列表? – EML 2015-01-16 11:59:35

+0

你找到答案了吗? – EML 2015-01-16 12:00:41

回答

1

有没有办法可以做到。与在Web浏览器中享受完整的DOM和BOM访问相比,PDF中用于脚本的接口极其有限。在PDF中实现这样的交互可以很容易地从浏览器中的工作方式翻译出来,并且几乎肯定需要手写创作。

您的示例页面具有许多效果,PDF作为基本静态的文档布局格式根本无法完全重现。

编辑:

我只是想在屏幕的顶尖呈现在PDF

啊,OK,这是一个更容易,更普遍的问题,然后被捕获。

在这种情况下,你将不得不使用和自动化一个真正的web浏览器(如Firefox),或提供了一个Web浏览器的所有逻辑(如WebKit的)工具包,然后:

  • 使用内置工具(例如Firefox中的“打印到文件”(打开背景图像/颜色)或其中一个PDF导出附加组件)导出到PDF,或者使用其中一个PDF导出附加组件浏览器(并且如果必须,将图像包含在PDF中)

请参阅thesequestions了解浏览器快照的一些讨论。

+0

不正确。 Flash现在可以添加到pdf文件中。然而,我不知道JavaScript的动作/闪存转换路径。 :) – ghoppe 2010-02-25 02:12:53

-1

尝试xhtml2pdf。这是project page at python.org

+0

他想要一个能够理解JavaScript所做更改的解决方案。 – 2010-02-25 01:14:45

+0

我看不到我可以在哪里测试一个实时HTML页面,并且没有多说javascript或dhtml。 – 2010-02-25 01:15:09

+0

对不起,有一个链接到比萨的python项目页面。我改变了我的链接。 – ghoppe 2010-02-25 01:29:00

0

您可以使用JavaScript URI来提醒当前的DOM。例如:

javascript:alert("<html>" + document.documentElement.innerHTML + "</html>") 

复制HTML并保存到文件。
然后通过HTML2PDF转换器运行它。

+0

它需要是一个自动化过程......即用户点击一个按钮,他们可以下载报告... – 2010-02-25 04:00:31

+0

如果您的意思是页面中的按钮(而不是浏览器),那么您显然会控制该站点,以便您可以使用XMLHttpRequest将HTML张贴到服务器,并通过服务器上的转换器运行它。 – 2010-02-27 23:12:03

0

它使用任何JavaScript的事实意味着很多转换器将无法工作。 JavaScript可能很简单,但你仍然需要一个解释器来处理它。

我还没有用过自己,但你可以试试wkhtmltopdf。它使用webkit渲染引擎,我相信它包含完整的JavaScript支持。您需要能够安装软件并运行可执行文件,否则应该相当简单。