2016-02-02 7 views
0

Я хочу знать, как я могу экспортировать pdf-файл из angularjs. Я экспортировал файл excel, и он работает нормально.Экспорт таблицы html в pdf с использованием blob

Ниже код первенствует

view.html

<button ng-click="vm.exportData()" class="btn btn-info"><i class="glyphicon glyphicon-download"></i>&nbsp; Download as pdf</button> 

controller.js

$scope.exportData = function() { 
     debugger; 
     var blob = new Blob([document.getElementById('export').innerHTML], { 
      type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8" 
     }); 
     window.saveAs(blob, "Report.xls"); 
    }, 

как сделать type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8" < ====== это LineIn PDF?

Заранее спасибо :)

+0

есть у попытался '«типа»:«приложение/pdf'' – CodingNinja

+0

Подобно тому, как @CodingNinja сказал, „типа“: „приложение/PDF“ должен быть работа –

+0

Да ... я пытался это, файл загружается, но дает ошибку «Не удалось загрузить PDF-контент», когда я пытаюсь открыть его. –

ответ

0

Обновление:

Вы можете извлечь содержимое PDF в виде ArrayBuffer множества responseType:

$http({ 
       url: url, 
       method: method, 
       headers: { 
        'Content-type': _type 
       }, 
       responseType: 'arraybuffer' //set response type 
      }) 

Примечание:

типа -> «приложение/pdf '

fileContent -> должен быть ArrayBuffer

downloadFile(filename, 'application/pdf', fileContent); 

function downloadFile(filename, type, fileContent) { 
    var blob = new Blob([fileContent], {type: type}); 
    if (navigator.msSaveBlob) { // IE 10+ 
     navigator.msSaveBlob(blob, filename); 
    } else { 
     var link = document.createElement('a'); 
     if (link.download !== undefined) { // feature detection 
      // Browsers that support HTML5 download attribute 
      var url = URL.createObjectURL(blob); 
      link.setAttribute('href', url); 
      link.setAttribute('download', filename); 
      link.style.visibility = 'hidden'; 
      document.body.appendChild(link); 
      link.click(); 
      document.body.removeChild(link); 
     } 
    } 
} 
+0

Ну, не знаю, где я должен использовать тип ответа как «буфер массива», потому что я определил эту функцию нажатием кнопки внутри своего контроллера и не вызывать его через какую-либо http-ссылку. –

+0

Если вы не являетесь содержимым двоичных данных с сервера, вы можете проверить этот lib out: https: //code.google.com/archive/p/jspdf –

Смежные вопросы