从服务器加载 pdf 并嵌入到 Vue 应用程序中

2024-01-11

我有一个返回 pdf 文件的 api。我试图在 vue.js 中显示它,并发现 vue-pdf 组件看起来应该可以完成这项工作。这是github上的项目 https://github.com/FranckFreiburger/vue-pdf

我能够调用 API 并获取二进制响应,但我无法将二进制数据转换为 vue-pdf 库可以显示的内容。

:src 属性的文档在这里 https://github.com/mozilla/pdf.js/blob/8ff1fbe7f819513e7d0023df961e3d223b35aefa/src/display/api.js#L117

我的 vue 代码如下,其中注释掉了一些失败的尝试。

<template>
  <pdf :src="pdfsrc"></pdf>
</template>

<script>
import pdf from "vue-pdf";
import axios from "axios";

export default {
  components: {
    pdf
  },
  data() {
    return {
      pdfsrc: null
    };
  },
  created() {
    return axios
      .get(`${process.env.VUE_APP_API_INTRANET}/pdf`, {
        responseType: "application/pdf"
      })
      .then(response => {
        console.log("Success", response);
       
       // 1
       // this.pdfsrc = new Blob([response.data]);
       
       // 2
       //this.pdfsrc = response.data;
       
       //3
       //   for (var i = 0; i < response.data.length; ++i) {
        //   this.pdfsrc.push(response.data.charCodeAt(i) & 0xff);
        //   }

        //4
        this.pdfsrc = new Uint8Array(response.data);
      })
      .catch(console.error); //
  }
};
</script>

我意识到,对于我的示例,我可以将 src 设置为 api 的 URL,但最终它需要添加授权标头并与 OAuth 调用链接,因此它需要是一个 api 调用。

我还想将 pdf 与来自另一个 api 调用的一些数据并排显示,因此使用动态创建加载数据的锚标记的技巧并 .click() 'ing 它对我不起作用。


首先改变你的预期responseType到“斑点”:

return axios.get(`${process.env.VUE_APP_API_INTRANET}/pdf`, {
  responseType: "blob"
})

还将二进制响应转换为Blob https://developer.mozilla.org/en-US/docs/Web/API/Blob然后生成一个对象网址 https://developer.mozilla.org/fr/docs/Web/API/URL/createObjectURL:

.then(response => {
  console.log("Success", response);
  const blob = new Blob([response.data]);
  const objectUrl = URL.createObjectURL(blob);
  this.pdfsrc = objectUrl;
})

不要忘记使用revokeObjectURL https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL完成后以避免内存泄漏。

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

