Angular 8, использование проблем импорта / использования jspdf и autotable-jspdf - PullRequest
0 голосов
/ 26 сентября 2019

Угловой 8 - JSPDF & JSPDF-AutoTable

Мне нужно экспортировать / сгенерировать одну pdf-базу на одну сетку в html, но необходимо внести некоторые изменения в DOM с помощью css, убрать некоторую кнопку переключенияи изменить заголовок и т. д., и во всех найденных мной решениях есть несколько щелчков, например, простой window.print ().Я пробовал также pdfmake-wrapper и ngx-export-as, но у них нет волшебства autoTable ... и последнее, что изменяются dom, игнорируется, за исключением случаев, когда я использую манипуляцию Renderer2 DOM ... , ноМне нужно решение с внесением изменений в класс CSS и отсутствием щелчка, поэтому я возвращаю JSPDF.

Я установил jspdf и jspdf-autotable пакеты с помощью npm.

"dependencies": {
    ...
    "jspdf": "^1.5.3",
    "jspdf-autotable": "^3.2.4",
    ...
}

В файл angular-cli.json я включил сценарии:

"scripts": [ 
        "../node_modules/jspdf/dist/jspdf.min.js",
        "../node_modules/jspdf-autotable/dist/jspdf.plugin.autotable.js"
      ],

В мой файл component.ts я импортировал эти файлы следующим образом:

 import * as jsPDF from 'jspdf'; 
 import * as autoTable from 'jspdf-autotable';

Я также пробовал эти строки для импорта jspdf-autotable

import * as jsPDF from 'jspdf'; 
import 'jspdf-autotable';

Я также пробовал другую комбинацию.

import jsPDF = require('jspdf');
import { autoTable as AutoTable } from 'jspdf-autotable';

Но ничего не работает.

// В моем файле component.ts я использую следующий пример кода:

let columns = ["ID", "Name", "Age", "City"];
var data = [
    [1, "Jonatan", 25, "Gothenburg"],
    [2, "Simon", 23, "Gothenburg"],
    [3, "Hanna", 21, "Stockholm"]
];
const doc = new jsPDF(); // or let doc = new jsPDF.default();
doc.autoTable(columns, data);
doc.save("filename");

Но теперь, когда я запускаю команду узла, чтобы запустить приложение, затем во время отладки,Я получаю сообщения об ошибках:

a - Свойство 'autoTable' не существует для типа 'jsPDF'.

b - Ошибка TS2339: Свойство 'default' не существует для типа 'typeofjsPDF '.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 26 сентября 2019

Используйте этот пример

var generateData = function (amount) {
    var result = [];
    var data =
    {
        coin: "100",
        game_group: "GameGroup",
        game_name: "XPTO2",
        game_version: "25",
        machine: "20485861",
        vlt: "0"
    };
    for (var i = 0; i < amount; i += 1) {
        data.id = (i + 1).toString();
        result.push(Object.assign({}, data));
    }
    return result;
};

function createHeaders(keys) {
    var result = [];
    for (var i = 0; i < keys.length; i += 1) {
        result.push({
        'id' : keys[i],
            'name': keys[i],
            'prompt': keys[i],
            'width': 65,
            'align': 'center',
            'padding': 0
        });
    }
    return result;
}

Вывод: enter image description here

0 голосов
/ 26 сентября 2019

Я думаю, что вы хотели бы сделать что-то вроде:

const jsPDF = require('jspdf');

или

import jsPDF from 'jspdf';

Это предполагает, что ваши node_modules настроены как часть вашего пути, ноесли вы используете CLI, вам должно быть хорошо.

...