jsPDF AutoTable - autoTable не является функцией
Я использую JSPdf в приложении Angular, и я пытаюсь использовать плагин JS Autotable, но я сталкиваюсь с ошибкой JS
ИСКЛЮЧЕНИЕ: Uncaught (в обещании): TypeError: doc.autoTable не является функцией
Ошибка типа: doc.autoTable не является функцией
У меня установлены jspdf и jspdf-autotable через npm, я подтвердил, что они находятся в модулях узла.
Я импортировал оба плагина следующим образом:
import * as jsPDF from 'jspdf'
import * as autoTable from 'jspdf-autotable'
и вот мой код:
private renderPdf():void{
let testcolumns = ["TestCol1", "TestCol2"];
let testrows = [["test item 1", "test item 2"]];
let doc = new jsPDF();
doc.autoTable(testcolumns, testrows);
doc.save('sample.pdf');
}
Могу ли я что-то упустить здесь или предоставить больше кода, чтобы помочь определить проблему?
Спасибо!
7 ответов
Просто удалите 2 первую строку импорта и добавьте следующие строки:
var jsPDF = require('jspdf');
require('jspdf-autotable');
Вы можете увидеть пример здесь
У меня была такая же проблема, и я исправил ее так:
import jsPDF from '../../node_modules/jspdf/dist/jspdf.umd.min.js'
import { applyPlugin } from 'jspdf-autotable'
applyPlugin(jsPDF)
Я использую «jspdf»: «^ 2.3.1», «jspdf-autotable»: «^ 3.5.20», надеюсь, это вам поможет!
Я получал ту же проблему, и этот работает для меня. я написал это в импорте как
import * as jsPDF from 'jspdf';
import 'jspdf-autotable';
И в функции я объявил это как
const doc = new jsPDF();
Это сработало для меня:
import jsPDF from 'jspdf';
require('jspdf-autotable');
const tableColumns = ["column1", "Column2", "Column3"];
const tableRows = [[1,2,3],[a,b,c],[X,Y,Z]];
const doc = new jsPDF();
doc.autoTable(tableColumns, tableRows, { startY: 20 });
doc.text("Closed tickets within the last one month.", 14, 15);
doc.save('dataModel.pdf');
У меня была та же проблема сегодня при использовании https://github.com/SimulatedGREG/electron-vue. я решил это, добавив 'jspdf' и 'jspdf-autotable' в массив белых списков в пути к проекту /.vscode
let whiteListedModules = [
'vue',
'vue-sweetalert2',
'element-ui',
'vue-avatar-component',
'vue-router',
'vue-json-excel',
'vuex',
'vue-chart-js',
'pluralize',
'Print',
'jspdf',
"jspdf-autotable"
]
Вы можете импортировать jsPDF как обычно:
import jsPDF from 'jspdf';
а затем для autoTable:
require('jspdf-autotable');
добавьте это ^ внутри функции
import jsPDF from 'jspdf';
import autoTable from 'jspdf-autotable';
const doc = new jsPDF();
autoTable(doc, { html: '#my-table' });
doc.save('table.pdf');`
это сработало для меня