如何正确使用jsPDF库如何正确使用jsPDF库(How to properly use jsPDF

2019-05-08 15:42发布

我想我的一些的div转换成PDF,我已经试过jsPDF库,但没有成功。 看来我不能明白我需要进口,使图书馆工作。 我经历过的例子,我仍然无法弄清楚。 我已经试过如下:

<script type="text/javascript" src="js/jspdf.min.js"></script>

jQuery和后:

$("#html2pdf").on('click', function(){
    var doc = new jsPDF();
    doc.fromHTML($('body').get(0), 15, 15, {
        'width': 170
    });
    console.log(doc);
});

出于测试目的,但我得到:

"Cannot read property '#smdadminbar' of undefined"

其中#smdadminbar是从身体的第一个div。

Answer 1:

您可以使用PDF从HTML如下,

第1步:将以下脚本添加到页眉

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

或在本地下载

第2步:添加HTML脚本来执行jsPDF代码

自定义此通过标识或者只是改变#内容是你需要的标识符。

 <script>
    function demoFromHTML() {
        var pdf = new jsPDF('p', 'pt', 'letter');
        // source can be HTML-formatted string, or a reference
        // to an actual DOM element from which the text will be scraped.
        source = $('#content')[0];

        // we support special element handlers. Register them with jQuery-style 
        // ID selector for either ID or node name. ("#iAmID", "div", "span" etc.)
        // There is no support for any other type of selectors 
        // (class, of compound) at this time.
        specialElementHandlers = {
            // element with id of "bypass" - jQuery style selector
            '#bypassme': function (element, renderer) {
                // true = "handled elsewhere, bypass text extraction"
                return true
            }
        };
        margins = {
            top: 80,
            bottom: 60,
            left: 40,
            width: 522
        };
        // all coords and widths are in jsPDF instance's declared units
        // 'inches' in this case
        pdf.fromHTML(
            source, // HTML string or DOM elem ref.
            margins.left, // x coord
            margins.top, { // y coord
                'width': margins.width, // max width of content on PDF
                'elementHandlers': specialElementHandlers
            },

            function (dispose) {
                // dispose: object with X, Y of the last line add to the PDF 
                //          this allow the insertion of new lines after html
                pdf.save('Test.pdf');
            }, margins
        );
    }
</script>

第3步:添加您的主体内容

<a href="javascript:demoFromHTML()" class="button">Run Code</a>
<div id="content">
    <h1>  
        We support special element handlers. Register them with jQuery-style.
    </h1>
</div>

请参阅原教程

见工作小提琴



Answer 2:

你只需要这个链接jspdf.min.js

它有它的一切。

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


Answer 3:

这是什么终于为我做(和触发配置):

 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); 
 <h1>Dsdas</h1> <a id="clickbind" href="#">Click</a> <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.3/jspdf.min.js"></script> 

而对于那些KnockoutJS倾斜,一点点绑定:

ko.bindingHandlers.generatePDF = {
    init: function(element) {

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

        element.addEventListener("click", onClick);
    }
};


Answer 4:

你不应该也可以用jspdf.plugin.from_html.js库? 除了主库(jspdf.js),您必须使用“特别行动”(如jspdf.plugin.addimage.js使用图片)其他库。 检查https://github.com/MrRio/jsPDF 。



Answer 5:

首先,你必须创建一个处理程序。

var specialElementHandlers = {
    '#editor': function(element, renderer){
        return true;
    }
};

然后写在单击事件的代码:

doc.fromHTML($('body').get(0), 15, 15, {
    'width': 170, 
    'elementHandlers': specialElementHandlers
        });

var pdfOutput = doc.output();
            console.log(">>>"+pdfOutput );

假设你已经宣布doc变量。 然后,你必须使用文件的插件保存此PDF文件。



Answer 6:

怎么样在vuejs它是如何适用?

 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); 
 <h1>Dsdas</h1> <a id="clickbind" href="#">Click</a> <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.3/jspdf.min.js"></script> 



文章来源: How to properly use jsPDF library