Pdf.js: Exécuter pdf.js avec des électrons

Créé le 30 mars 2016  ·  4Commentaires  ·  Source: mozilla/pdf.js

Bonjour,
J'essaie d'intégrer la bibliothèque pdf.js à l'application électronique. La principale raison derrière cela est d'avoir une visionneuse de pdf dans l'application et d'imprimer le document.

Tout d'abord, j'ai essayé d'intégrer la bibliothèque de deux manières :

  1. Clonage de pdf.js dans un répertoire séparé et exécution de _gulp generic_ et de tout ce que j'ai obtenu dans le répertoire de construction, j'ai copié dans le répertoire src de mon projet.
  2. En incluant le module node dans mon projet à partir d'ici : https://www.npmjs.com/package/pdfjs-dist-for-node

J'ai les questions suivantes :

  • En suivant le premier itinéraire, je suis capable d'afficher (en gros) le fichier pdf (sans les contrôles de la visionneuse) dans le canevas de ma page html via ce code :

</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);
            });
          });

Cependant, ce n'est qu'une partie de ce que je veux. Je veux les contrôles de la visionneuse comme dans viewer.html. J'ai donc essayé d'ouvrir une nouvelle fenêtre avec directement viewer.html comme ceci :

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

J'ai pu voir la visionneuse, mais lors du chargement du fichier pdf, cette erreur s'affiche dans la console :

Uncaught (en promesse) TypeError: PDFJS.getDocument n'est pas une fonction
at Object.pdfViewOpen as open
sur webViewerInitialized (file:///.../src/generic/web/viewer.js:7686:26)

Je ne suis pas en mesure de comprendre ce que je fais mal ici. Est-ce la méthode recommandée? De plus, si je veux intégrer toute cette visionneuse dans un canevas ou un iframe, comment puis-je le faire ? Ce serait bien d'avoir une liste d'API dans le projet pour effectuer certaines tâches courantes comme ce que j'essaie. Désolé, s'il est déjà là et que je ne peux pas le trouver.

  • En suivant la deuxième route, j'ai pu inclure le module de nœud ; mais le souci que j'ai ici est qu'il n'est pas mis à jour souvent car ce projet est mis à jour. La dernière sortie date d'il y a un an. Et il n'y avait plus d'API là-bas. Donc, j'ai abandonné le plan pour le moment.

Ce serait grandement apprécié si quelqu'un pouvait m'aider ici.

Merci d'avance...

Configuration:

  • Navigateur Web et sa version : Electron
  • Système d'exploitation et sa version : OSX 10.10.5
  • Version PDF.js : 0.8.0
1-other

Commentaire le plus utile

voir le fichier pdf.js ou la propriété PDFJS.version

Il indique la version : 1.4.174

Aussi, j'ai compris le problème. J'ai copié les bons éléments du répertoire générique ; cependant, lorsque j'ouvre une fenêtre avec l'url viewer.html; la propriété window devrait avoir ceci :

webPreferences: { nodeIntegration: false }

Et il est capable de se charger correctement maintenant.

Merci pour votre aide Yury !

Tous les 4 commentaires

Version PDF.js : 0.8.0

C'est vraiment une ancienne version. La version déjà pré-construite de nos versions (ou gulp generic one) fonctionnera correctement, à l'exception du fait que vous pouvez charger vous-même le pdf dans Uint8Array.

PDFJS.getDocument n'est pas une fonction

Cela indique que la bibliothèque principale PDF.js (fichier './build/pdf.js') n'a pas été chargée.

le package.json affiche toujours 0.8.0.

package.json ne contient pas la version de la bibliothèque construite, voir le fichier pdf.js ou la propriété PDFJS.version pour le bon numéro de version.

Pouvez-vous s'il vous plaît me dire si je pointe vers le mauvais?

Les deux doivent être identiques. Vous devez utiliser l'intégralité du dossier "generic/", vous aurez donc pdf.js au bon endroit.

voir le fichier pdf.js ou la propriété PDFJS.version

Il indique la version : 1.4.174

Aussi, j'ai compris le problème. J'ai copié les bons éléments du répertoire générique ; cependant, lorsque j'ouvre une fenêtre avec l'url viewer.html; la propriété window devrait avoir ceci :

webPreferences: { nodeIntegration: false }

Et il est capable de se charger correctement maintenant.

Merci pour votre aide Yury !

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

timvandermeij picture timvandermeij  ·  4Commentaires

patelsumit5192 picture patelsumit5192  ·  3Commentaires

THausherr picture THausherr  ·  3Commentaires

anggikolo11 picture anggikolo11  ·  3Commentaires

aaronshaf picture aaronshaf  ·  3Commentaires