从服务器加载 pdf 并嵌入到 Vue 应用程序中 的相关文章

  • Angular 4 过滤器搜索自定义管道

    所以我试图构建一个自定义管道来在 ngFor 循环中执行多个值的搜索过滤器 我花了几个小时寻找一个好的工作示例 其中大多数都是基于以前的版本 并且似乎不起作用 所以我正在构建管道并使用控制台为我提供值 但是 我似乎无法显示输入文本 以下是我
  • 类型错误:类扩展值未定义不是函数或 null

    尝试创建这些实体时出现以下错误 TypeError Class extends value undefined is not a function or null 我假设这与循环依赖有关 但是在使用表继承和一对多关系时应该如何避免这种情况
  • 如何判断一个网页是否支持jquery?

    确定网页是否启用 jquery 的最佳方法是什么 如果这是确定它的最佳方法 则使用 jquery 本身 if jQuery jquery object exists jQuery 并不神奇 它本质上只是一个大对象 您可以像检查任何其他对象一
  • Mapbox GL 中的 MaxBounds 和自定义非对称填充

    我有一个 Mapbox GL JS 应用程序 在地图上显示一些小部件 为了确保地图上的任何内容都不会被它们隐藏 我使用以下命令添加了一些填充map setPadding 这是一个不对称的 在我的例子中左边比右边大 它按预期工作 例如fitB
  • 如何在不阻止触摸启动的情况下防止“过度滚动历史导航”?

    我正在实现基于滑动的导航 但我在使用 Chrome 时遇到了麻烦 当页面向右拖动时 会触发新实现的功能 过度滚动历史导航 从而导致跳回 到 历史 1 为了防止这种情况 我必须打电话 preventDefault on touchstart
  • 设置双指缩放时精确的滚动位置

    我正在创建一个地图应用程序 它将标记图像放置在画布上并滚动到它 我正在使用浏览器的捏缩放和滚动来放大 缩小地图 然而 我注意到有一些奇怪的行为 我想知道如何解决它 这有点难以解释 但我们开始吧 假设您处于网页的标准缩放级别 无法进一步缩小
  • jQuery输入文件点击方法和IE上拒绝访问

    我尝试仅使用一个按钮作为输入文件 它在 Firefox Chrome Safari 中工作正常 但在 IE 中不行 提交表单时我总是收到 访问被拒绝 的消息 代码 input file click 有真正的解决方法吗 我在谷歌上浪费了大约2
  • JavaScript 将键添加到数组中的每个值

    我下面有这个数组 它由一个简单的数组组成 我想要完成的是放一把钥匙id在每个数组值前面以实现类似的效果 id a id b id c id d 有没有一种简单的方法可以做到这一点 任何帮助将不胜感激 谢谢 var test a b c d
  • 检索 css3 缩放元素的宽度/高度

    我正在与 offsetWidth 属性的奇怪之处 我认为 作斗争 这是场景 比方说 我有一个span标签 在我的js中 在某个时刻我执行css3转换 对于这个元素 例如 el set styles transform scale scale
  • 全局传递 xhr onload 函数的值

    在我正在创建的应用程序中 我有以下 XMLHttpRequest 并且我正在尝试传递结果data在 的里面xhr onload 到在同一父函数中创建的数组中 var url http api soundcloud com resolve j
  • ES6继承:使用`super`访问父类的属性

    JavaScript 的super关键字 当我在 Chrome Babel TypeScript 上运行代码时 得到了不同的结果 我的问题是哪个结果是正确的 规范的哪一部分定义了这种行为 下面的代码 class Point getX con
  • javascript 是否有等效的 __repr__ ?

    我最接近Python的东西repr这是 function User name password this name name this password password User prototype toString function r
  • 呃!尝试将包发布到 npm 时出现 403

    我正在尝试将包发布到 npm 您可以在此处查看存储库 https github com biowaffeln mdx state https github com biowaffeln mdx state 我登录到 npmnpm login
  • 类中可以有生成器 getter 吗?

    我的意思是吸气剂是发电机 我相信这一切都是 ES6 也许像这样 class a get count let i 10 while i yield i let b new a for const i of b count console lo
  • 如何在画布上所有其他内容后面绘制图像? [复制]

    这个问题在这里已经有答案了 我有一块画布 我想用drawImage在画布上当前内容后面绘制图像 由于画布上已经有内容 我正在使用字面上的画布来创建包含图像的画布 因此我无法真正先绘制图像 所以我无法使用drawImage在我呈现其余内容之前
  • Service Worker 与 Shared Worker

    Service Worker 和 Shared Worker 有什么区别 我什么时候应该使用 Service Worker 而不是 Shared Worker 反之亦然 Service Worker 具有共享 Worker 之外的附加功能
  • 摩纳哥:如何添加内联自动完成/代码建议?

    我找不到任何有关如何添加内联自动完成功能的示例 如下图所示 有人可以指导我如何在摩纳哥做到这一点吗 这可以在 v1 66 中启用 现在在 Insiders 中 The editor quickSuggestions设置现在接受内联为 配置值
  • 使用 ref 触发反应 dropzone 不起作用

    我正在实现这个库 https github com felixrieseberg React Dropzone Component https github com felixrieseberg React Dropzone Compone
  • 以角度访问窗口 TemplateUrl 内的范围

    我的模式有一个 windowTemplateUrl 如下 div class modal fade div class modal dialog div class modal content square btn div div div
  • 将文本叠加在图像背景上并转换为 PDF

    使用 NET 我想以编程方式创建一个 PDF 它仅包含一个背景图像 其上有两个具有不同字体和位置的标签 我已阅读过有关现有 PDF 库的信息 但不知道 如果适用 哪一个对于如此简单的任务来说最简单 有人愿意指导我吗 P D 我不想使用生成的

