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 :
J'ai les questions suivantes :
</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.
Ce serait grandement apprécié si quelqu'un pouvait m'aider ici.
Merci d'avance...
Configuration:
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.
Merci pour votre réponse rapide Yury.
C'est vraiment une ancienne version.
Je ne sais pas comment j'ai obtenu cette ancienne version. Je n'ai rien fait de spécial que git clone git://github.com/mozilla/pdf.js.git
pour obtenir le projet. Cependant, si je vois ici, le package.json affiche toujours 0.8.0.
Une version déjà pré-construite à partir de nos versions (ou une version générique de gulp) fonctionnera correctement, à l'exception du fait que vous pouvez charger vous-même le pdf dans Uint8Array.
Parlez-vous de ce zip pré-construit? .
Cela indique que la bibliothèque principale PDF.js (fichier './build/pdf.js') n'a pas été chargée.
Après avoir fait gulp générique, j'ai obtenu pdf.js et pdf.worker.js à deux endroits. Un à l'extérieur du répertoire générique et un à l'intérieur du répertoire générique/build/. Je pointe actuellement vers l'extérieur. Pouvez-vous s'il vous plaît me dire si je pointe vers le mauvais?
Encore merci pour l'aide !
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 !
Commentaire le plus utile
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 !