JSPDF为什么我在pdf中获取此结果为Vertical?

时间:2017-03-17 13:37:12

标签: javascript html jspdf

我正在使用Jspdf库从HTML到pdf获取结果。所以在我的情况下,为什么我在垂直而不是水平方向得到这个结果? 我的HTML模板代码是

<table id="customers" class="table-wide">';
htmlStr += '<thead></thead>';
htmlStr += '<tbody></tbody>';
htmlStr += '</table>';

我在这个For循环中得到这个结果并从ID

获得
 for(var i = 0; i < features.length; ++i)
    {
        if(features[i].geometry != null){
           var data = features[i].attributes.data;
            tr = $('<tr></tr>');

            layer.fields.each(function(field) {
                var td = $('<td></td>');
                if(data[field.id] != null)td.text(data[field.id]);
                //console.log(td);
                console.log(JSON.stringify(data[2353]));
                tr.append(td);


            }

对于代码生成,我这样做。

 var pdf = new jsPDF('p', 'pt', 'letter');
           source = $('#customers')[0];

           specialElementHandlers = {
               '#bypassme': function (element, renderer) {
                   return true
               }
           };
           margins = {
              top: 80,
              bottom: 60,
              left: 40, 
               width: 522
           };

           pdf.fromHTML(
               source,
               margins.left,
               margins.top, {
                   'width': margins.width, // max width of content on PDF
                   'elementHandlers': specialElementHandlers
               },


               function (dispose) {
                   // pdf.save('Test.pdf');
               });
            pdf.output('dataurlnewwindow');
       }


                   // pdf.save('Test.pdf');
               });
            pdf.output('dataurlnewwindow');
       }

PDF result of output

1 个答案:

答案 0 :(得分:0)

将要导出的内容包装在容器中。并确保您的表格正确生成

这里#content是容器。定位容器的内部HTML内容。

&#13;
&#13;
<div id="content">

  <p>This is a demo for exporting PDF from html using jsPDF.
  </p>
  <br>

  <table id="demo" class="table table-bordered">
    <thead>
      <tr>
        <th>Serial Number</th>
        <th>Name</th>
        <th>Percentile</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>1</td>
        <td>James</td>
        <td>8.9</td>
      </tr>
      <tr>
        <td>2</td>
        <td>Harry</td>
        <td>7.6</td>
      </tr>
    </tbody>
  </table>

  <div>
    <button class="btn" id="export">Save</button>
  </div>


</div>
&#13;
&#13;
&#13;

&#13;
&#13;
//Html source 
var source = document.getElementById('content').innerHTML;

var margins = {
  top: 10,
  bottom: 10,
  left: 10,
  width: 700
};

doc.fromHTML(
  source, // HTML string or DOM elem ref.
  margins.left,
  margins.top, {
    'width': margins.width,
    '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
    doc.save('Test.pdf');
  }, margins);
&#13;
&#13;
&#13;

请参阅此处了解更详细的实施https://jsfiddle.net/Purushoth/bor1nggb/

同样对于表格导出,您可以使用jsPDF-Autotable插件。 以下是自定义表的更多示例。 https://simonbengtsson.github.io/jsPDF-AutoTable/