javascript - 有没有办法将网页的特定 div 打印为 pdf?

标签 javascript pdf phantomjs

我希望能够将特定的 div 打印为 PDF 和 JPG。我在运行 phantomjs 时使用了以下代码:

var bb = page.evaluate(function() {
  return document.getElementsByTagName("fieldset")[7].getBoundingClientRect();
});

page.clipRect = {
  top: bb.top,
  left: bb.left,
  width: bb.width,
  height: bb.height
};

这对于 PNG 效果很好,但对于 PDF 它只会打印整个页面。有谁知道为什么会这样以及如何解决?如果有人知道解决此问题的任何其他方法,即使是不涉及 phantomjs 或某些前端解决方案的方法,如果他们分享,我将非常感激。

编辑 我正在寻找解决此问题的方法,任何前端或后端解决方案都是可以接受的。但是,之前关于此主题的一些问题提供了涉及 html2canvas 或 jsPdf 的建议,但这些有问题有决议,所以任何其他答案解决方案将不胜感激。

最佳答案

我需要将 div 发送到 PDF,我使用这段代码并且工作正常。 (需要 JQuery)。

 function testPdf(){
 
    //send the div to PDF
    html2canvas($("#DIV_ID_HERE"), { // DIV ID HERE
        onrendered: function(canvas) {
            var imgData = canvas.toDataURL('image/png'); 
            var doc = new jsPDF('landscape');
            doc.addImage(imgData, 'PDF', 10, 10);
            doc.save('sample-file.pdf'); //SAVE PDF FILE
        }
    });

}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

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

<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.4.1/html2canvas.js"></script>

<div id="DIV_ID_HERE">
 
 Test - This div to pdf
 <br><input type="button" value="print" onclick="testPdf();">
<div>

关于javascript - 有没有办法将网页的特定 div 打印为 pdf?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47350600/

相关文章:

javascript - 日期字符串转换浏览器与夏令时的差异

javascript - 从 Typescript 中的 http url 导入 ES6 模块

javascript - 按钮 ouside d3.js svg 用于选择和修改 d3.js 元素

java - 所见即所得 PDF 创建器

javascript - 当两个事件同时触发时如何解决promise?

php - Laravel 5 PDF页脚与 Blade 显示空白

java - 使用 ThinkFree PDF Viewer 显示原始 PDF 数据的 Base64 编码字符串

jquery - 使用 Phantomjs/Jquery 发送跨域 GET 请求服务器端

javascript - 如何在 IE 和 PhantomJS 中使用 Typescript 创建 KeyboardEvent

javascript - 如何在 Windows 7 上使用 NodeJS/PhantomJS/CasperJS