【问题标题】:Use window.print content to download a web page as pdf使用 window.print 内容将网页下载为 pdf
【发布时间】:2014-01-05 22:11:05
【问题描述】:

我想要一个链接,点击后会自动开始下载网页的可打印版本。

我正在使用 Moodle。我想要的内容完全一样如果我使用 ctrl + p 下载页面并保存为 pdf 或使用

<a href=\"whatever.htm\" onClick=\"window.print();return false\">Download web page</a>

我想要的正是该内容,因为使用这种方式,页眉、侧边栏和页脚将被删除。我不想要 css。

我没有使用它,因为它在某些浏览器中不起作用。

我宁愿不使用像 tcpdf 这样的 pdf 库,因为 Moodle 以动态方式加载内容并将其发送到这样的库。

我尝试使用 pdfcrowd.com 之类的网站,但当您要转换为 pdf 的网站使用服务器端会话来识别用户时,此类网站无法正常工作。

【问题讨论】:

  • 用户可以(取决于浏览器和操作系统)打印到他们自己选择的 PDF。或者,您可以使用服务器端编码工具创建 PDF 并使其可下载。但您不能指定“打印到 PDF”。

标签: javascript php pdf moodle


【解决方案1】:

我不相信window.print() 有办法做到这一点。但是,有免费的 HTML 到 PDF 转换器,您可以使用它自动开始下载。这方面的一个例子是jsPDF,这是一个免费的库,用于使用 Javascript 将 HTML 转换为 PDF

【讨论】:

  • 谢谢,我用 TCPDF 将它打印成 pdf,一切正常
  • @Toquis 你能解释一下你做了什么让它工作吗?
【解决方案2】:

**使用 jsPDF 的方法很简单,只要你会使用 JSpdf 库就可以了 **

<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.2/jspdf.min.js"></script>

function onClick() {
  var pdf = new jsPDF('p', 'pt', 'letter');
  pdf.canvas.height = 72 * 11;
  pdf.canvas.width = 72 * 8.5;

  pdf.fromHTML(document.body);

  pdf.save('test.pdf');
};

var element = document.getElementById("clickbind");
element.addEventListener("click", onClick);

【讨论】:

  • fromHTML 不会为你加载 css,所以它不一样,你需要使用 addHTML 和 html2canvas.js
猜你喜欢
  • 1970-01-01
  • 2019-09-11
  • 2017-04-11
  • 2023-03-28
  • 2018-01-15
  • 2015-03-23
  • 2018-05-18
  • 2016-10-23
  • 1970-01-01
相关资源
最近更新 更多