2016-05-26 18 views
2

Ich habe einige PDF-Dateien, die ich in einer Aurelia-Ansicht anzeigen muss. Die Dateien sind nicht durch direkte Verbindung verfügbar Ich habe eine API-Funktion, die ein Byte-Array zurückgibt.PDF-Inhalt in einer Aurelia-Ansicht anzeigen

In ASP.Net habe ich einige Kontrolle über die Header und den Inhaltstyp des Antwortobjekts, und binaryWrite den Inhalt in die Antwort.

Ich kann nicht herausfinden, wie man das in Aurelia macht. Irgendwelche Vorschläge?

Bearbeiten: Ich versuche, pdf.js wie vorgeschlagen zu verwenden. Injektion in Aurelia schlägt fehl.

import {inject} from "aurelia-framework"; 
import {HttpClient} from "aurelia-fetch-client"; 
import {PDF} from "pdfjs-dist" 

@inject(Router, HttpClient, PDF) 
export class PDFView { 

    constructor(router, http, pdf) { 

     this.router = router; 
     this.http = http; 
     this.pdf = pdf; 

    } 

Die Konsole zeigt diesen Fehler:

Inner Error: 
Message: key/value cannot be null or undefined. Are you trying to inject/register something that doesn't exist with DI? 
Inner Error Stack: 
Error: key/value cannot be null or undefined. Are you trying to inject/register something that doesn't exist with DI? 
    at Container.get (http://localhost:65397/jspm_packages/npm/[email protected]/aurelia-dependency-injection.js:480:15) 
    at Object.invoke (http://localhost:65397/jspm_packages/npm/[email protected]/aurelia-dependency-injection.js:341:81) 
    at InvocationHandler.invoke (http://localhost:65397/jspm_packages/npm/[email protected]/aurelia-dependency-injection.js:300:168) 
    at Container.invoke (http://localhost:65397/jspm_packages/npm/[email protected]/aurelia-dependency-injection.js:564:25) 
    at StrategyResolver.get (http://localhost:65397/jspm_packages/npm/[email protected]/aurelia-dependency-injection.js:127:37) 
    at Container.get (http://localhost:65397/jspm_packages/npm/[email protected]/aurelia-dependency-injection.js:501:23) 
    at eval (http://localhost:65397/jspm_packages/npm/[email protected]/aurelia-templating.js:3925:73) 
End Inner Error Stack 
------------------------------------------------ 

Die Import-Anweisung sein muss, andernfalls, noch pdfjs scheint erfolgreich zu laden, wie ich Status erhalten 200 für beide [email protected] und pdfjs, wenn die Seite geladen wird.

Ich kann keine Beispiele von Aurelia/pdfjs apps finden. Wiederholung: Ich muss den Stream einbetten, da die PDF nicht über HTTP verfügbar ist.

Ich bin mir nicht sicher, wo von hier

+0

Ich bin auch bemüht, irgendwelche Beispiele zu finden. Hast du jemals ein richtiges Beispiel gefunden? – DeVil

Antwort

1

Wie weit gehen, wie ich weiß, gibt es nichts Aurelia spezifisches über das Laden von PDF-Dateien.

Sie können pdf.js verwenden. Es hat Methode getDocument, die in Byte-Array gespeicherte Binärdaten akzeptiert.

Dann können Sie eine Zeichenfläche in Ihre Ansicht einfügen, PDF-Daten während der Ansichtsaktivierung laden und Seiten mit pdf.js rendern, nachdem html angehängt wurde. Zum Beispiel Code-Check-Antwort von toddmo für diesen Beitrag: Pdf.js and viewer.js. Pass a stream or blob to the viewer