使用iframe显示base64编码的PDF文件不起作用

时间:2017-11-22 11:28:54

标签: javascript angular pdf iframe ionic3

我构建了一个Ionic 3应用程序,我必须从base 64显示一些pdf文件。

我尝试使用这样做,但我显示的iframe为空,我在控制台中发出此警告:

Resource interpreted as Document but transferred with MIME type application/pdf: "data:application/pdf;base64,<base64>"

有我的HTML代码:

<iframe [src]="ptools.dms.bypassSecurityTrustResourceUrl(content)" type="application/pdf"></iframe>

我的iframe完全是白色的。我需要做些什么才能解决这个问题?

3 个答案:

答案 0 :(得分:2)

我有一个类似角度的问题,我从未使用过Ionic,但我最终解决的问题是

HTML

<iframe #ManualFrame frameborder="0" allowfullscreen>
</iframe>

TS

    export class OpenSupportedFileComponent implements OnInit {
      @ViewChild('ManualFrame') documentElement: ElementRef;

      constructor(
        ) { }

      ngOnInit() { 
        this.documentElement.nativeElement.setAttribute("height", "100%");
        this.documentElement.nativeElement.setAttribute("width", "100%");
        this.documentElement.nativeElement.setAttribute("src", Base64StringWithMime);
      }
    }

如果我没记错,当我在模板上设置值

时,它不起作用

答案 1 :(得分:1)

我只想使用Angular 6扔掉最后对我有用的东西。我已经为此奋斗了一天半,所以尽管我会让我这样的其他人省些头痛。由于存在跨站点起源的问题,因此对“ src”属性进行了很多打击。希望这对某人有帮助!

HTML

<span *ngIf="patient">
    <object *ngFor="let labRes of patient.labResult" [data]="domSanitize(labRes.src)" type="{{labRes.filetype}}" name="{{labRes.name}}" height="100%" width="100%"></object>
</span>

TS / JS

import { DomSanitizer } from '@angular/platform-browser';
...
domSanitize(src) {
    return this.domSanitizer.bypassSecurityTrustResourceUrl(src)
}

答案 2 :(得分:0)

iFrame使用浏览器功能来显示其内容。与大多数浏览器的桌面版本不同,移动浏览器不具有显示pdf文件的功能。因此,您将需要特定的应用程序或组件才能在移动设备中显示PDF文件。我使用了https://pdfviewer.net/,它解决了这个问题。