通过 Javascript 从 API 下载 PDF

2024-01-06

我正在使用 vue.js 并找到了一些如何实现这一点的好例子。

目前我的 API 返回一个 test-pdf:

    $snappy = App::make('snappy.pdf');

    $html = '<h1>Bill</h1><p>You owe me money, dude.</p>';

    return Response(
        $snappy->getOutputFromHtml($html),
        200,
        array(
            'Content-Type'          => 'application/pdf',
            'Content-Disposition'   => 'attachment; filename="file.pdf"'
        )
    );

通过 Postman 下载内容效果很好。

我这样管理 JS 部分:

  export const InvoiceService = {
  get(slug) {
    return ApiService.get("invoice", slug);
  },
  downloadPdf(slug) {
    return ApiService.get(`pdf/invoice`, slug, {
      responseType: 'arraybuffer'
    });
  }
};

and:

InvoiceService.downloadPdf(invoiceId)
        .then(({ data }) => {
          let blob = new Blob([data], {
            type: "application/pdf"
          });
          FileSaver.saveAs(blob, "invoice.pdf");
        })
        .catch(error => {
          throw new Error(error);
        });

The download works fine but the file downloaded via js seems to be corruped (PDF wont show): enter image description here

绿色标记的文本是工作 pdf 的内容。

我认为字符集有些混乱,但我已经没有想法了:(

希望有人能给我一个提示 - 这让我发疯:)

最好的问候 - 亚历克斯


您可以将 Axios 与responseType: 'blob'

// Function that downloads PDF
function download(data) {
  const url = URL.createObjectURL(data);
  const a = document.createElement('a');
  a.download = 'test.pdf';
  a.href = url;
  a.target = '_self';

  a.click();

  setTimeout(function () {
    // For Firefox it is necessary to delay revoking the ObjectURL
    a.remove();
    URL.revokeObjectURL(url);
  }, 100);
}

// Get data from the API
const response = await axios.get('URL', {
   responseType: 'blob', // THIS is very important, because we need Blob object in order to download PDF
});

// Invoke download function
download(response);

/////////////// Your response.data will look like this:response.data

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 Javascript 从 API 下载 PDF 的相关文章

  • 重命名从 HTML5 画布创建的图像

    我制作了一个简单的画布并将其另存为图像 我在这段代码的帮助下做到了这一点 var canvas document getElementById mycanvas var img canvas toDataURL image png 并弹出创
  • 如何检测我正在 eval() 调用中?

    是否存在字符串s这样 new Function s and eval s 表现不同 我正在尝试 检测 字符串的评估方式 检查是否有arguments目的 如果它存在 那么您就在该函数中 如果没有 那就已经是evaled 请注意 您必须将支票
  • 如何使用 JavaScript 访问 runat="server" ASP 元素?

    似乎每个人都在这样做 在代码帖子等中 但我不知道如何 每当我尝试使用 JavaScript 操作 asp 元素时 我都会得到一个 element is null or document is undefined 等等错误 JavaScrip
  • 如何限制注册用户尝试投票两次[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我对 php 编码和网站设计非常陌生 我正在尝试开发一个在线投票系统 只允许注册用户投票 已完成所有操作并且工作正常 但我需要的帮助是
  • 无法设置未定义的属性“显示”

    我正在编写脚本来隐藏 显示菜单 但遇到了一些麻烦 function displayMenu var classMenu event target className classMenu Menu document getElementsBy
  • underscore.js 中断路器的重要性是什么? [复制]

    这个问题在这里已经有答案了 In 下划线 js http underscorejs org docs underscore html 有这样的代码 if iterator call context obj keys i keys i obj
  • HTML 5 视频:使用 javascript 播放多个“剪辑”

    我在 HTML 视频和 JavaScript 方面遇到问题 因此编写了一些简单的代码来演示 有一个视频包含三个 剪辑 全长五秒 显然 在现实世界中 它们要长得多 一个在 25 30 秒 一个在 55 60 秒 最后一个在 85 90 秒 我
  • 将图像嵌入 Chrome 扩展程序

    我正在构建一个 Google Chrome 扩展 它将 HTML 注入到真实的网页中 注入还包含图像 现在我想知道如何在扩展中引用图像 到目前为止 我只能在服务器上使用它们来引用它们http example com myimage png
  • 是否可以使用 JavaScript 导入 HTML?

    我有一些具有相同页脚的 html 页面 使用 JavaScript 并且仅使用 JavaScript 我可以在其中导入另一个 html 页面吗 下面介绍了如何仅使用 JavaScript 向页面添加页脚 2022 代码 使用fetch ht
  • fs.statSync 与缓冲区“错误:路径必须是没有空字节的字符串”

    我已经读入这样的文件缓冲区 let imageBuffer try imageBuffer fs readFileSync some path to image jpg catch e console log error reading i
  • 使用 jquery 选中和取消选中所有复选框

    我正在使用此脚本来选中和取消选中所有复选框 checkall click function var checked this data checked chkall find checkbox attr checked checked th
  • 在 JavaScript 中将长数字转换为缩写字符串,并有特殊的简短要求

    在 JavaScript 中 如何编写一个函数来转换给定的 编辑 正整数 数字 低于 1000 亿 转换为 3 个字母的缩写 其中 0 9 和 a z A Z 算作一个字母 但点 因为它在许多比例字体中很小 不会 并且会被忽略信函限制条款
  • 利用源映射的堆栈跟踪

    概述 浏览器控制台中的堆栈跟踪输出与调用 Error stack 时返回的跟踪不同 控制台堆栈跟踪似乎考虑了源映射 而 Error stack 堆栈跟踪则没有 控制台输出这是输出到控制台的默认堆栈跟踪 Uncaught TypeError
  • 如何以编程方式将 CSS 定义应用到整个页面?

    我确信该信息已经存在 但我找不到它 对不起 我想使用 JavaScript 创建 CSS 规则 并将它们应用到整个页面 就像它们位于文档头部的样式元素中一样 我不想通过生成 CSS 文本来实现 我想将规则保留为可以更改的实体 JavaScr
  • Angular 4 - “等待操作”的正确方法是什么?

    我遇到了一个简单的问题 有一个很奇怪的解决方案setTimeout 0 看看这个简单的代码 Component selector my app template div div
  • 如何强制传单更新地图?

    当我将 Leaflet 与 React 一起使用时 我遇到了问题 据我研究 问题是 Leaflet 也想控制 DOM 渲染 现在 国家将使用与后端信息相对应的特定颜色代码 范围为1 gt 100 正确着色 但是 它每分钟更新一次 更新后 国
  • 按 Chartjs 条形图的键对对象进行分组

    我正在尝试使用 Chart js 创建条形图 我在尝试根据每个用户的状态创建分组条形图时陷入困境 这是数据 statusId 0 firstName Joe status appealed count 1 statusId 0 firstN
  • 如何将react-native与php一起使用并获取返回数据始终为空

    我的回报始终为空 我似乎无法让它发挥作用 我如何将react native与php一起使用并获取json 任何人都可以帮忙吗 PHP myArray array myArray lat POST lat myArray lng POST l
  • 使用其他应用程序打开 pdf

    我正在应用程序中显示 pdf 文件 我想在 nag bar 上显示 打开方式 选项 显示 iPhone 上安装的可以打开相同 pdf 的应用程序 如果用户选择任何应用程序 例如 pdf 查看器 则应该使用 pdf 查看器应用程序打开 pdf
  • 如何在javascript中访问请求查询字符串参数?

    我见过许多利用 RegEx 的解决方案 坦率地说 这似乎有些可笑 因为 javascript 是如此通用 必须有一种更简单的方法来访问请求参数 有人可以给我演示一下吗 我发现了一个有用的方法网的深度 http www dotnetbull

随机推荐

  • Python:允许调用未明确定义的方法 ala __getattr__

    我正在尝试编写一个能够执行以下操作的 Python 类 c MyClass a c A a name for A Calls internally c create A a name for A b c B a name for B Cal
  • 通过 https 发送敏感数据的安全性如何?

    SSL 是否足够安全 可以在查询字符串中使用敏感数据 例如密码 是否有任何额外的选项可以实施 SSL 提供安全的传输级安全 客户端和服务器之间的任何人都不应能够读取该信息 But你应该改变在查询字符串中写入敏感数据的想法 它将显示在浏览器的
  • Raspberry Pi 上的 Python 无限循环内的用户输入在多次点击时会丢失输入

    我有一个非常基本的parrot用 Python 编写的脚本 仅提示用户输入并在无限循环内将其打印回来 Raspberry Pi 配有一个用于输入的 USB 条形码扫描仪 while True barcode raw input Scan b
  • 自定义 TableView 单元格内容在 ios 9 xcode 7 上不可见

    iOS 9 的升级似乎破坏了我所有的自定义 uitableviewcell 它们只显示具有正确高度的 tableviewcell 但其中的所有元素都丢失了 该布局在 iOS 8 和 iOS 7 设备上完美运行 Here s a screen
  • java中如何检查字符串是否为空?

    如何在java中检查字符串是否为空 我在用 stringname equalsignorecase null 但它不起作用 string null比较对象是否为空 string equals foo 比较该对象内部的值 string foo
  • Eclipse web.xml 引用文件错误

    我在 Eclipse 中导入了一个项目作为 Maven 项目 我将 Web 应用程序版本从 2 5 升级到 3 1 因为它是作为 Dynamic Web Module 3 1 导入的 现在我收到以下错误 通过文件 web xml 验证文件
  • 如何从 Vala 编译器生成 GIR 文件?

    我正在尝试使用 pygi 和 gobject introspection 创建到 vala 库的 python 绑定 但是 我在生成 GIR 文件时遇到问题 我计划随后将其编译为 typelib 文件 根据文档 valac 应该支持生成 G
  • Git-svn W: -empty_dir 警告。他们的意思是什么?

    在尝试使用标准布局使用 git svn 克隆现有 Subversion 存储库时 我得到了一堆W empty dir and W empty dir 警告 克隆的 git 存储库似乎正在工作 即我可以执行常规的 git 操作并提交到 SVN
  • 在 Eclipse 中将 Android 项目转换为“常规”Java 项目?

    我继承了一些最初作为 Android 项目的代码 但实际上只是供其他应用程序使用的 API 因此 构建 过程通常只生成一个 JAR 文件 我遇到的问题是 我的控制台中的 Android 构建工具出现错误 每次我对某些文件进行更改时 这些错误
  • Word2vec - 获取相似度排名

    鉴于我有一个 word2vec 模型 由 gensim 提供 我想获得单词之间的排名相似度 例如 假设我有 desk 这个词 与 desk 最相似的词是 表0 64 椅子0 61 预订 0 59 铅笔0 52 我想创建一个函数 f 桌子 书
  • Simulink - 每 30 秒输出 1,否则输出 0

    我需要一个需要每隔 30 秒或略超过 30 秒输出 1 的子系统 用matlab代码编写它应该像这样工作 function y fcn time uplinkTimeInterval codegen persistent lastTrigg
  • mod_rewrite 中的正则表达式匹配不以 this OR that 结尾的 URL

    这个的正则表达式是什么 匹配 if 字符串 NOT 结束于 php或结束于 html或包含 谢谢你 编辑 我需要NOT部分是因为该表达式将用于 Apache mod 重写 因为我无法更改的逻辑mod rewrite以避免NOT 编辑 我最初
  • 如何解决读取日历或发送邮件时 Microsoft Graph 返回“NoPermissionsInAccessToken”的问题

    在我们部门内 我们有一个经典 ASP 网站 该网站一直使用我们的公司 Google 帐户进行身份验证并将事件插入我们的 Google 日历 该组织刚刚从 Google 切换到 Office 365 我尝试将代码切换为使用 Outlook 但
  • 使用 addNA() 后查找 NA 值

    我有一个包含一堆分类变量的数据框 其中一些包含 NA 我使用addNA函数将它们转换为显式因子水平 当我尝试将它们视为 NA 时 我的问题就出现了 它们似乎没有注册 这是我的示例数据集并尝试 查找 NA df1 lt data frame
  • 在android上模拟鼠标输入

    想象一下 我有一个从蓝牙设备接收坐标的服务 现在我想在鼠标光标移动时显示它 我设法使用 toolType TOOL TYPE MOUSE 发送 MotionEvents 但我没有在屏幕上显示本机 Android 鼠标光标 我发送的事件如下所
  • 在应用程序中使用 exoplayer 库播放 YouTube 视频

    我已经使用 exoplayer 库在我的应用程序中播放视频 但我无法使用 exoplayer 播放 youtube 视频链接 我遇到以下异常 ExoPlayerImplInternal 源错误 com google android exop
  • Android Min SDK Version 和 Max SDK Version 设置

    我有一个应用程序 只想安装在 ICS 上 所以我设置了最小和最大 sdk 版本如下
  • 为什么未定义的常量的计算结果为 true?

    愚蠢的问题 我很惊讶这个咬了我 为什么 PHP 中未定义的常量的计算结果为 true 测试用例 上面的示例打印 嗯 非常感谢你的帮助 Try defined WHATEVER THIS ISNT DEFINED 当 PHP 遇到未定义的常量
  • Google 电子表格以三个单元格为条件

    我一直在尝试在我的电子表格上实现一个条件 基本上是一个包含三个条件单元格的检查表 其中包含 是 或 否 我想要实现的所有目标 使用 onEdit 是所有三个单元格都包含 是 输入下一列以及输入最终 是 的日期 我已经设法创建了其他运行良好的
  • 通过 Javascript 从 API 下载 PDF

    我正在使用 vue js 并找到了一些如何实现这一点的好例子 目前我的 API 返回一个 test pdf snappy App make snappy pdf html h1 Bill h1 p You owe me money dude