Я новичок в PHP и AngularJS.
У меня есть веб-страница, которая общается с веб-серверами с помощью PHP — AJAX. Он запрашивает базу данных и отображает результат (большую таблицу) в заполнителе html.
Я хочу напечатать содержимое этой таблицы в загружаемом PDF-файле, когда пользователь нажимает кнопку.
Я хочу использовать PDFmake, и теперь он хорошо работает для целей тестирования, но как я могу передать это содержимое моей таблицы в приложение AngularJS?
Может быть, я должен передать идентификатор таблицы в контент docDefinition? В таком случае я не знаю, как это сделать.
Примечание. Возможно, мой подход не является корректным, потому что мне приходится передавать PHP в разные задачи и использовать AngularJS для запросов к базе данных, но сейчас я хочу использовать этот подход.
Благодарю вас
Я предлагаю вам использовать угловой сервис (как объяснено в документы
)
var bigTableApp = angular.module('bigTable',[])
bigTableApp.factory('BigTableSrv', ['$resource',
function($resource) {
return $resource('URL_to_php_backend', {}, {
query: {
method: 'GET',
params: {param1: 'value 1', param2: 'value 2'},
isArray: true
}
});
}
]);
Затем вы можете использовать его в контроллере для извлечения данных из серверной части и построения структуры таблицы в PDFmake. формат таблицы:
bigTableApp.controller('BigTableController', ['$scope', 'BigTableSrv',
function BigTableController($scope, BigTableSrv) {
$scope.bigTable = BigTableSrv.query();
$scope.pdfMakeTable = {
// array of column widths, expand as needed
widths: [10, *, 130],
body: []
};
$scope.printTable = function() {
pdfMakeTable.body = $scope.bigTable.map(el => {
// process each element of your "big table" to one line of the
// pdfMake table, size of return array must match that of the widths array
return [el.prop1, el.prop2, el.prop3]
});
// create the pdfMake document
let docDefinition = {
content: [ pdfMakeTable ]
}
// print your pdf
pdfMake.creatPdf(docDefinition).print()
}
}
]);
Других решений пока нет …