Javascript 从html dom创建可打印的PDF

Javascript 从html dom创建可打印的PDF,javascript,html,pdf,printing,Javascript,Html,Pdf,Printing,我有一个网页,其中有相当数量的内容是动态构建的(jquery ajax等),并且需要提供可打印的版本。 我遇到了所有关于html/打印的常见问题,我可能(给定时间)可以解决这些问题,但这让我思考——是否有一种方法可以使用javascript从DOM中生成PDF。这可能是一个有点愚蠢的问题——听起来有点棘手,而且我也不太确定,即使我可以使用javascript构建一个PDF文件,我将如何向用户展示它。人们怎么想 是我几天前问的一个关于类似站点/问题的问题 我的解决方案是:(1)在Javascrip

我有一个网页,其中有相当数量的内容是动态构建的(jquery ajax等),并且需要提供可打印的版本。

我遇到了所有关于html/打印的常见问题,我可能(给定时间)可以解决这些问题,但这让我思考——是否有一种方法可以使用javascript从DOM中生成PDF。这可能是一个有点愚蠢的问题——听起来有点棘手,而且我也不太确定,即使我可以使用javascript构建一个PDF文件,我将如何向用户展示它。

人们怎么想

是我几天前问的一个关于类似站点/问题的问题

我的解决方案是:(1)在Javascript中,设置cookie,然后使用
location.href=…;调用PHP脚本(不是AJAX)然后(2)让PHP脚本访问cookie以确定所需的报告类型,然后回显一个表单,提示用户使用正确的头下载文件。PHP类似于以下内容:

header("Content-type: application/vnd.ms-word");
header("Content-Disposition: attachment;Filename=test.doc");

echo "<html>";
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Windows-1252\">";
echo "<body>";
echo "Testing-2-3!";
echo "</body>";
echo "</html>";
标题(“内容类型:application/vnd.ms word”);
标题(“内容配置:附件;文件名=test.doc”);
回声“;
回声“;
回声“;
回声“测试-2-3!”;
回声“;
回声“;
事实证明,使用AJAX不可能实现我想要的效果,因为AJAX从不允许您提示用户

您可以使用此方法执行类似的操作,但在您的情况下,您将生成一个PDF而不是.doc文件(或下载一个预先准备好的文件)

当然,这种方法的一个优点是不需要重新加载页面

var doc = new jsPDF();
doc.text(20, 20, 'Hello world!');
doc.text(20, 30, 'This is client-side Javascript, pumping out a PDF.');
doc.addPage();
doc.text(20, 20, 'Do you like that?');
// Output as Data URI
doc.output('datauri');

,我想这会对你有帮助

嗨,谢谢-看起来真的很好。我希望我可以基本上不使用DOM中已经建立的内容,只提供一些更多的细节(页面大小等)。@Moo[link]我将尝试看看是否可以让dompdf为我工作。我应该能够重构我的服务器端代码,这样我就可以重建在服务器上显示客户端的html。我应该能够将生成的图表作为图像发送回服务器(希望避免路径遍历等)。结合以上Nicks的建议,理论上我可以得到一个类似于我在屏幕上看到的PDF文件。呸。谢谢你的帮助。你不能用CSS来设计风格,你必须使用他们的API。(例如:
doc.setTextColor(100);
)嗯,很有趣。我会好好考虑一下这个主意。我有一个问题,我在页面上有一些用javascript(zingcharts)构建的图形,因此我需要以某种方式将图片返回到服务器以构建PDF(或用php重新生成图形)。最终,我试图变得懒惰——我在客户端的屏幕上有一个很好的表示我想要的东西(html)。当涉及到打印时,我无法让所有的浏览器都发挥作用。我将使用这两个建议的答案。谢谢你的帮助。