当前位置: 首页 > 知识库问答 >
问题:

在我的react项目中使用Rest API(发送到文件)导出到PDF是空白的PDF

彭星津
2023-03-14

API返回的PDF数据示例类似-

下面是我用来下载PDF的JavaScript代码,我尝试了很多解决方案,但都不起作用。

const reportPdfDoc = await axiosBIInstance.get(
            `https://api.powerbi.com/v1.0/myorg/reports/${config.reportId}/exports/${exportID?.data?.id}/file`,
            {
              headers: {
                Authorization: 'Bearer ' + accessToken,
                responseType: 'arraybuffer',// I've used blob as well, but same result
              },
            },
          );
          if (reportPdfDoc?.status === 200) {
            const blob = new Blob([reportPdfDoc.data], {
              type: 'application/pdf',
            });
            
         
            const computedFileName = `${exportStatus?.data?.reportName}.pdf`;
            const a = document.createElement('a');
            a.href = window.URL.createObjectURL(blob);
            a.download = computedFileName;
            document.body.appendChild(a);
            a.click();
            document.body.removeChild(a);

共有1个答案

李甫
2023-03-14

我尝试了上面发布的解决方案,它对我有效。我在下面重新发布它。

我得到了一个问题,responseType属性应该在axios调用的header之外。比如-

const reportPdfDoc = await axiosBIInstance.get( https://api.powerbi.com/v1.0/myorg/reports/${config.reportId}/exports/${exportID?.data?.id}/file, { headers: { Authorization: 'Bearer ' + accessToken, }, responseType: 'blob', }, ); 
 类似资料:
  • 我想使用RESTTemplate将POST请求发送到RestAPI。当我执行下面的代码时,它给出了null响应。但是,我得到了http状态代码200 OK。我已经适当地添加了响应模型,所以模型没有问题。甚至,当我将响应类型更改为String时,它也不给我响应。有什么建议吗?

  • 将多个项目发送到paypal rest api的正确方式是什么?我已经阅读了文档和示例,据我所知: 申报交易 - 声明新项目列表 循环订单 - - 结束循环 添加项目到项目列表 添加项目列表到交易 添加到事务 这是我一直在玩的代码,以使这项工作,但我得到了通常的贝宝重定向错误,这是标准错误时,有些东西是不正确的付款。 我可以成功地发送一个单项使用金额和金额细节类,它只是添加多个项目,我正在努力。

  • 我试图下载一个pdf从它的URL使用requests.get方法,然后保存在本地桌面的变量名。 但是,运行大约需要2分钟,pdf文件会被保存,但acrobat阅读器无法读取。

  • 我需要将N个PDF文件合并成一个。我先创建一个空白文件 稍后,我将遍历html字符串数组 我不太明白PdfWriter和PDFCopy之间的区别。

  • 问题内容: 我有一条发送pdf文件的路线: 我尝试使用另一种解决方案,它们执行或多或少的相同功能: 和 我的问题是,当我在浏览器中询问此路由时,收到的空pdf文件的页面数与原始文件的页面数相同。 我使用配置了Express Server 。 有人可以帮助我吗? 问题答案: 在使用connect-livereload中间件时,我已经看到了这一点。问题在于connect- livereload正在将j

  • 我将pdf文档存储在服务器端的文件系统中。 我需要让用户下载其中一个,当他/她点击下载。 问题是我知道如何将文件从NodeJS发送到浏览器,但这里的请求将由ReactJS axios请求发出。因此,当我发送文件时,响应将转到react。如何将该pdf文件发送给用户?我是否使用前端代码直接访问文件系统? 在NodeJS中执行之后,当我记录响应时,我在浏览器控制台中获得以下信息 我如何处理这个问题,以