Pdf.js: Ausführen von pdf.js mit Elektron

Erstellt am 30. März 2016  ·  4Kommentare  ·  Quelle: mozilla/pdf.js

Hallo,
Ich versuche, die pdf.js-Bibliothek in die Electron-App zu integrieren. Der Hauptgrund dafür ist, einen PDF-Viewer in der App zu haben und das Dokument auszudrucken.

Zunächst habe ich versucht, die Bibliothek auf zwei Arten zu integrieren:

  1. Klonen von pdf.js in einem separaten Verzeichnis und Ausführen von _gulp generisch_ und was auch immer ich im Build-Verzeichnis habe, habe ich in das src-Verzeichnis in meinem Projekt kopiert.
  2. Indem Sie das Knotenmodul von hier aus in mein Projekt einbinden: https://www.npmjs.com/package/pdfjs-dist-for-node

Ich habe folgende Fragen:

  • Nach der ersten Route kann ich die PDF-Datei (ohne die Viewer-Steuerelemente) im Canvas auf meiner HTML-Seite durch diesen Code anzeigen (im Wesentlichen rendern):

</div> <canvas id="theCanvas"></canvas> <div>

     PDFJS.getDocument(pdfPath).then(function getPdfHelloWorld(pdf) {
            pdf.getPage(1).then(function getPageHelloWorld(page) {
              var scale = 1.5;
              var viewport = page.getViewport(scale);

              var canvas = document.getElementById('theCanvas');
              var context = canvas.getContext('2d');
              canvas.height = viewport.height;
              canvas.width = viewport.width;

              var renderContext = {
                canvasContext: context,
                viewport: viewport
              };
              page.render(renderContext);
            });
          });

Dies ist jedoch nur ein Teil von dem, was ich will. Ich möchte die Viewer-Steuerelemente wie in viewer.html. Also habe ich versucht, ein neues Fenster mit direkt viewer.html wie folgt zu öffnen:

var pdfPath = __dirname + '/pdfs/trial.pdf'; mainWindow.loadURL('file://' + __dirname + '/generic/web/viewer.html?file=' + pdfPath);

Ich konnte den Viewer sehen, aber beim Laden der PDF-Datei wird dieser Fehler in der Konsole ausgegeben:

Uncaught (versprochen) TypeError: PDFJS.getDocument ist keine Funktion
at Object.pdfViewOpen as open
at webViewerInitialized (file:///.../src/generic/web/viewer.js:7686:26)

Ich kann nicht nachvollziehen, was ich hier falsch mache. Ist das der empfohlene Weg? Wenn ich den gesamten Viewer in eine Leinwand oder einen Iframe einbetten möchte, wie kann ich das tun? Es wäre schön, eine API-Liste im Projekt zu haben, um bestimmte allgemeine Aufgaben wie das, was ich versuche, zu erledigen. Sorry, falls es schon da ist und ich es nicht finden kann.

  • Nach dem zweiten Weg konnte ich das Knotenmodul einbinden; Aber die Sorge, die ich hier habe, ist, dass es nicht oft aktualisiert wird, wenn dieses Projekt aktualisiert wird. Die letzte Veröffentlichung war vor einem Jahr. Und da war wieder keine API. Also habe ich den Plan vorerst fallen lassen.

Wäre sehr dankbar, wenn mir hier jemand weiterhelfen könnte.

Danke im Voraus...

Aufbau:

  • Webbrowser und seine Version: Electron
  • Betriebssystem und seine Version: OSX 10.10.5
  • PDF.js-Version: 0.8.0
1-other

Hilfreichster Kommentar

siehe pdf.js-Datei oder PDFJS.version-Eigenschaft

Es sagt Version:1.4.174

Außerdem habe ich das Problem erkannt. Ich habe das richtige Zeug aus dem generischen Verzeichnis kopiert; wenn ich jedoch ein Fenster mit der URL viewer.html öffne; die Fenstereigenschaft sollte folgendes haben:

webPreferences: { nodeIntegration: false }

Und es kann jetzt gut geladen werden.

Danke für deine Hilfe Yury!

Alle 4 Kommentare

PDF.js-Version: 0.8.0

Das ist eine wirklich alte Version. Bereits vorgefertigte Versionen von unseren Releases (oder gulp generic eine) funktionieren gut, mit der Ausnahme, dass Sie pdf selbst in Uint8Array laden können.

PDFJS.getDocument ist keine Funktion

Dies weist darauf hin, dass die PDF.js-Kernbibliothek ('./build/pdf.js'-Datei) nicht geladen wurde.

die package.json zeigt immer noch 0.8.0 an.

package.json enthält nicht die erstellte Bibliotheksversion, siehe pdf.js-Datei oder PDFJS.version-Eigenschaft für die richtige Versionsnummer.

Können Sie mir bitte Bescheid geben, wenn ich auf den falschen zeige?

Beide müssen identisch sein. Sie müssen den gesamten Ordner "generic/" verwenden, damit Sie pdf.js an der richtigen Stelle haben.

siehe pdf.js-Datei oder PDFJS.version-Eigenschaft

Es sagt Version:1.4.174

Außerdem habe ich das Problem erkannt. Ich habe das richtige Zeug aus dem generischen Verzeichnis kopiert; wenn ich jedoch ein Fenster mit der URL viewer.html öffne; die Fenstereigenschaft sollte folgendes haben:

webPreferences: { nodeIntegration: false }

Und es kann jetzt gut geladen werden.

Danke für deine Hilfe Yury!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen