base64怎样转pdf前端

下面我将为你详细讲解 base64 怎样转 PDF 前端的完整攻略。

准备工作

首先,要将 base64 编码的字符串转为 Blob 对象,然后使用 URL.createObjectURL 方法将 Blob 对象转换为 URL。接下来,只需要创建一个隐藏的 iframe 标签,并将 URL 赋值给 iframe 的 src 属性即可。

步骤

  1. 将 base64 编码的字符串转为 Blob 对象

代码示例:

var base64Str = '...'; // 这里是 base64 字符串
var blob = base64toBlob(base64Str);

// 定义 base64toBlob 方法
function base64toBlob(base64Str) {
  var arr = base64Str.split(','),
      mime = arr[0].match(/:(.*?);/)[1],
      bstr = atob(arr[1]),
      n = bstr.length,
      u8arr = new Uint8Array(n);
  while (n--) {
      u8arr[n] = bstr.charCodeAt(n);
  }
  return new Blob([u8arr], {type:mime});
}
  1. 将 Blob 对象转换为 URL

代码示例:

var url = URL.createObjectURL(blob);
  1. 创建 iframe 标签,并将 URL 赋值给 iframe 的 src 属性

代码示例:

var iframe = document.createElement('iframe');
iframe.style.display = 'none';
iframe.src = url;
document.body.appendChild(iframe);

4.(可选)支持文件下载

如果需要让用户能够下载文件,可以通过 a 标签的 download 属性来实现。下载链接的 href 应该设置为 URL,并为 a 标签设置 download 属性,如下所示:

代码示例:

var a = document.createElement('a');
a.href = url;
a.download = 'example.pdf';
a.click();

完整代码

var base64Str = '...'; // 这里是 base64 字符串
var blob = base64toBlob(base64Str);
var url = URL.createObjectURL(blob);

var iframe = document.createElement('iframe');
iframe.style.display = 'none';
iframe.src = url;
document.body.appendChild(iframe);

var a = document.createElement('a');
a.href = url;
a.download = 'example.pdf';
a.click();

function base64toBlob(base64Str) {
  var arr = base64Str.split(','),
      mime = arr[0].match(/:(.*?);/)[1],
      bstr = atob(arr[1]),
      n = bstr.length,
      u8arr = new Uint8Array(n);
  while (n--) {
      u8arr[n] = bstr.charCodeAt(n);
  }
  return new Blob([u8arr], {type:mime});
}

其中,example.pdf 是要下载的文件名。

示例说明

下面提供两个示例用来说明 base64 转 PDF 的过程:

示例1:

假设有一个 base64 字符串,其内容是一个 PDF 文件,你想要在网页中显示这个 PDF 文件。

var base64Str = '...'; // 这里是 base64 字符串
var blob = base64toBlob(base64Str);
var url = URL.createObjectURL(blob);

var iframe = document.createElement('iframe');
iframe.style.display = 'block';
iframe.style.width = '100%';
iframe.style.height = '100%';
iframe.src = url;
document.body.appendChild(iframe);

function base64toBlob(base64Str) {
  var arr = base64Str.split(','),
      mime = arr[0].match(/:(.*?);/)[1],
      bstr = atob(arr[1]),
      n = bstr.length,
      u8arr = new Uint8Array(n);
  while (n--) {
      u8arr[n] = bstr.charCodeAt(n);
  }
  return new Blob([u8arr], {type:mime});
}

在上面的代码中,我们首先将 base64 字符串转为 Blob 对象,然后使用 URL.createObjectURL 方法将 Blob 对象转为 URL。接着,我们创建一个 iframe 标签,并将 URL 赋值给 iframe 的 src 属性,从而将 PDF 文件显示在网页中。

示例2:

假设有一个 base64 字符串,其内容是一个 PDF 文件,你想要让用户点击一个按钮下载这个 PDF 文件。

var base64Str = '...'; // 这里是 base64 字符串
var blob = base64toBlob(base64Str);
var url = URL.createObjectURL(blob);

var a = document.createElement('a');
a.href = url;
a.download = 'example.pdf';
a.click();

function base64toBlob(base64Str) {
  var arr = base64Str.split(','),
      mime = arr[0].match(/:(.*?);/)[1],
      bstr = atob(arr[1]),
      n = bstr.length,
      u8arr = new Uint8Array(n);
  while (n--) {
      u8arr[n] = bstr.charCodeAt(n);
  }
  return new Blob([u8arr], {type:mime});
}

在上面的代码中,我们首先将 base64 字符串转为 Blob 对象,然后使用 URL.createObjectURL 方法将 Blob 对象转为 URL。接着,我们创建一个 a 标签,并将 URL 赋值给 a 的 href 属性,将文件名赋值给 a 的 download 属性。最后,我们调用 a 的 click 方法触发下载操作。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:base64怎样转pdf前端 - Python技术站

(0)
上一篇 2023年4月16日
下一篇 2023年4月16日

相关文章

  • 手机QQ6.0体验版下载地址 手机QQ6.0苹果安卓用户报名地址

    手机QQ6.0体验版下载地址 手机QQ6.0体验版是一款最新的QQ版本,提供了更多的功能和改进。以下是获取手机QQ6.0体验版的详细攻略。 步骤一:报名参与体验 首先,你需要报名参与手机QQ6.0体验版的测试。请按照以下步骤进行: 打开手机QQ官方网站或者QQ官方应用。 在首页或者菜单中找到“体验版”或者“测试版”选项。 点击进入体验版页面。 在页面中找到“…

    other 2023年8月4日
    00
  • 暗黑破坏神4蛮子装备怎搭配 野蛮人装备词缀优先级个人向推荐

    暗黑破坏神4蛮子装备怎搭配 野蛮人装备词缀优先级个人向推荐攻略 目录 介绍 野蛮人装备搭配原则 野蛮人装备词缀优先级 示例说明 总结 1. 介绍 在暗黑破坏神4中,野蛮人是一个以力量为核心属性的职业,擅长近战攻击和肉搏战斗。蛮子装备的搭配对于野蛮人的战斗力和生存能力起着至关重要的作用。本攻略将详细讲解蛮子装备的搭配原则和词缀优先级建议,以帮助玩家更好地提升野…

    other 2023年6月28日
    00
  • 命令行清除Redis缓存的实现

    下面是关于“命令行清除Redis缓存的实现”的完整攻略,具体步骤如下: 1. 连接Redis 首先,我们需要连接到Redis服务器。我们可以使用redis-cli命令。在命令行窗口中输入以下命令: redis-cli 如果您需要带有密码的连接,可以使用以下命令: redis-cli -a password 其中,password是您设置的密码。 2. 查看当…

    other 2023年6月26日
    00
  • delphi2010安装及调试

    以下是“Delphi2010安装及调试”的完整攻略: Delphi2010安装及调试 Delphi是一款流行的集成开发环境(IDE),用于开发Windows应用程序。在本攻略中,我们将介绍如何安装Delphi2010,并进行调试。 步骤1:下载Delphi2010安装程序 在开始安装Delphi2010之前,您需要下载Delphi2010安装程序。您可以Em…

    other 2023年5月7日
    00
  • openvpn参数详解

    以下是“OpenVPN参数详解”的完整攻略,过程中包含两个示例说明的标准Markdown格式文本: OpenVPN参数详解 OpenVPN是一种常用的开源VPN软件,可以在多个平上使用。以下是OpenVPN常用参数的详细说明: 常用参数 –config 指定OpenVPN配置文件的路径。例如: openvpn –config /etc/openvpn/c…

    other 2023年5月10日
    00
  • 小米4usb调试怎么打开?miui6进入开发者模式

    下面是“小米4usb调试怎么打开?miui6进入开发者模式”的完整攻略: 打开小米4的USB调试: 步骤一:开启MIUI开发者模式 打开手机设置 向下滑动至底部,点击“关于手机”(有时候叫“关于本机”) 找到“MIUI版本”(MIUI 6及以上版本),然后点击7次 弹出通知,提示“已开启开发者选项” 示例1:如果你的MIUI版本是7及以上,请注意如下操作。在…

    other 2023年6月26日
    00
  • 三分钟快速解析GraphQL基本工作思路!

    下面是关于三分钟快速解析GraphQL基本工作思路的完整攻略,包括GraphQL的基本概念、工作原理和两个示例等方面。 GraphQL的基本概念 GraphQL是一种用于API开发的查询语言和运行时环境。它允许客户端指定需要的数据,而不是像RESTful API那样返回固定的数据结构。GraphQL的核心概念包括类型系统、查询语言和执行引擎等。 GraphQ…

    other 2023年5月6日
    00
  • Hooks封装与使用示例详解

    下面是“Hooks封装与使用示例详解”的完整攻略。 1. Hooks简介 Hooks是React 16.8版本新增的一项特性,用于解决组件之间状态复用等问题。常见的Hooks有useState、useEffect、useContext等。 2. Hooks封装 Hooks的使用需要遵循一定的封装规则,方便组件复用。下面是Hooks封装的示例,以useFetc…

    other 2023年6月25日
    00
合作推广
合作推广
分享本页
返回顶部