Загрузить PDF из php rest api

611
04 сентября 2017, 07:16

php rest api генерирует PDF в виде blob, как получить файл на фронтенде без сохранения на сервере. Мое решение

public function getPdf($request)
{
    //генерируем PDF
    return array('file' => base64_encode($res));
}

Фронтенд (angular2)

getPdf(data) {
return this.api.post('/pdf', data)
  .map(res => atob(res.file))
  .subscribe(
    data => {
      FileSaver.saveAs(new Blob([data], {type: 'application/pdf'}), "BusinessCard.pdf");
    },
    err => console.error(err)
  );}

Похоже проблема с кодировкой на фронте, пробовал вместо atob использовать решение с MDN, base64js... выдает ошибку URIError: URI malformed

Если декодировать вручную через https://www.base64decode.org/, с настройкой UTF-8 то все получается правильно

Answer 1

Попробуйте base64 urlsafe decode atob(res.file.replace(/_/g, '/').replace(/-/g, '+'))

READ ALSO
Wordpress. Вставка html кода в поле виджета

Wordpress. Вставка html кода в поле виджета

Решил написать свой виджет для wordpress, но столкнулся с проблемойСтандартные поля типа text/textarea при сохранении удаляют все html тэги

550
SMTP почта с Phpmailer

SMTP почта с Phpmailer

session_cache_limiter('nocache'); header('Expires: 'gmdate('r', 0));

685
Symfony 3, join двух таблиц

Symfony 3, join двух таблиц

Здравствуйте! Мне нужно соединить две таблици и посчитать при этом колличество сообщений у каждого пользователя

552
Вставка подстроки в строку

Вставка подстроки в строку

Обзавелся задачкой, нужно получить имя пользователя и затем его вставить в строкуВопрос: как это сделать?

581