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

如何在angular 7下载PDF?

何飞翰
2023-03-14
    getRevenueReport() {

        const revenueReport = {
              dateFrom: '1/04/2019',
              dateTo: '23/04/2019',
       };

        this.apiService.getRevenueReport(revenueReport).subscribe( response => {
              console.log('response: ', response);
              const mediaType = 'application/pdf';

              const blob = new Blob(response, { type: mediaType });

              saveAs(blob, 'revenue.pdf');

            }, error => {
              console.log('error: ', error);
            });
    }
    getRevenueReport(revenueReport): any {
        const options = {
          headers: new HttpHeaders({
            'Content-Type': 'application/json',
            Accept: '*/*',
            Authorization: 'apiKey 8989jjjhjhgghghg765756',
          })
        };
        return this.http.post(this.BASE_API_URL + '/api/report', revenueReport, options);
      }

Error:SyntaxError:在JSON中,在XMLHttpRequest.onload Oketask(http://localhost:4200/polyfills.js:2780:60)在zone.push../node_modules/zone.js/dist/zone.js.zone.runtask(http://localhost:4200/polyfills.js:2553:47)在zonetask.push../node_modules/zone.js/dist/zone.js.zonetask.js.zonetask.invokeTask[as ZoneAwaRecallBack(http://localhost:4200/polyfills.js:4139:21)消息:“JSON at position 0中的意外令牌%”Stack:“SyntaxError:JSON at position 0中的意外令牌%在XMLHttpRequest.on在zoneDelegate.push../node_modules/zone.js/dist/zone.js.zoneDelegate.invokeTask(http://localhost:4200/polyfills.js:2781:31)在object.oninvoketask(http://localhost:4200/vendor.js:59081:33)在zoneDelegate.push../node_modules/zone.js/dist/zone.zoneDelegate.invokeTask one.push../node_modules/zone.js/dist/zone.js.zone.runtask(http://localhost:4200/polyfills.js:2553:47)在zonetask.push../node_modules/zone.js/dist/zone.js.zonetask.invokeTask[as invoke](http://localhost:4200/polyfills.js:2856:34)在invokeTask(http://localhost:4200/polyfills.js:4102:14)在9:21)“Proto:错误文本:”%PDF-1.5%3 0 obj<

共有1个答案

充栋
2023-03-14

重要-在请求头中,将响应类型添加到'ArrayBuffer'中作为'JSON',否则它将不起作用

fetchPDF(url: string,data): Observable<any> {
this.getCredentials();
const authHeaders = this.createBasicAuthorizationHeader(this.credentials);
 return this.http.post(this.getApiUrl(url),data,{headers: authHeaders,'responseType'  : 'arraybuffer' as 'json'})
 }



exportPDF(){
this.httpRestClient.fetchPDF("download_salary_report", revenueReport ).subscribe(
  response => {
    var blob = new Blob([response], {type: 'application/pdf'});
    var ua = window.navigator.userAgent;
    var msie = ua.indexOf('MSIE');
    var trident = ua.indexOf('Trident/');
    var edge = ua.indexOf('Edge/');

  if(msie > 0 || trident > 0 || edge > 0){
    window.navigator.msSaveOrOpenBlob(blob,'revenue.pdf');
}
else if(navigator.userAgent.toLowerCase().indexOf('firefox') > -1){
    var link = document.createElement('a');
    link.href = URL.createObjectURL(blob);
    link.download = "revenue.pdf";
    document.body.appendChild(link);
    link.click();

    window.setTimeout(function() {
      URL.revokeObjectURL(link.href);
      document.body.removeChild(link);
    }, 0);

}
  else{ 

  var link=document.createElement('a');
  link.href=window.URL.createObjectURL(blob);
  link.download="revenue.pdf";
  link.click();


  }

    },
  error=>{
  // show your error message here

  });


 }

或者您可以像这样使用get请求。

 window.open(appConfig.DOMAIN_NAME+"export_report_item_consumption/"+(itemName+ "," +this.datepipe.transform(this.payloadBean.fromDate, 'yyyy-MM-dd')
   + "," +this.datepipe.transform(this.payloadBean.toDate, 'yyyy-MM-dd')+","+this.currentuser.userID).toString(),'_blank' , "");

只需在URL后面追加变量即可。

 类似资料:
  • 我正在实现一个ASP api来完成所有Docusign api流(获取登录信息,获取令牌,发送要签名的信封,下载信封文档)。现在我试图在浏览器中显示一个下载的文档,该文档是空白的。我正在从docusign接收文档字节内容,并试图将其呈现在iframe中。 docusign发送的PDF内容如下 更新 如果文档超过1页,则可以看到所有页面,全部为空白······

  • 到目前为止,我运行的是一台视窗8.1电脑,它没有像Android Studio或Eclipse这样的IDE的存储或内存。我想下载Android SDK工具,没有IDE。如何才能做到这一点?

  • 我想尝试下载图像点击按钮,但是当我点击按钮,所以不是下载图像,而是直接打开图像,但我想做下载图像,所以如何在reactjs下载图像?

  • 大家好,我是android开发的新手,我想在我的应用程序webView中下载一个pdf文件,我使用下面的代码,但是当我尝试打开它时,应用程序将我重定向到my phone web浏览器,我该如何解决它,我该如何在我的webView中下载pdf文件

  • (三)如何下载轻推? 1)Android用户可以在手机中的应用市场中搜索“轻推”进行下载; 2)iPhone用户可以在“APP Store”里搜索“轻推”进行下载; 3)或者登录www.qingtui.com官网,点击上方的“下载”图标。或者可以直接扫描下方的二维码下载。 选择“Android版”、“iOS版”、“Windows版”、“Mac版”、“网页版”、“iPad版”。 注:网页版轻推不支持

  • mycat 1.6在哪里可以下载? 我已经在http://www.mycat.org.cn/mycat1.html,http://dl.mycat.org.cn/1.6.7.6/ 找资源了,但是都打不开,我用的移动的网