从html dom创建可打印的PDF

Create printable PDF from html dom

本文关键字:打印 PDF 创建 html dom      更新时间:2023-09-26

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

我遇到了关于html/printing的所有常见问题,我可能(在一定的时间内)可以解决这些问题,但这让我思考——有没有一种方法可以使用javascript提取DOM并从中生成PDF。这可能是一个有点愚蠢的问题——听起来有点棘手,我也不太确定,即使我可以使用javascript构建一个PDF文件,然后如何将其呈现给用户

人们怎么想?

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');

https://parall.ax/products/jspdf,我认为这将帮助您

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

我的解决方案是:(1)在Javascript中,设置一个cookie,然后使用location.href = ...;(而不是AJAX)调用一个PHP脚本,然后(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>";

事实证明,使用AJAX不可能实现我想要的结果,因为AJAX从不允许您提示用户。

你可以使用这种方法做类似的事情,但在你的情况下,你会生成一个PDF文件,而不是.doc文件(或者下载一个预先准备好的文件)。

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