2014-04-14 17 views
6

Tôi bị tấn công trong hai ngày qua, để đặt chiều rộng cột để tạo PDF bằng jsPDF.Cách đặt chiều rộng cột để tạo pdf bằng cách sử dụng jsPDF

Tôi là có thể tạo pdf bằng cách sử dụng lib jsPDF từ bảng html, nhưng tôi đang gặp vấn đề về các cột chồng chéo. Bởi vì tôi muốn hiển thị 20 cột trong trang tính. Tôi đã thay đổi các tùy chọn chân dung thành phong cảnh và thiết lập chiều rộng 5000 trong xuất khẩu tùy chọn kịch bản cũng như chiều rộng bảng html.

Hãy giúp tôi, để đặt chiều rộng cột pdf từ jsPDF. Cảm ơn

Trả lời

15

tôi đã cùng một vấn đề 4 ngày trở lại và đã có thể sửa chữa nó .. Tôi đã cung cấp mẫu mã dưới đây để bạn có thể hiểu ..

Tôi giả định rằng yêu cầu là để xuất khẩu một bảng html (nêu bên dưới là bảng 1, có 3 hàng trở lên) thành định dạng PDF. Chúng tôi sẽ thiết lập chiều rộng ô/cột và các loại phông chữ và phông chữ bổ sung cho 3 hàng đó ..

Hàng đầu tiên sẽ là Đầu trang - đậm được áp dụng .. Tôi đã áp dụng các kiểu khác nhau cho hàng thứ 2 và thứ 3 cho các phong cách hiểu biết có sẵn .. Nếu bạn muốn áp dụng chiều rộng cột khác nhau, cho mỗi cột - bạn cũng có thể làm điều đó ..

Hy vọng mã sau có thể đọc được và tự giải thích. Hãy cho tôi biết nếu bạn có bất kỳ câu hỏi nào

$(document).on("click", "#btnExportToPDF", function() { 

     var table1 = 
     tableToJson($('#table1').get(0)), 
     cellWidth = 35, 
     rowCount = 0, 
     cellContents, 
     leftMargin = 2, 
     topMargin = 12, 
     topMarginTable = 55, 
     headerRowHeight = 13, 
     rowHeight = 9, 

     l = { 
     orientation: 'l', 
     unit: 'mm', 
     format: 'a3', 
     compress: true, 
     fontSize: 8, 
     lineHeight: 1, 
     autoSize: false, 
     printHeaders: true 
    }; 

    var doc = new jsPDF(l, '', '', ''); 

    doc.setProperties({ 
     title: 'Test PDF Document', 
     subject: 'This is the subject', 
     author: 'author', 
     keywords: 'generated, javascript, web 2.0, ajax', 
     creator: 'author' 
    }); 

    doc.cellInitialize(); 

    $.each(table1, function (i, row) 
    { 

     rowCount++; 

     $.each(row, function (j, cellContent) { 

      if (rowCount == 1) { 
       doc.margins = 1; 
       doc.setFont("helvetica"); 
       doc.setFontType("bold"); 
       doc.setFontSize(9); 

       doc.cell(leftMargin, topMargin, cellWidth, headerRowHeight, cellContent, i) 
      } 
      else if (rowCount == 2) { 
       doc.margins = 1; 
       doc.setFont("times "); 
       doc.setFontType("italic"); // or for normal font type use ------ doc.setFontType("normal"); 
       doc.setFontSize(8);      

       doc.cell(leftMargin, topMargin, cellWidth, rowHeight, cellContent, i); 
      } 
      else { 

       doc.margins = 1; 
       doc.setFont("courier "); 
       doc.setFontType("bolditalic "); 
       doc.setFontSize(6.5);      

       doc.cell(leftMargin, topMargin, cellWidth, rowHeight, cellContent, i); // 1st=left margin 2nd parameter=top margin,  3rd=row cell width  4th=Row height 
      } 
     }) 
    }) 

doc.save('sample Report.pdf'); }) 




function tableToJson(table) { 
var data = []; 

// first row needs to be headers 
var headers = []; 
for (var i=0; i<table.rows[0].cells.length; i++) { 
    headers[i] = table.rows[0].cells[i].innerHTML.toLowerCase().replace(/ /gi,''); 
} 

// go through cells 
for (var i=1; i<table.rows.length; i++) { 

    var tableRow = table.rows[i]; 
    var rowData = {}; 

    for (var j=0; j<tableRow.cells.length; j++) { 

     rowData[ headers[j] ] = tableRow.cells[j].innerHTML; 

    } 

    data.push(rowData); 
}  

return data; } 
+0

tuyệt vời! Cảm ơn! – gco

+0

Bạn được chào đón gco. Tôi vui mừng vì nó đã giúp bạn :) và cảm ơn bạn đã bỏ phiếu – Vinu

+0

@Vinu Phiên bản jsPDF nào sẽ cho phép tất cả các tùy chọn đó? Cái tôi đang sử dụng chỉ cho phép 'chức năng jsPDF (định hướng, đơn vị, định dạng, nénPdf) {/ ** Định hướng chuỗi, đơn vị chuỗi, định dạng chuỗi, Boolean nén * /' –

Các vấn đề liên quan