随机推荐

  • 如何左对齐 pandas `to_string()` 中的列值?

    我想将 pandas 数据框保存到文件中to string 但想要左对齐列值 和to string justify left 只有列标签左对齐 例如与 pd DataFrame col1 123 1234 col2 1 444441234
  • WooCommerce:检查产品是否缺货且不允许缺货

    如何检查产品是否缺货 库存数量为 0 并且不允许延期交货 由于某种原因 以下代码不起作用 add action woocommerce before add to cart button show stock single function
  • 如何将元数据添加到 Firebase 身份验证

    我需要在使用 firebase 身份验证的 google 登录期间传递自定义值 device id 随后通过侦听身份验证事件触发器从云函数获取该值 然后将该值添加到 Firestore 据我所知 您可以将值作为 http 触发器的查询参数传
  • Microsoft Edge 中的像素化图像缩小尺寸

    我最近为我的网站制作了一个分辨率为 400x400 的徽标 在我测试过的任何其他浏览器中 它可以缩小到 40x40 但在 Edge 中表现得很奇怪 每次刷新页面时 它都会在瞬间正确呈现 然后在页面完成加载后变为丑陋的像素化外观 页面完全加载
  • 如何使用 matplotlib 自定义甘特图并在图表上显示指示当前时间的垂直线?

    这是我的 Python 代码 它基本上绘制了甘特图 import pandas as pd import random from datetime import datetime import matplotlib dates as mda
  • 使用 Swift 结构和 id 时,SwiftUI 让 ScrollViewReader 滚动

    我有几个简单的 Swift UI 屏幕 全部运行在一个结构中 该结构定义了小部件的视图 名称及其进入的顺序 我试图创建一个水平列表 其中每个按钮在按下时都会在滚动视图中居中 这就是我想做的 我遇到的问题是我无法让 ScrollViewRea
  • Mac 上的 Podman 在运行 podman machine init 时抛出错误

    使用brew安装了podman brew install podman 尝试使用启动VMpodman machine init但收到以下错误 Extracting compressed file Error cannot overwrite
  • Liferay 日志记录级别

    有没有办法设置Liferay的global日志记录级别 我知道它是服务器管理中的控制台 但我想将全局级别设置为包级别 Thanks 由于 log4j 的配置方式 任何全局设置都可以被包级别设置覆盖 您可以删除任何配置单独的包 如果有 然后设
  • 从文件上传读取 url 时图像自动旋转(当它是大图像时)?

    下面这段代码 function readURL input if input files input files 0 var reader new FileReader reader onload function e img attr s
  • ASP.Net @符号

    我正在尝试遵循 ASP Net 的一些教程 但在我的一生中 我只是不明白 当符号位于变量之前时 它会执行此操作 我认为这只是会话变量或 request form 的快捷方式 但我在几个地方尝试过 但没有任何运气 当我将它随机放在某个地方时
  • IntelliJ、Java 格式化:强制空块位于一行

    是否可以告诉 IntelliJ 在格式化 Java 文件时将空块放在一行上 我想要这个 Override public void onClickPositive int tag Object payload 自动变成这样 Override
  • 添加/删除视觉/逻辑子项时收到通知

    我目前正在寻找一种在将孩子添加到视觉或逻辑孩子中时收到通知的方法 我知道 Visual OnVisualChildrenChanged 方法 但它不适用于我 因为我不能总是继承和重写此函数 我正在寻找一个活动 那么 有没有办法在添加子项时通
  • 删除/隐藏 Total_sales WooCommerce 自定义字段

    有没有办法去除total sales显示时自定义字段the meta对于一个产品 我可以将编辑器中的条目更改为其他名称和值 但它会神奇地再次出现并且不会被删除 我会为此使用 the meta key 过滤器 您有几种选择 当然您可以将它们组
  • 检查变量是否在 SASS 中定义

    正如标题所说 我正在尝试检查 SASS 中是否定义了变量 如果这有什么不同的话 我正在使用指南针 我发现 Ruby 的等价物是 defined foo 在黑暗中尝试了一下 但它只是给了我错误 defined expected was 我找到
  • 调整 tiff 大小并保持透明度和 c#

    我正在尝试调整 RGB 8 位 Tif 的大小并保持其在 c 中的透明度 我尝试过以下代码 using Image thumbnail new Bitmap 1500 1500 using Bitmap source new Bitmap
  • PHP 对象父/子递归

    我有一个父子面向对象关系 父对象有许多子对象 每个子对象都通过引用知道它的父对象 父母也可以是孩子 基本上它是一棵树 当我做一个var dump 在根对象上它说 父 gt 递归很多次 生成的描述会很长 我想知道我是否做错了什么 如果是 我对
  • 如何使用反射通过字符串名称调用API?

    如何通过字符串名称调用另一个AppService中的API 示例 我在 MyAppService 中有一个 API 如下所示 public class MyAppService MyAppServiceBase IMyAppService
  • R、dplyr:n_distinct的累积版本

    我有一个数据框如下 它是按列排序的time Input df data frame time 1 20 grp sort rep 1 5 4 var1 rep c A B 10 head df 10 time grp var1 1 1 1
  • 如何在 C++ 中将 std::thread::id 转换为字符串?

    如何打字std thread id在C 中字符串 我正在尝试对由生成的输出进行类型转换std this thread get id 到字符串或字符数组 auto myid this thread get id stringstream ss
  • 从服务器加载 pdf 并嵌入到 Vue 应用程序中

    我有一个返回 pdf 文件的 api 我试图在 vue js 中显示它 并发现 vue pdf 组件看起来应该可以完成这项工作 这是github上的项目 https github com FranckFreiburger vue pdf 我