我的问题与在Chrome浏览器中显示base64编码的PDF文件数据有关。这些PDF文件不是静态物理文件,而是转换为base64编码数据的流。它是一个使用Node.js后端的单页面应用程序。PDF文件以模态弹出框的形式显示,而不是在新标签页或窗口中打开。下面是负责显示base64编码PDF数据的代码:
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 MB的文件,但不适用于更大的文件。我想要显示的一些文件大小为5 MB甚至10 MB。我该如何解决这个问题?这里有两个相关主题的Stack Overflow问题(链接)和(链接),但都不适用于我的情况。
我无法使用HTML“嵌入”和“iframe”标签,因为它们需要一个物理文件作为其“src”属性,但我没有实际的PDF文件,而是内存数据。