2014-06-17 18 views
16

những gì tôi đang làm là sử dụng jsPDF để tạo một tệp PDF của biểu đồ mà tôi đã tạo. Tuy nhiên, tôi không chắc chắn làm thế nào để bọc tiêu đề (thêm bằng cách sử dụng hàm text()). Độ dài của tiêu đề sẽ thay đổi từ biểu đồ đến đồ thị. Hiện tại, các chức danh của tôi đang chạy khỏi trang. Bất kỳ trợ giúp sẽ được đánh giá cao!Chèn từ trong tệp PDF được tạo (sử dụng jsPDF)?

Đây là mã tôi có cho đến nay:

var doc = new jsPDF(); 
doc.setFontSize(18); 
doc.text(15, 15, reportTitle); 
doc.addImage(outputURL, 'JPEG', 15, 40, 180, 100); 
doc.save(reportTitle); 

Không có gì để giữ reportTitle chạy ra ngoài trang

+0

Chào mừng bạn đến SO! Bạn nên mở rộng câu hỏi của mình một chút - cho chúng tôi thấy những gì bạn đã thử, kết quả mong đợi của bạn là gì và những gì bạn đang thực sự nhận được. – Kryten

+0

Tôi đã thêm bit mã tôi đang sử dụng để tạo tài liệu. Và như tôi đã nói, đôi khi reportTitle quá dài và chạy ở bên phải của tệp PDF. Thay vào đó, tôi muốn làm cho nó bọc bằng cách nào đó. – user3749946

Trả lời

40

Được rồi tôi đã giải quyết này. Tôi đã sử dụng hàm jsPDF, splitTextToSize (văn bản, maxlen, tùy chọn). Hàm này trả về một mảng các chuỗi. May mắn thay, hàm jsPDF text(), được sử dụng để ghi vào tài liệu, chấp nhận cả chuỗi và mảng của chuỗi.

var splitTitle = doc.splitTextToSize(reportTitle, 180); 
doc.text(15, 20, splitTitle); 
+1

Cảm ơn, nó đã giúp tôi. Chỉ một bình luận, trong phương thức text của jsPDF, splitTitle phải là tham số đầu tiên. – Guy

+0

reportTitle: tôi nên thay thế điều này .... Có lỗi này Uncaught ReferenceError: reportTitleis không được định nghĩa –

+0

@MonickaAkilan reportTitle là biến mà tôi đã sử dụng. Nó có lẽ chỉ là một chuỗi. Bạn có thể phải đặt biến đầu tiên – user3749946

0

Nếu bạn cần phải tự động thêm dòng mới mà bạn muốn truy cập vào mảng trả về bởi doc.splitTextToSize và sau đó thêm không gian thẳng đứng hơn khi bạn đi qua mỗi dòng:

var y = 0, lengthOfPage = 500, text = [a bunch of text elements]; 

//looping thru each text item 
for(var i = 0, textlength = text.length ; i < textlength ; i++) { 

    var splitTitle = doc.splitTextToSize(text[i], lengthOfPage); 

    //loop thru each line and output while increasing the vertical space 
    for(var c = 0, stlength = splitTitle.length ; c < stlength ; c++){ 

     doc.text(y, 20, splitTitle[c]); 
     y = y + 10; 

    } 

} 
0

Khi chúng tôi sử dụng linebreak trong jsPDF, chúng tôi nhận được thông báo lỗi b.match không được xác định, để giải quyết lỗi này chỉ cần hủy bỏ các js và thay thế b.match bằng Chuỗi (b) .match và u sẽ nhận được lỗi này hai lần chỉ thay thế cả hai và sau đó chúng tôi nhận được c.split không được xác định chỉ làm tương tự trong trường hợp này thay thế nó bằng Chuỗi (c) .match và chúng tôi đã hoàn tất. Bây giờ bạn có thể thấy ngắt dòng trong pdf của bạn. Cảm ơn bạn

0

Auto-phân trang và vấn đề quấn văn bản trong JSPDF có thể đạt được với mã sau đây

var splitTitle = doc.splitTextToSize($('#textarea').val(), 270); 
    var pageHeight = doc.internal.pageSize.height; 
    doc.setFontType("normal"); 
    doc.setFontSize("11"); 
    var y = 7; 
    for (var i = 0; i < splitTitle.length; i++) {     
     if (y > 280) { 
      y = 10; 
      doc.addPage(); 
     } 
     doc.text(15, y, splitTitle[i]); 
     y = y + 7; 
    } 
    doc.save('my.pdf'); 
Các vấn đề liên quan