Проблема размера файла в Chrome для данных PDF в кодировке base64 в теге OBJECT - PullRequest
0 голосов
/ 17 октября 2018

Моя проблема связана с отображением данных PDF-файла в кодировке base64 в браузере Chrome.Файлы PDF не являются статическими физическими файлами, а представляют собой потоки, преобразованные в данные в кодировке base64.Это одностраничное приложение, использующее серверную часть Node.js.PDF-файл отображается в модальном всплывающем окне вместо новой вкладки или окна.Код, отвечающий за отображение данных PDF в кодировке base64, приведен ниже:

var objbuilder = '';
objbuilder += ('<object width="100%" height="100%" data="data:application/pdf;base64,');
objbuilder += (r.response);
objbuilder += ('" type="application/pdf" class="internal">');
objbuilder += ('</object>');
var html = '';
html += '<div class="modal fade in" id="linkedDoc" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">';
html += '<div class="modal-dialog">';
html += '<div class="modal-content" style="height:800px;width:600px;">';
html += '<div class="modal-body" style="height: 100%;" id = "linkedBody">';
html += '<div style="height:25px;clear:both;display:block;">';
html += '<a class="controls previous" href="javascript:void(0);" data-dismiss="modal" aria-hidden="true">Close</a>';
html += '</div></div></div></div></div>';
$('#linkedDoc').remove();
$('body').append(html);
$('#linkedBody').append(objbuilder);
$('.modal').modal({
    keyboard: false,
    show: true
});
$('.modal-dialog').draggable({
    handle: ".modal-header"
});
$('.modal-content').resizable();
$('#linkedBody').on('show.bs.modal', function () {
    $(this).find('.modal-body').css({
        'max-height': '100%',
        'max-width': '100%'
    });
});

Этот подход хорошо работает для файлов с размером файла почти 1 МБ, но не более того.Некоторые из файлов, которые я хочу отобразить, имеют размер 5 МБ, а некоторые даже 10 МБ.Как я могу исправить эту проблему. Это и Это ТАК вопросы, относящиеся к теме, но не характерные для моей ситуации.

Я не могу использовать HTML-теги embed и iframe, потому чтоим нужен физический файл в качестве атрибута 'src', но у меня нет физического файла PDF, а есть данные в памяти.

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Любой, кто сталкивался с этим вопросом в будущем, я исправил его, используя технику blob: URL. ЭТОТ Вопрос StackOverflow привел меня к решению.Поэтому вместо того, чтобы открывать PDF-файл в элементе HTML-объекта, я открыл его в новом окне, используя URL-адрес Blob.Этого нельзя достичь с помощью data: URL после обновления Chrome версии 60, в котором они заблокировали URL-адреса данных.

0 голосов
/ 17 октября 2018

Первый подход

Можете ли вы попробовать использовать тег iframe вместо тега объекта.

Второй подход

можете ли вы предоставить ссылку на PDF вместо фактических данных.

вы можете создать PDF-файл и сохранить его в каком-то месте, после чего предоставить ссылку на тег объекта.

В-третьих, вы также можете попробовать встроить тег

Может быть Решите вашу проблему:)

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