使用javascript打开base64编码的pdf文件。文件大小大于2 MB的问题

使用javascript打开base64编码的pdf文件。文件大小大于2 MB的问题,javascript,Javascript,我使用下面的代码使用javascript打开base64编码的pdf文件。它适用于1MB以下的小型pdf文件。但是如果文件大小大于2MB,它就不起作用。请让我知道,如果你有一个类似的场景工作代码 var base64 = "base64 content"; let pdfWindow = window.open(""); pdfWindow.document.write("<iframe width='100%' height='100%' src='data:application/pd

我使用下面的代码使用javascript打开base64编码的pdf文件。它适用于1MB以下的小型pdf文件。但是如果文件大小大于2MB,它就不起作用。请让我知道,如果你有一个类似的场景工作代码

var base64 = "base64 content";
let pdfWindow = window.open("");
pdfWindow.document.write("<iframe width='100%' height='100%' src='data:application/pdf;base64, " + base64 + "'></iframe>");
var base64=“base64内容”;
让pdfWindow=window.open(“”);
pdfWindow.document.write(“”);

大多数流行浏览器的URL限制通常为65535个字符(~64 KB),因此这是对URL中字符数的限制。您通常希望这个数字低于2000(2kb),这样您的站点就可以在大多数浏览器上运行(有些情况下是遗留的)

见:

长度限制

虽然Firefox支持长度基本上不受限制的
数据
URL,但浏览器不需要支持任何特定的最大长度
数据
。例如,Opera 11浏览器将URL长度限制为65535个字符,这将
数据
URL限制为65529个字符(如果使用纯
数据:
,而不指定MIME类型,则65529个字符是编码数据的长度,而不是源)

另见

您可以尝试将文件读取/存储为Blob,然后使用下载或打开pdf文件

对于数据URI加载的pdf文档大小,Chrome的pdf reader插件和Mozilla的pdf.js(Firefox使用)似乎都有限制

请注意,除了这些插件/脚本(pdf.js甚至只是使选项卡崩溃)之外,这个限制并不是由任何其他因素决定的,浏览器在许多地方都支持更大的数据URL,例如
constblob=base64ToBlob(base64,'application/pdf');
const url=url.createObjectURL(blob);
const pdfWindow=window.open(“”);
pdfWindow.document.write(“”);
函数base64ToBlob(base64,type=“应用程序/八位字节流”){
const binStr=atob(base64);
const len=binStr.length;
const arr=新的uint8阵列(len);
for(设i=0;i


但请注意,如果API将pdf直接作为Blob发送,或者您可以直接指向资源的URL,则效率会更高。

为什么首先将pdf编码为base64?欢迎使用。“它不工作”不是一个很好的描述这里发生了什么为什么你不告诉我们到底发生了什么?一个2MB的字符串会有点笨重,但是你切这个?base64字符串实际上来自哪里?是否可以将数据保留为二进制格式?我们通过webservice以字符串格式从不同的系统获取base64编码的pdf文件。现在,在我们的系统中,我们需要将其转换回pdf格式,并在browser/acrobat中打开它。如果pdf文件的大小小于1MB,那么我在这里提到的代码工作得很好,超过1MB,它将打开一个没有任何内容的空白窗口。如果大小超过1MB,Javascrip中是否有打开base64编码pdf文件的限制?我们通过webservice以字符串格式从不同系统获取base64编码pdf文件(无URL,整个文件)。现在,在我们的系统中,我们需要将其转换回pdf格式,并在browser/acrobat中打开它。如果pdf文件的大小小于1MB,那么我在这里提到的代码工作得很好,超过1MB,它将打开一个没有任何内容的空白窗口。如果大小超过1MB,Javascrip中是否有打开base64编码pdf文件的限制?