Строка base64 в PDF скачать - PullRequest
       0

Строка base64 в PDF скачать

0 голосов
/ 19 сентября 2019

У меня проблема с загрузкой PDF в приложении SAPUI5.Проблема заключается в получении строки base64 из серверной системы, но не в состоянии преобразовать ее и отобразить в формате PDF.

Я могу преобразовать base64 и загрузить также, но только в небольшом размере.Не удается загрузить файл PDF большего размера, но его загрузка не удалась.

Пожалуйста, помогите мне

var data =" JVBERi0xLjQNJeLjz9MNCjc1MDEgMCBvYmogPDwvTGluZWFyaXplZCAxL0wgOTM2NDM1Mi9PIDc1MDMvRSAxMjE3ODgvTiA1MjIvVCA5MjE0MjgzL0ggWyA2..";

var uri = 'data:application/pdf;base64,' + atob(data);
var link = document.createElement("a");
link.href = uri;
link.style = "visibility:hidden";
link.download = object.FileName;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);

Ответы [ 3 ]

0 голосов
/ 19 сентября 2019

Сохранение данных в виде большого двоичного объекта и установка ссылки на скачивание для получения данных из блога может решить вашу проблему с большими файлами.Наиболее эффективным способом в этом механизме является получение данных с вашего сервера в двоичном формате вместо Base64.Он работает и с base64, но в сценарии BLOB-объектов это просто перерасход ресурса.

var data = Uint8Array.from(atob(base64_string), c => c.charCodeAt(0));
var blob = new Blob([data], {type: "octet/stream"});

var link = document.createElement("a");
link.href = window.URL.createObjectURL(blob);
...
...
0 голосов
/ 19 сентября 2019

Здесь - это запись в блоге sap, решающая вашу проблему.

TLDR:

var base64EncodedPDF = "JVBERi0xLjcNCiW..."; // the encoded string
var decodedPdfContent = atob(base64EncodedPDF);
var byteArray = new Uint8Array(decodedPdfContent.length)
for(var i=0; i<decodedPdfContent.length; i++){
    byteArray[i] = decodedPdfContent.charCodeAt(i);
}
var blob = new Blob([byteArray.buffer], { type: 'application/pdf' });
var _pdfurl = URL.createObjectURL(blob);

this._PDFViewer.setSource(_pdfurl);
0 голосов
/ 19 сентября 2019

Согласно вашему текущему решению, гиперссылка будет создана с помощью href содержит data:application/pdf;base64,' + base64Data.При нажатии на гиперссылку будет открыт полный URL-адрес в новой вкладке браузера, которая заставит браузер загрузить файл PFD.

Если данные base64 являются объемными, браузеру потребуется время для загрузки PDF.Иногда происходит сбой браузера ИЛИ приводит к ошибке загрузка не удалась , поскольку загрузка занимает слишком много времени.

Альтернативные опции

  • Используя метод GET_STEAM, вы можете скачать pdf только из бэкэнда.
  • Используя плагины загрузки, такие как downloadjs, FileSaver.js , StreamSaver.js .

По вашему требованию вы можете получить различные доступные плагины для загрузки файлов с использованием клиентского JavaScript

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...