提问人:ompemi 提问时间:10/10/2008 最后编辑:Kevompemi 更新时间:9/28/2009 访问量:1758
在通过 AJAX 动态添加某些内容后,如何将当前页面转换为 pdf?
How can I convert my current page to pdf after some content dynamically added via AJAX?
问:
我在 PHP 中找到了一些可以完成这项工作的库或 Web 服务。问题是转换是在页面完全加载时完成的,我想在 onload 事件中通过 AJAX 动态添加一些内容后将页面转换为 PDF。
谢谢 奥马尔
答:
当您使用 AJAX 添加内容时,这只会发生在客户端的计算机上,因此服务器端 PHP 转换代码将不适用于它。如果您想在服务器上创建 PDF,您需要想出一种包含动态内容的服务器端方法。
由于 Ajax 的情况,这是客户端的要求。如果他们使用的是 Mac,他们可以简单地另存为 PDF,但除此之外,您几乎无法控制他们能做什么。
但是,对于服务器端实现,您可以做的是保留该页面及其自加载该页面以来的所有 AJAX 请求的记录,并在请求时从该记录在服务器上构造 HTML 和 PDF。当然,这不是一项简单的任务,而且是矫枉过正的。最好使用不同的机制来创建页面的服务器端 PDF 报告,而不是将 HTML 转换为 PDF。
您可以实现一个 AJAX 调用,在添加动态 contens 后将页面内容/状态发送回服务器端,在那里它可以呈现为 pdf。您可能不需要所有页面,具体取决于此“动态内容”的去向。
看起来有点乱,但在不了解项目的情况下,很难说是否有更干净的方法来做你想做的事情。
您可以回发到服务器(可能使用 AJAX)并从中生成 PDF。document.getElementsByTagName('html')[0].innerHTML
如果您的页面可以仅在客户端上更新,而无需访问服务器,则必须将备份发布到您的应用。这样,您将拥有所有内容,并且不会重新生成,如果只有客户端交互,则无法进行重建。
哇,谢谢大家,我不知道这是社区如此活跃。要回答 Beepcake 关于该项目的问题:
当页面加载时,应用程序通过 AJAX 请求从 40 多个服务器检索生物信息,然后显示一个独特的视图,您可以在其中使用许多选项操作图形。
因此,最酷的事情是在用户制作自己的图形版本时进行打印。我认为最好的解决方案是按照 RoBorg 所说,使用 document.getElementsByTagName('html')[0].innerHTML 发布整个 HTML,然后使用 dompdf 等库生成 PDF
评论