como exportar dados html para pdf em angularjs

Este é o meu código html onde eu processei todos os dados json do arquivo.

TypeError: Não é possível converter indefinido ou nulo para object em Function.keys () em DocMeasure.measureNode (pdfmake.js: 15647) em DocMeasure.measureDocument (pdfmake.js: 15635) em LayoutBuilder.tryLayoutDocument (pdfmake.js: 15088) em LayoutBuilder .layoutDocument (pdfmake.js: 15076) em PdfPrinter.createPdfKitDocument (pdfmake.js: 2130) em Document._createDoc (pdfmake.js: 82) em Document.getDataUrl (pdfmake.js: 177) em Document.open (pdfmake.js : 109) em L. $ scope.openPdf (app.js: 29)

            
firstName lastName Gender Mobile
{{emp.firstName}} {{emp.lastName}} {{emp.gender}} {{emp.mobile}}

Você pode usar pdfmake , para exportar o pdf

DEMO

 var app = angular.module("app", []); app.controller("listController", ["$scope", function($scope) { $scope.data= [{"agence":"CTM","secteur":"Safi","statutImp":"operationnel"}]; $scope.export = function(){ html2canvas(document.getElementById('exportthis'), { onrendered: function (canvas) { var data = canvas.toDataURL(); var docDefinition = { content: [{ image: data, width: 500, }] }; pdfMake.createPdf(docDefinition).download("test.pdf"); } }); } } ]); 
          
{{data}}

Aqui está o código para exportar a tabela HTML para EXcel, CSV, Pdf, Doc.

https://plnkr.co/edit/HmKBjYmJNjp8mPzIlg52?p=preview

   

Export HTML Table to Excel, Pdf, CSV and Doc

Employee ID Last Name First Name Salary
{{item.EmployeeID}} {{item.LastName}} {{item.FirstName}} {{item.Salary}}

Export CSV

Export Excel

Export Doc

Export Pdf

Eu usei isso:

https://github.com/MrRio/jsPDF

e então você pode usar em seu controlador assim:

  $scope.HTMLclick = function () { var pdf = new jsPDF(); pdf.addHTML(($("#pdfContent")[0]), { pagesplit: true }, function () { pdf.save('myfilename' + '.pdf'); }); }; 

PARA ANGULAR

PASSO 1: npm install jspdf-autotable

ou em index.html no add:

PASSO 2: em Angular-cli.json adicione:

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

ETAPA 3: app.component.ts ou qualquer outro componente abaixo das importações

import {Component} de '@ angular / core';

 declare var jsPDF: any; 

PASSO 4: Para testar o seu componente:

 export class AppComponent { title = 'app works!'; public columns: string[] = ['Name', 'Phone', 'Whatsapp']; public data: string[] = ['Diego Venâncio', '79999565796', '79912345678']; constructor() { var doc = new jsPDF('p', 'pt'); doc.autoTable(columns, data); doc.save("table.pdf"); } 

}

mais detalhes?