Angular base64转换为pdf返回#Blocked

问题描述 投票:0回答:1

将我从java服务响应返回的base64流数据转换为在我的角度应用程序上以PDF格式下载,使用atob()解码然后将其添加到下载函数。转换发生正确,但在下载时会发生一些错误,实习生返回一个#blocked空白屏幕,下面附有图片。这也是我对同一功能的代码的一部分,可以提前请求可能出现问题的帮助

onSubmitPropPreviewPDF() {
        console.log(this.propNo)
        let formValueProp: any = {
            trans_code: this.propNo.data.trans_code,
        }
        this.policyService.propPreviewPDF(formValueProp)
            .pipe()
            .subscribe(previewdata => {
                this.previewdata = previewdata,
                    console.log('previewdata: ', previewdata);
                console.log(atob(this.previewdata.data.pdf_ccnt));
                const linkSource = (atob(this.previewdata.data.pdf_ccnt));
                console.log(linkSource);
                const downloadLink = document.createElement("a");
                console.log(downloadLink);
                const fileName = "sample.pdf";
                downloadLink.href = linkSource;
                console.log(linkSource);
                downloadLink.download = fileName;
                console.log(linkSource);
                console.log(downloadLink);

                downloadLink.click();

                (error: any) => this.errorMessage = <any>error


            }
            )
    }

Blocked image

download angular6 pdf-generation decode
1个回答
0
投票

基于Chromium commit

将#blocked后缀添加到about:从FilterURL输出的空白URL。

RenderProcessHost :: FilterURL执行一些安全检查,检查来自渲染器进程的URL是否有效。在某些情况下,它会将URL重写为about:blank,以避免提交对渲染器进程无效的URL。

此CL将一个#blocked引用片段添加到URL,因此更容易发现此逻辑何时生效并将其与常规导航区分为:空白URL。

您的sample.pdf是否在包含<embed><a>以及base64数据网址的简单html页面中正确显示?

尝试将sample.pdf转换为base64并在测试页面上显示它以验证它是否格式良好:

<embed  type="application/pdf" src="data:application/pdf;base64,xxx_your_base64_pdf_xxx"/>

或者尝试通过右键单击下载链接下载它:

<a href="data:application/pdf;base64,xxx_your_base64_pdf_xxx">download</a>

如果您的PDF格式正确,您还可以使用像FileSaver.js这样的库来继续下载步骤。

© www.soinside.com 2019 - 2024. All rights reserved.