角度打印

时间:2018-09-10 16:12:05

标签: angular printing

感谢您在这里停留。

downloadHandler(id) {
        // this.isResultsLoading = true;
        this.invoiceService.downloadInvoice(id).subscribe(
            (data) => {
                console.log(data);
                saveAs(data, this.invoice.item);
                // saveAs(data, this.invoice.item);
            },
            (err) => {
                console.error(err);
                //this.errorHandler(err, 'Error while downloading invoice');
            }
        );
    }

我使用此功能进行下载,效果很好, 现在,我可以下载文件,然后打印。 我的问题是:我需要查看文件才能打印而无需下载。

非常感谢

1 个答案:

答案 0 :(得分:0)

第1步:获取内容。

this._http.get('http://localhost:4200/')

将响应设为arrayBuffer或将blob设为josn;

this._http.get('http://localhost:4200/', { responseType: 'arraybuffer' }).
          or
this._http.get('some api end point', { responseType: 'blob' as 'json' }).

第2步:创建blob对象

const myBlobPart: BlobPart = <BlobPart>res;
const file = new Blob([myBlobPart], { type: 'your media type' });
// media type can be : text/csv, application/pdf, text/plain etc.

第3步:创建指向blob对象的网址。

    const fileURL = URL.createObjectURL(file);

第4步:打开网址

    window.open(fileURL);

因此完整的解决方案将是这样的:

this._http.get('some api endpoint', { responseType: 'blob' as 'json'}).subscribe(res => {
    const myBlobPart: BlobPart = <BlobPart>res;
    const file = new Blob([myBlobPart], { type: 'your media type' });
    const fileURL = URL.createObjectURL(file);
    console.log(fileURL);
    window.open(fileURL);
    this.url = fileURL;
});