vue3调用后端接口下载pdf文件

在Vue3项目中,通过后端接口以blob形式下载PDF时,遇到Oppo手机提示只能从HTTP或HTTPS下载的问题。目前的临时解决方案是,Android系统直接使用a标签下载,而iOS系统必须调用接口来触发下载,否则只会打开页面而不会下载。
摘要由CSDN通过智能技术生成

调用后端接口下载pdf文件

vue3项目以文件流blob形式下载pdf

//调用接口
export function getAppendixByName(data = {}, params) {
  return service({
    url: "",
    method: "get",
    responseType: 'blob',
    params: params,
    data,
  })
}
getAppendixByName(
      {},
      {
        resource: route.params.attachmentUrl,
      }
    ).then((res) => {
      const { data, headers } = res;
      let blob = new Blob([data], { type: headers["content-type"] });
      let url = window.URL.createObjectURL(blob);
      let link = document.createElement("a");
      link.href = url;
      link.style.display = "none";
      link.setAttribute(
        "download",
        route.params.attachmentUrl.substring(
          route.params.attachmentUrl.lastIndexOf("/") + 1
        )
      );
      document.body.appendChild(link);
      link.click();
      document.body.removeChild(link);
      window.URL.revokeObjectURL(url);
    });

出现的问题:oppo手机下载提示”只能从http或https网址下载“
暂时解决方法:安卓系统使用a标签下载,不走接口;ios系统需要调用接口进行下载,否则只是跳转页面,不会进行下载。

Vue 3中实现前端点击按钮调用后端接口获取数据,并将数据以PDF格式打印出来,可以分为几个步骤: 1. 创建一个按钮,并为其绑定点击事件处理函数。 2. 在点击事件处理函数中,使用Ajax或其他HTTP客户端(如axios)发起对后端接口的请求。 3. 接收后端返回的数据,并使用一个库(如jsPDF)来生成PDF文件。 4. 将生成的PDF文件提供给用户下载或直接打印。 下面是一个简单的示例代码: ```javascript <template> <button @click="fetchDataAndGeneratePDF">生成PDF</button> </template> <script> import axios from 'axios'; import jsPDF from 'jspdf'; export default { methods: { fetchDataAndGeneratePDF() { axios.get('/api/data') // 假设后端接口为/api/data .then(response => { const data = response.data; const pdf = new jsPDF(); // 这里假设data是一个包含必要信息的对象,可以根据需要生成PDF内容 pdf.text('标题', 10, 10); pdf.text(`内容: ${data.content}`, 10, 20); // 生成PDF后提供下载或打印选项 pdf.save('document.pdf'); // 或者 // window.open(pdf.output('bloburl')); }) .catch(error => { console.error('Error fetching data:', error); }); } } }; </script> ``` 在这个示例中,我们首先在模板中添加了一个按钮,并为其绑定了点击事件。当按钮被点击时,`fetchDataAndGeneratePDF`方法会被触发。这个方法通过axios发起GET请求到后端接口,并在成功获取数据后使用jsPDF库来生成PDF文件。最后,通过调用`pdf.save('document.pdf')`实现将PDF文件保存到用户本地,或者使用`window.open(pdf.output('bloburl'))`来在新窗口中打开PDF文档供用户打印。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值