javascript - 我有一个 jsPDF 错误

标签 javascript html jspdf

我正在尝试生成我在浏览器中呈现的页面的 pdf。我有一个按钮,您可以单击它,但会生成错误。谁能帮帮我

很多 jsPDF 问题(有些有答案)但不是这个,任何想法。没有做任何聪明的事情。只是从示例中直接复制/粘贴。

我的html

<button id="cmd">generate PDF</button>

<div class="row" id="dashb">

    <div class="col-md-6">
        <h1>Hello</h1>
        <p>World</p>
    </div>

</div>


<link rel="stylesheet" href="/Content/vis/css/vis.css" />
<link href="~/Content/css/leaflet120.css" rel="stylesheet" />
<link href="~/Content/css/leaflet07.css" rel="stylesheet" />

<script src="https://code.jquery.com/jquery-1.12.0.min.js"></script>
<script src="~/Content/js/leaflet120.js"></script>
<script src="~/Content/js/d3.v4.min.js"></script>
<script src="~/Content/js/leaflet07.js"></script>

<script src="/Content/vis/js/wrap.js"></script>
<script src="/Content/vis/js/d3tip.js"></script>
<script src="/Content/vis/js/d3pie.js"></script>
<script src="/Content/vis/js/vis.columnChart.js"></script>
<script src="/Content/vis/js/vis.lineChart.js"></script>
<script src="/Content/vis/js/vis.pieChart.js"></script>
<script src="/Content/vis/js/vis.circleMap.js"></script>
<script src="/Content/vis/js/vis.js"></script>

<script src="~/Scripts/jspdf.debug.js"></script>
<script src="~/Scripts/html2canvas.min.js"></script>


<script>
    $(function () {

        var specialElementHandlers = {
            '#editor': function (element, renderer) {
                return true;
            }
        };
        $('#cmd').click(function () {
            var doc = new jsPDF();
            doc.fromHTML(
                $('#dashb').html(), 15, 15,
                { 'width': 170, 'elementHandlers': specialElementHandlers },
                function () { doc.save('sample-file.pdf'); }
            );

        });
    });
</script>

这是错误

Uncaught TypeError: element.className.split is not a function
    at elementHandledElsewhere (jspdf.debug.js:7215)
    at DrillForContent (jspdf.debug.js:7426)
    at DrillForContent (jspdf.debug.js:7427)
    at DrillForContent (jspdf.debug.js:7427)
    at DrillForContent (jspdf.debug.js:7427)
    at jspdf.debug.js:7595
    at done (jspdf.debug.js:7470)
    at Image.img.onerror.img.onload (jspdf.debug.js:7492)

这是我的代码

<script>
    $(function () {

        var specialElementHandlers = {
            '#editor': function (element, renderer) {
                return true;
            }
        };
        $('#cmd').click(function () {
            var doc = new jsPDF();
            doc.fromHTML(
                $('#dashb').html(), 15, 15,
                { 'width': 170, 'elementHandlers': specialElementHandlers },
                function () { doc.save('sample-file.pdf'); }
            );

        });
    });
</script>

最佳答案

您需要将 click() 事件处理程序移至函数的开头。我包括了这个fiddle显示它工作。

$('#cmd').click(function () {
    var specialElementHandlers = {
        '#editor': function (element, renderer) {
            return true;
        }
    };
    var doc = new jsPDF();
    doc.fromHTML(
        $('#dashb').html(), 15, 15, {
            'width': 170,
            'elementHandlers': specialElementHandlers
        },
        function () {
            doc.save('sample-file.pdf');
        }
    );
});

关于javascript - 我有一个 jsPDF 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46936620/

相关文章:

javascript - 如何更改 &lt;style type ="text/css"> 的内容

javascript - JSPDF输出()不显示图像

javascript - 未捕获的类型错误 : Cannot read property 'name' of undefined at tableToJson

javascript - 在 angular.js 中切换类和文本

java - HTML 标记的位置无效

javascript - 注销后页面不安全并单击后退按钮

css - 另一个 Div 中的 Google Maps API v3

javascript - 如何知道所有子文件夹的名称

html - Textarea 在某些浏览器中是可拖动的

jspdf - 在表格前后添加内容(jsPDF autotable)