я могу создать часть файла jsPDF, используя строку HTML? - PullRequest
0 голосов
/ 21 марта 2019

Можно ли сделать что-то вроде этого:

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

   .... <other code> ....

   doc.addImage(imgData, 'PNG', 10, 10);       
   doc.text(first_name + " " + last_name, 10, 100);
   doc.text(company, 10, 120);
   doc.text(email, 10, 130);
   doc.fromHTML(april_2_html_table, 10, 140);
   doc.addPage();

, где в основном у меня есть строка, содержащая HTML-таблицу, и я сохранил ее как "first_html_table".Я хотел бы включить эту таблицу в PDF.Эта строка генерируется динамически.

Я не получаю ошибок, но в основном все, кроме таблицы, появляется в PDF.

РЕДАКТИРОВАТЬ 1

В настоящее время я получаю сообщение об ошибке:

jspdf.min.js:63 Uncaught (in promise) TypeError: Cannot read property 'name' of undefined
    at k (VM1512 jspdf.min.js:63)
    at r (VM1512 jspdf.min.js:63)
    at VM1512 jspdf.min.js:63
    at i (VM1512 jspdf.min.js:63)
    at v (VM1512 jspdf.min.js:63)
    at x (VM1512 jspdf.min.js:63)
    at Object.e.fromHTML (VM1512 jspdf.min.js:63)
    at badgelist.forEach.badge (printbadges.php:153)
    at Array.forEach (<anonymous>)
    at Object.onrendered (printbadges.php:122)

, и мой код можно увидеть здесь: https://pastebin.com/3AZZ3AYb I 'Я пытаюсь проверить только одну запись для одного "значка", и я убедился в консоли, что все данные, которые я ищу, присутствуют.Я также попытался сбросить содержимое first_html_table непосредственно в .fromHTML (), но это тоже не удалось.В настоящее время я пытаюсь сузить его до определенной ячейки, которая ему не нравится, или чего-то подобного.Я удалил все colspans и границы в HTML, но это не очень помогло.Любые советы будут оценены.

РЕДАКТИРОВАТЬ 2

Это определенно умирает, когда я пытаюсь запустить функцию fromHTML ().Я добавил два div в html, и я заполняю содержимое div с first_html_table и second_html_table.все выглядит прямо на экране.

Еще одна вещь, которую я сделал, - добавила отладки консоли, и я точно вижу, что она умирает, когда вызывает метод fromHTML:

            console.log(first_html_table); //looks good
            console.log(badge['first_name']); //looks good
            $("#agenda1").html(first_html_table); //looks good
            $("#agenda2").html(second_html_table); //looks good
            doc.addImage(imgData, 'PNG', 10, 10);       
            doc.text(badge['first_name'] + " " + badge['last_name'], 10, 100);
            doc.text(badge['company'], 10, 120);
            console.log('got this far'); //works
            doc.text(badge['email'], 10, 130);
            console.log('afteremail');//works
            doc.fromHTML(first_html_table, 10, 160);  
            console.log("do you get here?"); //code doesn't get here

Ответы [ 2 ]

1 голос
/ 21 марта 2019

Для достижения ожидаемого результата используйте опцию ниже

var doc = new jsPDF();

//var imgData = 'https://www.w3schools.com/w3css/img_lights'
var first_name = ''
var last_name = ''
var company = ''
var email = ''
var april_2_html_table = '<table><tr><td>1</td><td>ABC</td></tr></table>'

$('#show').click(function () {
  //doc.addImage(imgData, 'JPG', 10, 10);       
   doc.text(first_name + " " + last_name, 10, 100);
   doc.text(company, 10, 120);
   doc.text(email, 10, 130);
   doc.fromHTML(april_2_html_table, 10, 140);
   doc.addPage();  
    doc.save('sample.pdf');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.5.3/jspdf.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="content">
 Test</div>

<button id="show">Generate PDF</button>

codepen - https://codepen.io/nagasai/details/gEBjdq

0 голосов
/ 21 марта 2019

проблема была связана с искаженным HTML. первая строка в моей динамической таблице содержала только одну ячейку, тогда как в остальных было 3., поэтому мне пришлось добавить две пустые ячейки в первую сейчас, и теперь она счастлива. Ouf. * ​​1001 *

...