我正在使用Angular2。我从后端API获取PDF响应作为BLOB。 PDF在iframe中显示正常,但它显示标题为“匿名”。有人可以指导吗?
html代码:
<iframe id="showPDFIframe" allowtransparency="false" title="TestPDF" width="100%" height="800" [attr.src]="dataLocalUrl" type="application/pdf"></iframe>
pdf.component.ts
pdfDownload: any;
protected dataLocalUrl: SafeResourceUrl;
ngOnInit() {
this.requestOptions = this.createRequestOptions();
this.requestOptions.responseType = ResponseContentType.Blob;
this._pdfModelService.showPDF(this.requestOptions)
.subscribe( (res) => {
this.pdfDownload = res;
this.dataLocalUrl = this.domSanitizer.bypassSecurityTrustResourceUrl(window.URL.createObjectURL(res));
}, err => {
console.log(err);
})
}
pdfModelService.ts
showPDF(options?: RequestOptions): any {
return this._http.get(this.endpoints.showPDF.uri, options)
.map( (res) => {
return new Blob([res], { type: 'application/pdf' })
});
}
注意:后端API给出了我们在BLOB中投射的字节。
答案 0 :(得分:5)
您是否尝试在选项中提供标题:
showPDF(options?: RequestOptions): any {
return this._http.get(this.endpoints.showPDF.uri, options)
.map( (res) => {
return new Blob([res], { type: 'application/pdf', title: 'testpdf' })
});
}
答案 1 :(得分:2)
虽然我不确定为什么指定的标题字段&#34; TestPDF&#34;在代码中没有出现在页面上,&#34;(匿名)&#34;显示的值可能只是从PDF文件本身中提取元数据。一种可能的解决方案是检查PDF文档属性中的标题字段以在那里设置标题。在Adobe Acrobat中,从文件菜单中选择Properties&gt;检查/更新标题字段的说明。
来自W3.org的参考文章:https://www.w3.org/TR/WCAG20-TECHS/PDF18.html