如何使用angularjs

时间:2018-02-05 11:14:22

标签: angularjs csv pdf

我想,当我点击按钮(CSV和PDF分开)时,它会自动下载CSV和PDF文件,格式正确。 这个CSV代码我想在代码中添加PDF

 $scope.downloadData = function() {
            var datasets = $scope.datasets.reverse();
            var file_name = $scope.m_id+ '.csv';
            var dataUrl = 'data:text/csv;charset=utf-8,';
            var json = [];
            if(datasets !== null) {
                for(idx = 0; idx < datasets.length; idx++) {
                    var dataset = datasets[idx].data;
                    var time = datasets[idx].timestamp;
                    time = $filter('date')(time, "dd/MMMM/yyyy-hh:mm a");
                    dataset.time = time;
                    json.push(dataset);
            }
                var fields = Object.keys(json[0]);
                var csv = json.map(
                            function(row) {
                                return fields.map(
                                    function(fieldName) {
                                        return '"' + (row[fieldName] || '') + '"';
                                    }
                                );
                            }
                        );

                csv.unshift(fields);

                var csv_str = csv.join('%0A');
                var downloadURL = dataUrl + csv_str;

                var saveAs = function(uri, filename) {
                    var link = document.createElement('a');
                    if (typeof link.download === 'string') {
                        document.body.appendChild(link); // Firefox requires the link to be in the body
                        link.download = filename;
                        link.href = uri;
                        link.target = "_blank";
                        link.click();
                        document.body.removeChild(link); // remove the link when done
                    } else {
                        location.replace(uri);
                    }
                };
                saveAs(downloadURL, file_name);
            } else {
               $scope.err_msg = 'Failed to get data. Try reloading the page.';
            }
        };

我尝试了一些我在互联网上找到的脚本,但它不起作用,有些有格式化问题而且保存下载。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

你应该使用这个非常棒的pdf / csv库或其他任何格式.. File Saver

这里是代码示例,使用FileSaver创建的服务

function download(api, file, contentType) {
    var d = $q.defer();
    $http({
        method: 'GET',
        url: api,
        responseType: 'arraybuffer',
        headers: {
            'Content-type': contentType
        }
    }).success(function(response) {
        var data = new Blob([response], {
            type: contentType+ ';charset=utf-8'
        });
        FileSaver.saveAs(data, file);
        d.resolve(response);
    }).error(function(response) {
        d.reject(response);
    });
    return d.promise;
}

file输入是文件名,您可以使用相同的服务并直接从控制器传递类型和文件名。

我们服务名称是homeService

for pdf call

homeservice.download('/api/download/whaever', 'export.pdf', 'application/pdf')